OpenTelemetry метрики
Тема дорожной карты · Observability
Метрики OpenTelemetry обеспечивают независимый от поставщика стандартизированный способ инструментирования и экспорта числовых измерений из приложений и инфраструктуры. Это позволяет разработчикам и операционным командам эффективно отслеживать и анализировать ключевые метрики производительности и работы системы. OpenTelemetry SDK предоставляет инструменты, такие как Counter, UpDownCounter, Histogram и ObservableGauge, которые напрямую соответствуют типам метрик, распознаваемым Prometheus, Datadog и другими бэкендами.
Метрики экспортируются по протоколу OTLP в otel-collector, который может фильтровать, преобразовывать и распределять данные по нескольким бэкендам наблюдаемости одновременно. Конфигурация otel-collector осуществляется через секции receivers, processors и exporters файла otel-collector-config.yaml. Переменная окружения OTEL_EXPORTER_OTLP_ENDPOINT — стандартный способ указать, куда инструментированные приложения отправляют данные метрик. Переход на метрики OpenTelemetry означает, что приложения могут менять бэкенды наблюдаемости без изменений в коде, что кардинально снижает зависимость от поставщика и позволяет легко масштабировать и адаптировать систему к новым требованиям.
Как это работает
OpenTelemetry метрики — это числовые агрегаты по времени: counters, gauges, histograms. Они дёшево хранятся, быстро запрашиваются, что делает их идеальными для использования в дашбордах и алертах. Стандартом для формата метрик является Prometheus (де факто), а также VictoriaMetrics (совместимый и часто проще эксплуатировать). Инструментирование приложений осуществляется с помощью client-библиотек, таких как prom-client для Node, prometheus_client для Python и т.д. Конвенция имён для метрик включает в себя <namespace>_<subsystem>_<name>_<unit>. Labels, или метки, представляют собой измерения, и их количество (cardinality) является важным параметром, так как высокая cardinality может привести к перегрузке системы.
Когда применять
По умолчанию используется формат метрик Prometheus везде. Для каждого сервиса рекомендуется использовать 4 золотых сигнала (rate, error, latency-percentile, saturation). Histograms особенно полезны для измерения latency (per-replica + агрегируемые). Для дашбордов с частыми запросами рекомендуется использовать предварительно агрегированные метрики через recording rules. Однако, следует учитывать, что высокая cardinality может убить Prometheus, поэтому важно ограничивать количество меток.
Типичные ошибки
Типичные ошибки при работе с OpenTelemetry метриками включают использование per-user-id labels, что может привести к взрыву cardinality; использование Counter вместо Histogram для измерения http_requests, что не дает информации о latency; а также короткий retention без long-term storage backend, что делает невозможным исследование данных на более длительные периоды времени.