Kafka
El plugin muestra las métricas de rendimiento de los productores y consumidores.
- Introducción
- Matriz de compatibilidad
- Pre requisitos
- Parámetros
- Ejecución manual
- Configuración en PandoraFMS
- Módulos generados por el plugin
Introducción
Ver. 11-10-2022
El plugin obtiene métricas sobre el rendimiento del productor y del consumidor
Esto es portado desde el productor de Java, para más detalles ver:
https://kafka.apache.org/documentation/#consumer_monitoring
https://kafka.apache.org/documentation/#producer_monitoring
Matriz de compatibilidad
| Sistemas donde se ha probado |
Rocky linux |
| Sistemas donde debería funcionar |
Cualquier sistema linux |
Pre requisitos
- Tener el Data Server de Pandora FMS habilitado
- Tener el Plugin Server de Pandora FMS habilitado
Parámetros
| Parámetro | Descripción |
| --bootstrap_servers | Cadena 'host[:port]' (o lista de cadenas 'host[:port]') que el productor debe contactar para arrancar los metadatos del clúster inicial. Esta no tiene que ser la lista completa de nodos. Solo necesita tener al menos un corredor que responda a una solicitud de API de metadatos. El puerto predeterminado es 9092. Si no se especifica ningún servidor, el puerto predeterminado será localhost:9092. |
| --topics | Lista de topics separados por coma |
| --topic_regex | Regex para suscripción (sobrescribe --topics) |
| --agent_prefix | Prefijo para el nombre de los agentes creados |
| --module_prefix | Prefijo para el nombre de los módulos creados |
| --transfer_mode | Modo de envío (tentacle por defecto) |
| --tentacle_ip | IP del servidor Tentacle (default: 127.0.0.1) |
| --tentacle_port | Puerto Tentacle (default: 41121) |
| --verbose | Activa debug |
Ejecución manual
./pandora_kafka \
--bootstrap_servers <ip:port[,ip:port,...]> \
[ --topics <topic1,topic2,...> ] \
[ --topic_regex <regex_pattern> ] \
[ --agent_prefix <prefix> ] \
[ --module_prefix <prefix> ] \
[ --transfer_mode <tentacle|local> ] \
[ --tentacle_ip <ip> ] \
[ --tentacle_port <port> ] \
[ --verbose ]
Por ejemplo :
./pandora_kafka \
--bootstrap_servers kafka1:9092,kafka2:9092 \
--topic_regex "^prod-.*" \
--agent_prefix KAFKA_ \
--module_prefix METRIC_ \
--transfer_mode tentacle \
--tentacle_ip 10.0.0.20 \
--tentacle_port 41121 \
--verbose
Configuración en PandoraFMS
Como plugin de servidor
Instalación manual
Iremos a servidores > plugins:
Pinchamos en añadir:
Le ponemos en nombre y la descripción que se prefiera.
Metemos como comando la ejecución con la ruta del plugin:
/path_pandora_kafka
Recuerda que la ruta recomendada para el uso de los plugins de servidor es: /usr/share/pandora_server/util/plugin/
Y en parámetros del plugin introduciremos estos seguidos de la macro "_field<N>_", el obligatorio para que funcione es --conf.
Aunque no es obligatorio, es muy recomendable el uso del parámetro --agent_alias , ya que nos permite personalizar el nombre del agente que contendrá los módulos creados para cada consulta personalizada. También es recomendable usar el parámetro --module_prefix ya que este nos permitirá asignar un prefijo a los módulos, lo que puede ser útil para reconocerlos más rápido y diferenciarlos si creamos varias ejecuciones para bases de datos diferentes.
Una vez hecho esto, daremos a "crear".
Una vez hecho esto, solo queda llamarlo por lo que iremos a la vista de algún agente y crearemos un módulo de complementos:
Le daremos un nombre y en el apartado "plugin" pondremos el que acabamos de configurar.
Una vez hecho esto, damos a crear.
Si el modulo se muestra con 1, quiere decir que se esta ejecutando correctamente.
Módulos generados por el plugin
El plugin creará un agente con un nombre personalizable con el parámetro --agent_alias o con nombre "Kafka" por defecto que contendrá todos los módulos de la ejecución.
Módulos
Producer
kafka-metrics-count
| count |
producer-metrics
| connection-close-rate |
| connection-creation-rate |
| select-rate |
| io-wait-time-ns-avg |
| io-wait-ratio |
| io-time-ns-avg |
| io-ratio |
| connection-count |
| network-io-rate |
| outgoing-byte-rate |
| request-rate |
| request-size-avg |
| request-size-max |
| incoming-byte-rate |
| response-rate |
| request-latency-avg |
| request-latency-max |
| bufferpool-wait-ratio |
| batch-size-avg |
| batch-size-max |
| compression-rate-avg |
| record-queue-time-avg |
| record-queue-time-max |
| produce-throttle-time-avg |
| produce-throttle-time-max |
| record-send-rate |
| records-per-request-avg |
| byte-rate |
| record-retry-rate |
| record-error-rate |
| record-size-max |
| record-size-avg |
| requests-in-flight |
| metadata-age |
producer-node-metrics.node-<node>
| outgoing-byte-rate |
| request-rate |
| request-size-avg |
| request-size-max |
| incoming-byte-rate |
| response-rate |
| request-latency-avg |
| request-latency-max |
Consumer
kafka-metrics-count
| count |
consumer-metrics
| connection-close-rate |
| connection-creation-rate |
| select-rate |
| io-wait-time-ns-avg |
| io-wait-ratio |
| io-time-ns-avg |
| io-ratio |
| connection-count |
| network-io-rate |
| outgoing-byte-rate |
| request-rate |
| request-size-avg |
| request-size-max |
| incoming-byte-rate |
| response-rate |
| request-latency-avg |
| request-latency-max |
consumer-node-metrics.node-<node>
| outgoing-byte-rate |
| request-rate |
| request-size-avg |
| request-size-max |
| incoming-byte-rate |
| response-rate |
| request-latency-avg |
| request-latency-max |
consumer-fetch-manager-metrics
| fetch-size-avg |
| fetch-size-max |
| bytes-consumed-rate |
| records-per-request-avg |
| records-consumed-rate |
| fetch-latency-avg |
| fetch-latency-max |
| fetch-rate |
| records-lag-max |
| fetch-throttle-time-avg |
| fetch-throttle-time-max |
consumer-coordinator-metrics
| heartbeat-response-time-max |
| heartbeat-rate |
| join-time-avg |
| join-time-max |
| join-rate |
| sync-time-avg |
| sync-time-max |
| sync-rate |
| last-heartbeat-seconds-ago |
| commit-latency-avg |
| commit-latency-max |
| commit-rate |
| assigned-partitions |