Perché
Il percorso abituale per l’osservabilità di Kafka è un sidecar JMX exporter — un processo aggiuntivo per ogni broker, con la propria finestra di scrape, i propri modi di fallire e un modello di metriche che non corrisponde del tutto a ciò che parla il resto dello stack.
monedula-metrics-reporter elimina il sidecar. Si collega alla stessa interfaccia
MetricsReporter di Kafka e invia le metriche direttamente a un collector OpenTelemetry
tramite OTLP — gRPC o HTTP, a tua scelta. Il contesto del broker (cluster id,
node id) viene allegato come resource attribute, così lo stesso stream di metriche funziona
su tutti i broker senza cablaggio per ogni host.
Tutto l’I/O di export avviene su un thread daemon. Se il collector è lento o non disponibile, nulla raggiunge i thread che Kafka usa per servire il traffico.
Per tutto il contesto — i due sistemi di metriche nascosti dentro Kafka, perché le dashboard Grafana importate così spesso mostrano No Data e come l’OTLP nativo districa il tutto — leggi Le metriche di Kafka devono per forza essere così difficili?.
Configurazione
Inserisci lo shadow jar in $KAFKA_HOME/libs/, poi in server.properties:
metric.reporters=dev.monedula.metricsreporter.OtlpMetricReporter
otlp.metric.reporter.endpoint=http://otel-collector:4317
otlp.metric.reporter.transport=grpc
Lo stesso plugin funziona sui client Kafka — registralo tramite
metric.reporters nella configurazione del producer o del consumer e ottieni lo
stream lato client corrispondente nello stesso collector.
Uno stack demo completo (broker + collector + Prometheus + Grafana) si trova
sotto quickstart/ nel repo.
Compatibilità
Kafka 3.x e 4.x. Java 17+. Sono cablati sia la moderna SPI MetricsReporter sia il
registry legacy Yammer, così ottieni la copertura delle metriche che Kafka
emette oggi senza lasciare indietro quelle di Yammer.