OTEL Collector
Source:: https://opentelemetry.io/docs/collector/
OpenTelemetry Collector — это компонент в экосистеме OpenTelemetry, предназначенный для сбора, обработки и передачи телеметрических данных (метрик, логов и трассировок) из различных источников в системы мониторинга и анализа.
Может запускаться как своего рода агент рядом с сервисом (например в виде sidecar контейнера K8S) или как полноценный сервер собирающий Сигналы Наблюдаемости с отдельных агентов и/или сервисов напрямую.
Установка
В целом коллектор представляет из себя обычный бинаринк на Go со всеми вытекающими для установки последствиями.
В Github проекта доступны два основных вида сборки. Просто collector и его contrib версия включающая в себя множество компонентов для приём, отправки и обработки сигналов.
Внимание
Даже
core
сборка коллектора включает в себя ряд компонентов из егоcontib
версии. Что может привести к некоторой путанице в поиске по документации.
Пример установленного и настроенного коллектора: Локальный стенд OpenTelemetry
OCB
Ссылка на оригиналQuote
« Хотя вы можете легко загрузить контейнер Docker или заранее построенный двоичный образ Collector, в рабочих средах следует использовать Collector Builder (https://oreil.ly/UOy49). Эта служебная программа позволяет сгенерировать нестандартную сборку со встроенными получателями, экспортерами и обработчиками, которые вам нужны. » (Page 163)
OpenTelemetry в K8S
Так же доступен как Operator в Kubernetes.
Настройки
Структура любого конфигурационного файла Collector состоит из четырех классов, которые получают доступ к данным телеметрии:
Все эти компоненты должны быть объединены в Services. Кроме того доступны Extension которые не имеют отношения к данным телеметрии, а просто добавляют возможностей самому Collector.
Вот пример рабочего конфига:
receivers:
otlp:
protocols:
grpc:
endpoint: 0.0.0.0:4317
http:
endpoint: 0.0.0.0:4318
otlp/2:
protocols:
grpc:
endpoint: 0.0.0.0:55690
processors:
batch:
batch/test:
exporters:
otlp:
endpoint: otelcol:4317
otlp/2:
endpoint: otelcol2:4317
extensions:
health_check:
pprof:
zpages:
service:
extensions: [health_check, pprof, zpages]
pipelines:
traces:
receivers: [otlp]
processors: [batch]
exporters: [otlp]
traces/2:
receivers: [otlp/2]
processors: [batch/test]
exporters: [otlp/2]
metrics:
receivers: [otlp]
processors: [batch]
exporters: [otlp]
logs:
receivers: [otlp]
processors: [batch]
exporters: [otlp]
Можно заметить, что компоненты могут быть определены через type[/name]
.
Альтернативы
- Jaeger - начиная с версии 2 совместим с коллектором. На самом деле вплоть до того, что использует его кодовую базу.
- Grafana Alloy - альтернативное решение от Grafana Labs.