Otel Collector
Что такое OpenTelemetry Collector?
OpenTelemetry Collector — это универсальный агент для сбора, обработки и экспорта телеметрических данных (метрик, логов и трассировок) в различные бекенды, такие как Prometheus, Jaeger, Elasticsearch и другие. Он упрощает интеграцию OpenTelemetry с существующей инфраструктурой мониторинга.
Основные возможности:
- Сбор данных — получение метрик, трассировок и логов из различных источников.
- Обогащение и фильтрация — трансформация данных перед отправкой в целевые системы.
- Гибкость — настраиваемый пайплайн обработки данных.
- Поддержка множества бекендов — отправка данных в Prometheus, Jaeger, Zipkin, Tempo и другие.
- Единый агент — замена множества специфичных агентов для разных типов данных.
Установка OpenTelemetry Collector
Вы можете запустить OpenTelemetry Collector с помощью Docker:
1 |
docker run --rm -p 4317:4317 -p 4318:4318 otel/opentelemetry-collector:latest |
Или установить вручную, скачав бинарные файлы с официального сайта.
Пример конфигурации OpenTelemetry Collector
Простой otel-collector-config.yaml
для экспорта данных в Prometheus и Jaeger:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
receivers: otlp: protocols: grpc: http: exporters: prometheus: endpoint: "0.0.0.0:8889" jaeger: endpoint: "jaeger:14250" tls: insecure: true service: pipelines: traces: receivers: [otlp] exporters: [jaeger] metrics: receivers: [otlp] exporters: [prometheus] |
Пример кода на Go для отправки данных в OpenTelemetry Collector
Простой сервис на Go, который отправляет метрики в OpenTelemetry Collector:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
package main import ( "context" "log" "time" "go.opentelemetry.io/otel" "go.opentelemetry.io/otel/exporters/otlp/otlptrace" "go.opentelemetry.io/otel/sdk/resource" "go.opentelemetry.io/otel/sdk/trace" "go.opentelemetry.io/otel/trace" ) func main() { exporter, err := otlptrace.New(context.Background()) if err != nil { log.Fatalf("Ошибка создания экспортера: %v", err) } tracerProvider := trace.NewTracerProvider( trace.WithBatcher(exporter), trace.WithResource(resource.Default()), ) otel.SetTracerProvider(tracerProvider) tracer := otel.Tracer("example-tracer") ctx, span := tracer.Start(context.Background(), "MainSpan") defer span.End() time.Sleep(2 * time.Second) log.Println("Отправка данных в OpenTelemetry Collector завершена.") } |
Использование
После запуска OpenTelemetry Collector можно интегрировать его с системами мониторинга, такими как Prometheus, Jaeger или Tempo, и использовать его для централизованного сбора данных.
Заключение
OpenTelemetry Collector — это универсальный инструмент для централизованного сбора, обработки и экспорта телеметрии, который упрощает мониторинг и трассировку в распределенных системах.