Broker down
Alert: KrabkaBrokerDown, up{job="krabka-broker"} == 0 for 2m.
What it means
Prometheus cannot scrape the broker’s /metrics endpoint on port 9404. The
process is stopped, the host is gone, or the network path from Prometheus to
the broker is broken.
This rule matters because every other rule in
alert-rules.yaml is per-instance. A broker whose
process died exports no series, so its krabka_broker_offline_partitions_count
and krabka_broker_under_replicated_partitions rules stop firing rather than
fire. up is the Prometheus-side series that stays.
Confirm
kafka-broker-api-versions --bootstrap-server <broker>:9092
A connection refused confirms the broker is not serving clients. Under
Kubernetes, kubectl get pod and kubectl describe pod name the restart
count and the last termination reason.
krabka_broker_active_brokers and krabka_broker_fenced_brokers on a broker
that is still up say whether the controller has fenced the missing node yet.
The controller fences it after heartbeat_timeout.
Diagnose
- Read the broker’s own log for the last lines before it stopped. A clean
controlled shutdown completeis a planned stop. An abrupt end is a crash or an external kill. - Check the exit reason. An OOM kill shows as exit 137 under Kubernetes and
in
dmesgon a host. - Check disk. A full log directory stops the broker.
dfon the log dir, andkrabka_broker_partition_disk_byteson the last scrape before it stopped. - If the process is running but the scrape fails, the broker is up and only
the metrics listener is unreachable. Check
--metrics-listen-addrand the path from Prometheus. In that case the cluster is healthy and the alert is a monitoring fault. - Check the effect on the cluster.
krabka_broker_under_replicated_partitionsandkrabka_broker_offline_partitions_counton the surviving brokers say whether the loss cost availability. A broker that was a controller voter also shows up in no active controller.
Fix
- Restart the broker. It recovers its log directories, rejoins the quorum and
catches up on metadata.
/readyzanswers 200 when the catch-up is inside--readiness-max-metadata-lag. - Free disk before the restart when the disk was the cause. A broker that boots into a full directory stops again.
- Replace the node when the host is gone for good. A replacement formats a new log directory. See Format the log directory, and follow metadata quorum loss when the lost node was a controller voter.
Escalate
A broker that restarts in a loop with no message in its log is a bug. Capture
the log at RUST_LOG=krabka_broker=debug across one boot and open an issue.