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 |
CentOS 7, Fedora, 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 |
-s, --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. |
--tentacle_port | Puerto de tentacle.Por defecto 41121(opcional) |
--tentacle_address | Ip del servidor tentacle al que mandar los datos(opcional) |
-a, --agent_alias | Para ponerle un nombre al agente que contendrá los módulos , por defecto : "Kafka". (opcional) |
-A, --use_alias_as_name | Usar el nombre de Alias como nombre de agente |
--module_prefix | Para ponerle un prefijo a los módulos por si se quieren diferencias de otras ejecuciones.(opcional) |
-g,--group | Grupo de destino de Pandora FMS (opcional) |
--data_dir | Directorio de datos de Pandora FMS. Por defecto es /var/spool/pandora/data_in/ (opcional) |
--as_agent_plugin | Es opcional, si quieres que el plugin sea de agente y te meta los módulos en el agente de pandora, ejecuta esto con un 1 (opcional) |
Ejecución manual
./pandora_kafka --bootstrap_servers <string_conexion (ip with port)> [ --agent_alias <agent_alias> ] [ --use_alias_as_name <use_alias_as_name> ] [ --as_agent_plugin <as_agent_plugin> ] [ --module_prefix <module_prefix> ] [ --tentacle_port <tentacle_port> ] [ --tentacle_address <tentacle_address> ] [ -g <group> ] [ --data_dir <data dir> ]
Ejecución manual con --as_agent_plugin
Ejecución manual sin --as_agent_plugin
Ayuda
./pandora_kafka -h
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 |
Otros
topics
|
Obtiene todos los temas que el usuario está autorizado a ver. Esto siempre emitirá una llamada remota al clúster para obtener la información más reciente.
|
bootstrap_connected
|
Devuelve True si el bootstrap está conectado.
|
subscriptions
|
Obtener la suscripción al tema actual.
|
list_consumer_groups
|
Enumerar todos los grupos de consumidores conocidos por la agrupación.
|
least_loaded_node
|
Elige el nodo con menos peticiones pendientes, con fallbacks.
|
in_flight_request_count
|
Recuento de solicitudes de vuelo.
|
Ejemplo con algunos módulos para ilustrar como se verían en el agente