ODOCK.AI
ObservabilityLGTM Stack

Data flow

How metrics, traces, and logs travel from odock-server to Grafana.

Data flow

The LGTM stack is three observability pipelines sharing one investigation surface. Metrics, traces, and logs do not move through the system in the same way, but they meet again in Grafana when you need evidence for an incident.

Organisation users usually care about this page for one reason: it explains where to look when one signal is missing. Platform operators care because it describes the default wiring that must stay healthy.

Three Signals, Three Pipelines

Per-Signal Default Paths

SignalDefault pathBackup or alternative
Metricsodock-server exposes Prometheus on /metrics. Prometheus scrapes server:8080/metrics every 15 seconds.OTLP metrics export is available by setting OBSERVABILITY_OTEL_METRICS_EXPORTER=otlphttp, but one of the two paths must be disabled to avoid duplicate series.
Tracesodock-server exports OTLP traces over HTTP to the Collector, which batches and forwards them to Tempo.None in the default stack. Tempo is the trace backend.
Logsodock-server writes structured JSON to stdout. Promtail tails container logs and ships them to Loki.OTLP logs export is available if you intentionally route logs through the Collector.

The default pattern is deliberate:

  • metrics via /metrics
  • traces via OTLP
  • logs via stdout plus Promtail

That keeps each signal on a simple, stable path and avoids duplicate telemetry for the gateway.

Other Telemetry Sources

Prometheus also scrapes infrastructure exporters that are useful during platform incidents:

JobTargetWhy it matters
prometheusselfPrometheus health
lokiloki:3100/metricsLoki ingest and query health
tempotempo:3200/metricsTempo ingest health
otel-collector:8888/metricsCollector self-metrics
otel-collector-app-metrics:8889/metricsOTLP-imported application metrics
node-exporterhost metricsCPU, memory, disk
cadvisorcontainer metricsPer-container CPU and memory
traefik:8082/metricsEdge proxy health
postgres-exporter:9187Postgres readiness
redis-exporter:9121Redis readiness

These exporters feed the infrastructure dashboards described in Grafana dashboards.

Resource Attributes

All three signals carry a shared resource identity so you can join them during an investigation:

  • service.name, service.namespace, service.version, service.instance.id
  • deployment.environment.name
  • k8s.cluster.name, k8s.namespace.name, k8s.deployment.name, k8s.pod.name, k8s.node.name

Those values come from OBSERVABILITY_* environment variables on odock-server and from Collector-side enrichment. See OTEL configuration.

Tips

When a dashboard panel is empty, check the path in this order: gateway emits, exporter or Collector accepts, backend stores, Grafana queries.

Do not enable both Prometheus scraping and OTLP metrics export for odock-server at the same time. Queries will silently double-count.

On this page