Apache Kafka

Mantieni tutto organizzato con le raccolte Salva e classifica i contenuti in base alle tue preferenze.

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.

set -e

# Create a back up of the existing file so existing configurations are not lost.
sudo cp /etc/google-cloud-ops-agent/config.yaml /etc/google-cloud-ops-agent/config.yaml.bak

# Configure the Ops Agent.
sudo tee /etc/google-cloud-ops-agent/config.yaml > /dev/null << EOF
metrics:
  receivers:
    memcached:
      type: memcached
  service:
    pipelines:
      memcached:
        receivers:
          - memcached
EOF

sudo service google-cloud-ops-agent restart
sleep 60

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:: o host:port. I valori nel modulo host:porta vengono utilizzati per creare un URL di servizio di service:jmx:rmi:///jndi/rmi://:/jmxrmi.
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
CUMULATIVEINT64
gce_instance
state
workload.googleapis.com/kafka.partition.count
GAUGE, INT64
gce_instance
 
workload.googleapis.com/kafka.partition.offline
GAUGEINT64
gce_instance
 
workload.googleapis.com/kafka.partition.under_replicated
GAUGE, INT64
gce_instance
 
workload.googleapis.com/kafka.purgatory.size
GAUGEINT64
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
CUMULATIVEINT64
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.