2 Comprobaciones pasivas y activas del agente

Descripción general

Esta sección proporciona detalles sobre las comprobaciones pasivas y activas realizadas por el Agente Zabbix.

Zabbix utiliza un protocolo de comunicación basado en JSON para comunicarse con el Agente Zabbix.

Ver también: Detalles del protocolo del Agente Zabbix 2.

Comprobaciones pasivas

Una comprobación pasiva es una simple solicitud de datos. El servidor Zabbix o el proxy preguntan por algunos datos (por ejemplo, carga de CPU) y el agente Zabbix devuelve el resultado al servidor.

Solicitud de servidor

Para conocer la definición del encabezado y la longitud de los datos, consulte detalles del protocolo.

<clave de métrica>

Respuesta del agente

<DATOS>[\0<ERROR>]

Arriba, la parte entre corchetes es opcional y solo se envía para métricas no compatibles.

Por ejemplo, para métricas compatibles:

  1. El servidor abre una conexión TCP
  2. El servidor envía <HEADER><DATALEN>agent.ping
  3. El agente lee la solicitud y responde con <ENCABEZADO><DATALEN>1
  4. El servidor procesa los datos para obtener el valor, '1' en nuestro caso.
  5. La conexión TCP se cierra

Para métricas no compatibles:

  1. El servidor abre una conexión TCP
  2. El servidor envía <HEADER><DATALEN>vfs.fs.size[/nono]
  3. El agente lee la solicitud y responde con <HEADER><DATALEN>ZBX_NOTSUPPORTED\0No se puede obtener información del sistema de archivos: [2] No existe tal archivo o directorio
  4. El servidor procesa datos, cambia el estado de la métrica a no compatible con el mensaje de error especificado
  5. La conexión TCP se cierra

Comprobaciones activas

Las comprobaciones activas requieren un procesamiento más complejo. El agente primero debe recuperar del servidor(es) una lista de métricas para su procesamiento independiente.

Los servidores desde los que obtener las comprobaciones activas se enumeran en el parámetro 'ServerActive' del archivo de configuración del agente. La frecuencia de preguntar para estas comprobaciones se establece mediante el parámetro 'RefreshActiveChecks' en el mismo archivo de configuración. Sin embargo, si falla la actualización de las comprobaciones activas, se vuelve a intentar después de 60 segundos codificados.

Para disminuir el tráfico de red y el uso de recursos, el servidor Zabbix o el proxy Zabbix proporcionarán la configuración solo si el agente Zabbix aún no ha recibido la configuración o si algo ha cambiado en la configuración del equipo, las macros globales o las expresiones regulares globales.

Luego, el agente envía periódicamente los nuevos valores a los servidores.

Si un agente está detrás del firewall, puede considerar usar solo comprobaciones activas porque en este caso no necesitaría modificar el firewall para permitir conexiones entrantes iniciales.

Obteniendo la lista de métricas

Solicitud del agente

La solicitud de comprobaciones activas se utiliza para obtener las comprobaciones activas que procesará el agente. El agente envía esta solicitud al inicio y luego con intervalos de RefreshActiveChecks.

{
           "request": "active checks",
           "host": "Zabbix server",
           "host_metadata": "mysql,nginx",
           "hostinterface": "zabbix.server.lan",
           "ip": "159.168.1.1",
           "port": 12050,
           "config_revision": 1,
           "session": "e3dcbd9ace2c9694e1d7bbd030eeef6e"
       }
Campo Tipo Obligatorio Valor
request cadena si comprobaciones activas
host cadena si Nombre del equipo.
host_metadata cadena no El parámetro de configuración HostMetadata o valor de métrica HostMetadataItem.
hostinterface cadena no El valor de la métrica del parámetro de configuración HostInterface o HostInterfaceItem.
ip cadena no El parámetro de configuración ListenIP primera IP si está configurado.
port número no El valor del parámetro de configuración ListenPort si está configurado y no es el puerto de escucha del agente predeterminado.
config_revision número no Identificador de configuración para sincronización de configuración incremental.
config_revision cadena no Identificador de sesión para la sincronización de configuración incremental.

Respuesta del servidor

El servidor envía la respuesta de comprobaciones activas al agente después de procesar la solicitud de comprobaciones activas.

{
         "response": "success",
         "data": [
           {
             "key": "log[/home/zabbix/logs/zabbix_agentd.log]",
             "key_orig": "log[/home/zabbix/logs/zabbix_agentd.log]",
             "ítemid": 1234,
             "delay": "30s",
             "lastlogsize": 0,
             "mtime": 0
           },
           {
             "key": "agent.version",
             "key_orig": "agent.version",
             "ítemid": 5678,
             "retraso": "10 m",
             "lastlogsize": 0,
             "mtime": 0
           }
         ],
         "config_revision": 2
       }
Campo Tipo Obligatorio Valor
response cadena si éxito | fallido
info cadena no Información de error en caso de fallo.
data conjunto de objetos no Elementos de comprobaciones activas. Se omite si la configuración del equipo no se modifica.
key cadena no Clave de métrica con macros expandidas.
key_orig cadena no Clave de métrica sin macros expandidas.
itemid número no Identificador de métrica.
delay cadena no Intervalo de actualización de la métrica.
lastlogsize número no Tamaño del último registro de la métrica.
mtime número no Métrica por hora.
refresh_unsupported número no Intervalo de actualización de métricas no soportadas.
regexp conjunto de objetos no Expresiones regulares globales.
name cadena no Nombre de expresión regular global.
expression cadena no Expresión regular global.
expression_type número no Tipo de expresión regular global.
exp_delimiter cadena no Delimitador de expresión regular global.
case_sensitive número no Configuración global de sensibilidad entre mayúsculas y minúsculas de expresiones regulares.
config_revision número no Identificador de configuración para la sincronización de configuración incremental. Se omite si la configuración del equipo no se modifica. Se incrementa si se cambia la configuración del equipo.

El servidor debe responder con éxito.

Por ejemplo:

  1. El agente abre una conexión TCP
  2. El agente solicita la lista de comprobaciones.
  3. El servidor responde con una lista de métricas (clave de métrica, retraso)
  4. El agente analiza la respuesta.
  5. La conexión TCP se cierra
  6. El agente inicia la recopilación periódica de datos.

Tenga en cuenta que los datos de configuración (sensibles) pueden estar disponibles para las partes que tengan acceso al puerto del capturador del servidor Zabbix cuando se utiliza una comprobación activa. Esto es posible porque cualquiera puede pretender ser un agente activo y solicitar datos de configuración de la métrica; la autenticación no se realiza a menos que utilice las opciones de cifrado.

Envío de datos recopilados

El agente envía

La solicitud de datos del agente contiene los valores de las métricas recopiladas.

{
         "request": "agent data",
         "data": [
           {
             "host": "servidor Zabbix",
             "key": "agent.version",
             "value": "2.4.0",
             "clock": 1400675595,
             "ns": 76808644
           },
           {
             "host": "servidor Zabbix",
             "key": "log[/home/zabbix/logs/zabbix_agentd.log]",
             "lastlogsize": 112,
             "value": " 19845:20140621:141708.521 Iniciando el agente Zabbix [<nombre de host>]. Zabbix 2.4.0 (revisión 50000).",
             "clock": 1400675595,
             "ns": 77053975
           }
         ],
         "session": "1234456akdsjhfoui"
       }
Campo Tipo Obligatorio Valor
request cadena si datos del agente
session cadena si Identificador de sesión único generado cada vez que se inicia el agente.
data conjunto de objetos si Valores de métricas.
id número si El identificador de valor (contador incremental utilizado para comprobar valores duplicados en caso de problemas de red).
id cadena si Nombre del eqio`p.
key cadena si La clave de la métrica.
value cadena no El valor de la métrica.
lastlogsize número no El último tamaño del registro del elemento.
mtime número no El valor mtime de la métrica.
state número no El estado de la métrica.
source cadena no El origen del registro de eventos de valor.
eventid número no El valor del registro de eventos eventid.
severity número no El valor de gravedad del registro de eventos.
timestamp número no La marca de tiempo del registro de eventos del valor.
clock número si La marca de tiempo del valor (segundos desde la época).
ns número si La marca de tiempo del valor es nanosegundos.

Se asigna una identificación virtual a cada valor. El ID del valor es un contador ascendente simple, único dentro de una sesión de datos (identificado por el token de la sesión). Este ID se utiliza para descartar valores duplicados que puedan enviarse en entornos con mala conectividad.

Respuesta del servidor

El servidor envía la respuesta de datos del agente al agente después de procesar la solicitud de datos del agente.

{
         "response": "success",
         "info": "processed: 2; failed: 0; total: 2; seconds spent: 0.003534"
       }
Campo Tipo Obligatorio Valor
response cadena si éxito | fallido
info cadena si Resultados del procesamiento de las métricas.

Si el envío de algunos valores falla en el servidor (por ejemplo, porque el equipo o la métrica han sido deshabilitados o eliminados), el agente no vuelva a intentar enviar esos valores.

Por ejemplo:

  1. El agente abre una conexión TCP
  2. El agente envía una lista de valores.
  3. El servidor procesa los datos y devuelve el estado.
  4. La conexión TCP se cierra

Observe cómo en el ejemplo anterior el estado no admitido para vfs.fs.size[/nono] se indica mediante el valor de "estado" de 1 y el mensaje de error en la propiedad "valor".

El mensaje de error se recortará a 2048 símbolos por parte del servidor.

Mensaje de latido

El mensaje de latido es enviado por un agente activo al servidor/proxy de Zabbix cada número de segundos indicados en HeartbeatFrequency (configurado en el archivo de configuración del agente Zabbix).

Se utiliza para monitorear la disponibilidad de comprobaciones activas.

{
         "request": "active check heartbeat",
         "host": "servidor Zabbix",
         "heartbeat_freq": 60
       }
Campo Tipo Obligatorio Valor
request cadena si comprobación activa del latido del corazón
host cadena si El nombre del equipo.
heartbeat_freq número si La frecuencia de latido del agente (parámetro de configuración HeartbeatFrequency).

Protocolo XML más antiguo

Zabbix ocupará hasta 16 MB de datos codificados en XML Base64, pero un único valor decodificado no debe tener más de 64 KB, de lo contrario se truncará a 64 KB durante la decodificación.