Meaning#
The Kafka Connect cluster is running but reports zero connectors, meaning no Debezium CDC source connector is deployed or running — CDC for the environment may be unconfigured or all connectors were removed. Fires when:
max(kafka_connect_worker_metrics_connector_count{namespace="safetywing-<env>-infra"}) == 0for: 15m, severity ticket, tier component.
Impact#
No change capture is happening at all in this environment: no MySQL changes flow from MOCO MySQL into Kafka. Downstream consumers (search indices, mirror/derived tables, event-driven flows) receive nothing new. For a freshly provisioned env this may be expected during bring-up; for an established env it means CDC is silently broken.
Diagnosis#
Check whether any KafkaConnector CRs exist and what state they are in.
kubectl config use-context hetzner
kubectl get kafkaconnect,kafkaconnector -n safetywing-<env>-infra
# If connectors exist but report 0, inspect status/conditions
kubectl get kafkaconnector <name> -n safetywing-<env>-infra -o yaml # status.conditions / tasksMaxConfirm whether Connect itself sees any connectors via the REST API.
kubectl get pods -n safetywing-<env>-infra -l strimzi.io/kind=KafkaConnect
kubectl exec -n safetywing-<env>-infra <connect-pod> -- \
curl -s localhost:8083/connectors | jqCheck operator logs if KafkaConnector CRs exist but aren’t being reconciled into Connect.
kubectl logs -n safetywing-<env>-infra <connect-pod> --tail=200Confirm the metric in Prometheus (prom-ep.hetzner.safetywing.dev).
max(kafka_connect_worker_metrics_connector_count{namespace="safetywing-<env>-infra"})Mitigation#
If no
KafkaConnectorCRs exist, thekafka-cdcchart connector definitions were never applied or were pruned — check the env’s ArgoCD Application is Synced and Healthy, and that connector values are present in the chart.If CRs exist but Connect shows zero connectors, ensure
use-connector-resourcesis enabled on the KafkaConnect CR (Strimzi only manages KafkaConnector CRs when annotatedstrimzi.io/use-connector-resources: "true"):kubectl get kafkaconnect -n safetywing-<env>-infra -o jsonpath='{.items[0].metadata.annotations}{"\n"}'Force re-reconciliation of a connector that exists but isn’t loading:
kubectl annotate kafkaconnector <name> -n safetywing-<env>-infra \ strimzi.io/restart="true" --overwriteIf a connector failed to instantiate (e.g. bad Debezium config or missing source DB), verify MOCO MySQL connectivity/credentials in the same namespace and check connector status conditions for the error.
Common root causes: env still mid-provisioning, ArgoCD app not synced, missing
use-connector-resourcesannotation, deleted connector CRs, or connector creation rejected due to invalid config.