Skip to content

Telemetry

There are two separate HTTP servers: one on Huginn Proxy (config file) and one on the eBPF agent (environment variables only). They are not merged: scrape both when you run the full TCP SYN stack; scrape only the proxy when eBPF is off.

Full metric names, labels, and PromQL examples live in the repo — do not duplicate them here: TELEMETRY.md.


Configured under [telemetry] in the config file. Static — the listener port is fixed at startup.

KeyDefaultDescription
metrics_portomitted (disabled)Port for Prometheus + health HTTP server (/metrics, /health, /ready, /live).
otel_log_level"warn"OpenTelemetry SDK internal log level (not application logs).
telemetry:
metrics_port: 9090
otel_log_level: "warn"
PathRole
/healthProcess is running
/readyReady to serve (503 when not ready, e.g. no backends)
/liveLiveness
/metricsPrometheus text

Health responses are JSON; /metrics is Prometheus exposition format.

Scrape URL: http://<host>:<metrics_port>/metrics (e.g. http://localhost:9090/metrics).

44 huginn_* metrics: connections, requests, throughput, TLS, JA4 / HTTP/2 fingerprinting, backend timings, active health checks, rate limits, IP filter, headers, mTLS, config reload, build info. TCP SYN lookup metrics on the proxy reflect map reads; capture counters are on the agent — see TELEMETRY.md.


Only when the TCP SYN path is enabled. Configured with environment variables, not [telemetry]:

VariableRole
HUGINN_EBPF_METRICS_ADDRBind address for the agent HTTP server
HUGINN_EBPF_METRICS_PORTPort (often 9091)

Same four paths as the proxy (/health, /ready, /live, /metrics) for Kubernetes-style probes. /ready may return 503 until BPF maps are pinned.

Agent-only metrics (examples): tcp_syn_captured_total, tcp_syn_insert_failures_total, tcp_syn_malformed_total, agent_up, huginn_ebpf_agent_build_info — full list in TELEMETRY.md — eBPF Agent Metrics.

Bind address vs scrape URL: eBPF TCP setup — Agent metrics bind address.


Scrape the proxy and the agent on different ports (e.g. 9090 and 9091). Example:

scrape_configs:
- job_name: huginn-proxy
static_configs:
- targets: ["localhost:9090"]
- job_name: huginn-ebpf-agent
static_configs:
- targets: ["localhost:9091"]

Adjust hosts to your Docker/Kubernetes networking. With eBPF Compose, ports are often published on the host as in docker-compose.release-ebpf.yml.