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.