L'integrazione di Apache Kafka raccoglie metriche dei broker, come richieste di argomento e errori. Monitora anche le partizioni del broker. L'integrazione raccoglie i log di Kafka e li analizza in un payload JSON. Il risultato include campi per il logger, il livello e il messaggio.
Per ulteriori informazioni su Kafka, consulta la documentazione di Apache Kafka.
Prerequisiti
Per raccogliere la telemetria di Kafka, devi installare l'agente operativo:
- Per le metriche, installa la versione 2.10.0 o successiva.
- Per i log, installa la versione 2.10.0 o successiva.
Questa integrazione supporta Kafka versioni da 0.8 a 3.0.0.
Configura la tua istanza di Kafka
Per esporre un endpoint JMX, devi impostare la proprietà di sistema com.sun.management.jmxremote.port
all'avvio della JVM. Ti consigliamo inoltre di impostare la stessa proprietà di sistema com.sun.management.jmxremote.rmi.port
. Per esporre un endpoint JMX da remoto, devi anche impostare la proprietà di sistema java.rmi.server.hostname
.
Per impostazione predefinita, queste proprietà sono impostate in un file bin/kafka-run-class.sh
di un deployment Kafka.
Per impostare le proprietà di sistema utilizzando gli argomenti della riga di comando, anteponi -D
al nome della proprietà quando avvii la JVM. Ad esempio, per impostare com.sun.management.jmxremote.port
sulla porta 9999
, specifica quanto segue all'avvio della JVM:
-Dcom.sun.management.jmxremote.port=9999
Configurare l'agente Ops per Kafka
Seguendo la guida per la configurazione dell'agente Ops, aggiungi gli elementi richiesti per raccogliere la telemetria dalle istanze Kafka e riavvia l'agente.
Esempio di configurazione
Il comando seguente crea la configurazione per raccogliere e importare la telemetria relativa a Kafka e riavvia l'agente Ops.
Configura raccolta log
Per importare i log da Kafka, devi creare i ricevitori per i log prodotti da Kafka e quindi creare una pipeline per i nuovi ricevitori.
Per configurare un ricevitore per i log di kafka
, specifica i campi seguenti:
Campo | Impostazione predefinita | Descrizione |
---|---|---|
exclude_paths |
Un elenco di pattern del percorso del file system da escludere dal set che corrisponde a include_paths . |
|
include_paths |
[/var/log/kafka/*.log] |
Un elenco di percorsi di file system da leggere accodando ogni file. Nei percorsi è possibile utilizzare un carattere jolly * , ad esempio /var/log/kafka*/*.log . |
record_log_file_path |
false |
Se è impostato su true , il percorso del file specifico da cui è stato ottenuto il record viene visualizzato nella voce di log di output come valore dell'etichetta agent.googleapis.com/log_file_path . Quando utilizzi un carattere jolly, viene registrato solo il percorso del file da cui è stato ottenuto il record. |
type |
Questo valore deve essere kafka . |
|
wildcard_refresh_interval |
60s |
L'intervallo di aggiornamento dei percorsi dei file con caratteri jolly in include_paths . Dato come durata temporale analizzabile da time.ParseDuration, ad esempio 30s o 2m . Questa proprietà potrebbe essere utile con velocità effettiva di logging elevate in cui i file di log vengono ruotati più velocemente dell'intervallo predefinito. |
Che cosa viene registrato
logName
viene ricavato dagli ID ricevitore specificati nella configurazione. Di seguito sono riportati i campi dettagliati all'interno di LogEntry
.
I log kafka
contengono i seguenti campi in LogEntry
:
Campo | Tipo | Descrizione |
---|---|---|
jsonPayload.level |
stringa (LogSeverity ) |
Livello voce di log |
jsonPayload.logger |
stringa (Timestamp ) |
Nome del logger in cui ha origine il log. |
jsonPayload.message |
string | Messaggio del log, incluso il livello di stack dettagliato, se fornito |
jsonPayload.source |
string | Modulo e/o thread in cui ha origine il log. |
severity |
string | Livello voce di log (tradotto). |
timestamp |
string | L'ora in cui è stata ricevuta la richiesta. |
Configurazione della raccolta di metriche
Per importare metriche da Kafka, devi creare ricevitori per le metriche generate da Kafka e quindi creare una pipeline per i nuovi ricevitori.
Per configurare un ricevitore per le metriche kafka
, specifica i seguenti campi:
Campo | Impostazione predefinita | Descrizione |
---|---|---|
stub_status_url |
localhost:9999 |
L'URL del servizio JMX o l'host e la porta utilizzati per creare l'URL del servizio. Deve essere nel formato service:jmx:<protocol>:<sap> o host:port . I valori nel modulo host:port verranno utilizzati per creare un URL di servizio di service:jmx:rmi:///jndi/rmi://<host>:<port>/jmxrmi . |
collect_jvm_metrics |
true |
Consente di configurare il ricevitore per raccogliere anche le metriche JVM supportate. |
collection_interval |
60s |
Un valore di durata, come 30s o 5m . |
password |
La password configurata se JMX è configurato in modo da richiedere l'autenticazione. | |
stub_status_url |
localhost:9999 |
L'URL o l'host e la porta del servizio JMX utilizzati per creare l'URL del servizio. Il valore deve essere nel formato service:jmx: |
type |
Questo valore deve essere kafka . |
|
username |
Il nome utente configurato se JMX è configurato per richiedere l'autenticazione. |
Che cosa viene monitorato
La tabella seguente fornisce l'elenco delle metriche che l'agente operativo raccoglie dall'istanza di Kafka.
Tipo di metrica | |
---|---|
Tipo, Tipo Risorse monitorate |
Etichette |
workload.googleapis.com/kafka.isr.operation.count
|
|
CUMULATIVE , INT64 gce_instance |
operation
|
workload.googleapis.com/kafka.message.count
|
|
CUMULATIVE , INT64 gce_instance |
|
workload.googleapis.com/kafka.network.io
|
|
CUMULATIVE , INT64 gce_instance |
state
|
workload.googleapis.com/kafka.partition.count
|
|
GAUGE , INT64 gce_instance |
|
workload.googleapis.com/kafka.partition.offline
|
|
GAUGE , INT64 gce_instance |
|
workload.googleapis.com/kafka.partition.under_replicated
|
|
GAUGE , INT64 gce_instance |
|
workload.googleapis.com/kafka.purgatory.size
|
|
GAUGE , INT64 gce_instance |
type
|
workload.googleapis.com/kafka.request.count
|
|
CUMULATIVE , INT64 gce_instance |
type
|
workload.googleapis.com/kafka.request.failed
|
|
CUMULATIVE , INT64 gce_instance |
type
|
workload.googleapis.com/kafka.request.time.total
|
|
CUMULATIVE , INT64 gce_instance |
type
|
Dashboard di esempio
Per visualizzare le metriche di Kafka, devi avere configurato un grafico o una dashboard. Cloud Monitoring offre una libreria di dashboard di esempio per le integrazioni, che contengono grafici preconfigurati. Per informazioni sull'installazione di queste dashboard, consulta l'articolo Installare dashboard di esempio.
Verificare la configurazione
Questa sezione descrive come verificare di aver configurato correttamente il ricevitore Kafka. L'agente operativo potrebbe impiegare uno o due minuti per iniziare a raccogliere la telemetria.
Per verificare che i log siano stati importati, vai a Esplora log ed esegui la query seguente per visualizzare i log di Kafka:
resource.type="gce_instance"
log_id("kafka")
Per verificare che le metriche siano importate, vai a Metrics Explorer ed esegui la seguente query nella scheda MQL:
fetch gce_instance
| metric 'workload.googleapis.com/kafka.message.count'
| every 1m
Passaggi successivi
Per una procedura dettagliata su come utilizzare Ansible per installare l'agente Ops, configurare un'applicazione di terze parti e installare una dashboard di esempio, guarda il video Installare l'agente Ops per risolvere i problemi delle applicazioni di terze parti.