OpenTelemetry и Grafana¶
OpenTelemetry (OTel) — не проект внутри Grafana Labs. Это открытый стандарт всего индустрии для сбора и отправки телеметрии. Grafana Labs — один из главных контрибьюторов и поддерживает OTel на всех уровнях стека.
OTel унифицирует, как приложения рождают метрики, трейсы, логи. SDK OTel встраивается в ваш код (Java, Go, Python, .NET, Node.js, Rust, C++). Все данные поступают в Collector, который отдаёт их в Loki/Mimir/Tempo.
OTLP endpoint¶
OTLP (OpenTelemetry Protocol) — стандартный протокол передачи телеметрии. Grafana поддерживает нативный приём через OTLP-эндпоинт прямо на порте 4318 (HTTP) или 4317 (gRPC):
datasources:
- name: OTel
type: grafana-opentelemetry-datasource
url: "http://otelcol:4317"
Приложение отправляет все данные через OTLP → otelcol → Loki, Mimir, Tempo.
Настройка OTel SDK (пример Go)¶
import (
"go.opentelemetry.io/otel"
"go.opentelemetry.io/otel/sdk/metric"
"go.opentelemetry.io/otel/sdk/trace"
"go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp"
"go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp"
)
// Трейсы -> OTLP -> Tempo
traceExp, _ := otlptracehttp.New(
context.Background(),
otlptracehttp.WithEndpoint("tempo:4317"),
otlptracehttp.WithInsecure(),
)
// Метрики -> OTLP -> Mimir через otelcol
metricExp, _ := otlpmetrichttp.New(
context.Background(),
otlpmetrichttp.WithEndpoint("otelcol:4318"),
otlpmetrichttp.WithInsecure(),
)
Все три сигнала (traces, metrics, logs) уходят по одному протоколу к одному collector'у. Больше никаких eksport'еров.
Это стандарт. Когда вы перейдёте с self-hosted Grafana на Grafana Cloud или другого облачного провайдера Observability — приложение переписывать не нужно, только смените endpoint.
Correlation OTel → Loki¶
В OTel SDK можно указать, что trace_id выводится в атрибут логов (через OTEL_LOG_TRACE_ID_KEY). Тогда Loki связывает traceID с логами — стандартный flow Grafana = метрика (Mimir) → trace (Tempo) → log (Loki).
Далее: Kubernetes Monitoring