Налаштування Serverless моніторингу (Lumigo / Datadog Serverless)
Стандартний моніторинг погано працює для serverless: немає постійно запущених процесів, екземпляри мінливі, cold start — унікальний тип затримки, немає прямого доступу до інфраструктури. Спеціалізовані інструменти заповнюють ці прогалини.
Проблеми стандартного моніторингу для Lambda
CloudWatch Metrics з коробки дає: Invocations, Errors, Duration, Throttles. Цього недостатньо:
- Немає розділення cold start vs warm start latency
- Немає трейсингу між функціями та downstream сервісами
- Немає видимості конкретних помилок з контекстом
- Немає кореляції між логами різних функцій одного запиту
Lumigo
Lumigo — платформа спостереження, орієнтована на serverless. Встановлення через Lambda Layer без змін коду:
resource "aws_lambda_function" "api" {
layers = [
"arn:aws:lambda:us-east-1:114300393969:layer:lumigo-python-tracer:latest"
]
environment {
variables = {
LUMIGO_TRACER_TOKEN = var.lumigo_token
LUMIGO_DEBUG = "false"
}
}
}
Для Python через декоратор (якщо потрібна кастомізація):
import lumigo_tracer
@lumigo_tracer.lumigo_tracer(token="your-token")
def handler(event, context):
# Автоматично трейсує HTTP, boto3, psycopg2 виклики
response = requests.get("https://api.external.com/data")
return process(response.json())
Що дає Lumigo:
- Автоматичний distributed tracing (Lambda → SQS → Lambda → DynamoDB)
- Timeline кожного invocation: ініціалізація, cold start, handler, downstream виклики
- Payload inspector: вхідні/вихідні дані кожного виклику
- Smart alerts: аномалії без ручного налаштування порогів
- Cost analysis: витрати за функціями, оцінка оптимізації пам'яті
Datadog Serverless
Ширша платформа зі специфічними для serverless можливостями:
# serverless.yml (Serverless Framework)
plugins:
- serverless-datadog-plugin
custom:
datadog:
apiKey: ${env:DD_API_KEY}
enableXrayTracing: true
enableDDTracing: true
enableMergedXrayTraces: true
captureLambdaPayload: true
logLevel: WARN
Або через Terraform з Lambda Layer:
resource "aws_lambda_function" "api" {
layers = [
"arn:aws:lambda:us-east-1:464622532012:layer:Datadog-Python312:latest"
]
environment {
variables = {
DD_API_KEY = var.datadog_api_key
DD_SITE = "datadoghq.com"
DD_ENHANCED_METRICS = "true"
DD_TRACE_ENABLED = "true"
DD_COLD_START_TRACING = "true"
}
}
}
Enhanced Lambda Metrics від Datadog: розбивка по cold/warm invocations, розрахункова вартість, out-of-memory события — поверх стандартних CloudWatch метрик.
Ключові метрики для Serverless моніторингу
Латентність breakdown:
- Тривалість cold start (p50, p95, p99)
- Час ініціалізації (handler setup)
- Тривалість handler
Надійність:
- Коефіцієнт помилок по функціях
- Коефіцієнт timeout
- Коефіцієнт throttle
- Паралельні виконання vs ліміт
Вартість:
- Споживання GB-seconds
- Кількість invocations
- Розрахункова місячна вартість
Distributed Tracing для Serverless
Коли Lambda → SQS → Lambda → RDS, трейс повинен проходити через усі сервіси:
# Перша Lambda: додати trace context до SQS повідомлення
from opentelemetry import trace
from opentelemetry.propagate import inject
def handler(event, context):
tracer = trace.get_tracer(__name__)
with tracer.start_as_current_span("process-order"):
# Inject trace context у SQS message attributes
headers = {}
inject(headers)
sqs.send_message(
QueueUrl=QUEUE_URL,
MessageBody=json.dumps({"orderId": "123"}),
MessageAttributes={
"trace_context": {
"StringValue": json.dumps(headers),
"DataType": "String"
}
}
)
Lumigo та Datadog роблять це автоматично для AWS SDK викликів.
Алерти для Serverless
# Datadog monitor через Terraform
resource "datadog_monitor" "lambda_error_rate" {
name = "Lambda High Error Rate"
type = "metric alert"
message = "Error rate на {{functionname.name}} > 5%. @pagerduty-oncall"
query = "sum(last_5m):sum:aws.lambda.errors{env:production} by {functionname}.as_rate() / sum:aws.lambda.invocations{env:production} by {functionname}.as_rate() > 0.05"
thresholds = {
critical = 0.05
warning = 0.02
}
}
Графік налаштування
- Lumigo (Layer + без змін коду) — 0.5-1 день
- Datadog Serverless (Layer + config) — 1-2 дні
- Користувацькі метрики + алерти — 1-2 дні
- Налаштування distributed tracing — 1-2 дні







