AiHummer
English
Log in
v1.0.x
{ }Swagger

Observability

v1.0.x · updated 2026-07-07

AiHummer observability has two surfaces: the gateway serves a Prometheus GET /metrics endpoint you can scrape for the basics, and it can optionally push telemetry over OTLP to an OpenTelemetry endpoint you configure. Scrape /metrics for baseline monitoring; for traces and rich metrics point AiHummer at your OTLP collector and visualise the data with the bundled Grafana dashboards.

[!NOTE] pprof (/debug/pprof) is not exposed.

The Prometheus /metrics endpoint

GET /metrics serves Prometheus text-format metrics with no extra setup. Only non-sensitive gauges are exposed — build info, process uptime and runtime, DB connection-pool state and a readiness gauge; no tenant data, no secrets, no per-request labels. For traces and rich metrics, use the OTLP push.

OTLP push

Set a single variable to turn telemetry on:

# gateway.env — export telemetry to your OTLP collector
AIHUMMER_OTEL_ENDPOINT=http://otel-collector:4317

With AIHUMMER_OTEL_ENDPOINT set, the gateway pushes telemetry to that collector. From there, route it to your backend (Tempo, a metrics store, logs) and into Grafana.

Error reporting (Bugsink / Sentry)

The gateway ships a Sentry-protocol error-reporting client — it works with self-hosted Bugsink or any Sentry-compatible DSN. Set the DSN and panics and errors (including the boot phase and background workers) are reported to your tracker, tagged with the component and instance:

# gateway.env — error reporting (Bugsink or any Sentry-compatible DSN)
AIHUMMER_SENTRY_DSN=https://<key>@<your-bugsink-or-sentry>/<project>
AIHUMMER_SENTRY_ENVIRONMENT=production   # optional; defaults to production

Both knobs are settings-catalog entries (group Observability), so you can also set them from the web admin UI; the DB value takes precedence over env. Until a DSN is set, reporting is off.

Live logs in the admin UI

The admin UI’s “Logs” page is a live tail of the gateway journal: new lines are pulled in automatically every few seconds, with autoscroll while you are at the bottom. The toolbar has a line search and a level filter (all / errors / warnings / info / debug). Several other pages (Dashboard, Sessions, Channels) also refresh automatically, and long lists (audit, changes, notifications and so on) load page by page with a “Show more” button.

Full logs of every service still live in systemd — aihummer logs [unit] or journalctl -u aihummer-gateway.

Grafana dashboards

Ready-made Grafana dashboards ship with the release. Import them into your Grafana instance to get the operational views without building panels from scratch.

What to watch

These are the signals that tell you the system is healthy and turns are flowing:

Signal Why it matters
Turn latency End-to-end responsiveness of agent turns
Error rate Failing turns / requests — the first sign of trouble
Delivery dispositions Whether replies are actually reaching channels
Outbox / DLQ depth Backlog of undelivered messages; a growing DLQ means delivery is stuck

A rising outbox or dead-letter-queue (DLQ) depth is the clearest early warning that delivery is backing up — watch it during rollouts and incidents.

System endpoints

Alongside OTLP, the gateway exposes small HTTP endpoints useful for probes, clocks and client diagnostics:

Method Endpoint Purpose
GET /metrics Prometheus metrics (build, runtime, DB pool, readiness)
GET /healthz Liveness + version
GET /readyz Readiness (checks Postgres; 503 if down)
GET /v1/ping Lightweight reachability check
GET /v1/time Server time
POST /v1/client-log Ingest client-side log events

The health and readiness probes are covered in detail under systemd & health checks.

Where to next