Hanzo O11y
Traces, metrics and logs, in one place
Your services send OpenTelemetry; it lands in one column store and comes back as APM, logs, traces, metrics and exceptions. Because it is one store, a span and the log line it produced are one query rather than two tabs and a copied timestamp.
One store, one query language
Every panel scopes to your org from the token, so a shared deployment still answers one tenant at a time.
Traces and APM
Follow one request across services, queues and databases. Sort by the slow tail rather than the average, and open the span that spent the time.
Metrics
Write PromQL if you already have it, or build the query in the UI if you do not. Both run against the same store the traces are in.
Logs
Search structured logs by field, not by regex over a blob. A span carries the id its log lines were written with, so the pivot is a click.
Exceptions
Errors are grouped and counted rather than listed, so a thousand of the same stack trace is one row with a number on it — and it links to the trace that raised it.
Dashboards and alerts
An alert rule is a saved query, so what fires at three in the morning is something you already looked at. It reaches PagerDuty, Opsgenie, Slack, Teams, email or a webhook.
OpenTelemetry on the wire
OTLP over gRPC on 4317 and HTTP on 4318. Any OTel SDK or collector points at it by setting one endpoint variable — there is no agent of ours to install.