dorgu_* family, its labels, and what it answers. Metrics are a dashboard view. For a one-off summary that anyone can paste into an issue, use dorgu report, which reads the cluster’s resources instead of /metrics.
The set below is operator v0.13.0. dorgu_incidents_total, dorgu_proposals_total and dorgu_remediation_transitions_total exist from v0.12.0. Everything else is new in v0.13.0.
Scraping
With the chart defaults, the operator serves metrics over HTTPS on:8443 and authenticates every scrape. Bind the chart’s metrics-reader ClusterRole to whatever scrapes it. The values and the role binding are in Metrics and probes.
Every family is created at zero when the operator starts. A Prometheus counter with no series is simply absent, so a dashboard that loads before the first incident would show “no data” where the truth is “none yet”. Here
0 means zero events. Absent means the operator is not being scraped.other.
The gate
dorgu_gate_decisions_total
The same refusal is also a condition and an Event. See refusals are recorded. Metric reasons are the kebab-case guardrail names. The condition reasons are the same names in CamelCase (
blast-radius is BlastRadius).
deferred is not a refusal. Leave it out of any “refused” ratio.
Tickets, verification and heal credit
dorgu_heal_credit_total reasons: WorkloadPatchedByTicket (credited), and for credited="false": NothingPatched, ResourcesNotTicket, WorkloadDiverged, WorkloadUnreadable. They match the reasons on the HealCredited and WorkloadDiverged conditions. See heal credit.
Only resolved is a clean heal. partial and self-resolved are real recoveries that Dorgu cannot claim, so count them separately.
Durations
dorgu_stage_duration_seconds is the time a fix spends in each part of its life:
dorgu_incident_time_to_detect_seconds measures from the earliest contributing signal to the incident being recorded. Most signals are stamped when they are first observed, so it is mostly detector-to-record latency.
Incidents and proposals
class is one of resource, health, node, controlplane, deployment, dependency, scaling, security. scope is persona (the incident belongs to an ApplicationPersona) or unattributed.
The model
provider is claude or gemini. With AI off, these stay at zero.
dorgu_llm_invalid_output_total means the model is not following the reply schema. The incident is still diagnosed by the rules, so nothing breaks, but you are paying for replies Dorgu discards.
Also exported
The controller-runtime metrics (controller_runtime_reconcile_total, work queue depth and so on) are exported from the same endpoint, because the operator is built on controller-runtime.
How Dorgu decides
What each stage, ticket and heal-credit label means
Helm values
Turn the endpoint on, secure it, and grant a scraper access