Se encuentra viendo la documentación de la versión en desarrollo, puede estar incompleta.
Esta página fue traducida automáticamente. Si detectas un error, selecciónalo y presiona Ctrl+Enter para informarlo a los editores.

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 y el agente Zabbix 2.

Zabbix utiliza un protocolo de comunicación basado en JSON para comunicarse con los agentes.

Los protocolos del agente Zabbix y del agente Zabbix 2 se han unificado desde Zabbix 7.0. La diferencia entre las solicitudes/respuestas del agente Zabbix y del agente Zabbix 2 se expresa mediante el valor de la etiqueta "variant".

Chequeos pasivos

Un chequeo pasivo es una simple solicitud de datos. El servidor o proxy de Zabbix solicita algunos datos (por ejemplo, carga de CPU) y el agente de Zabbix envía de vuelta el resultado al servidor.

Los chequeos pasivos se ejecutan de forma asíncrona: no es necesario recibir la respuesta a una solicitud antes de que se inicien otros chequeos. La resolución de DNS también es asíncrona.

El agente poller intentará conectarse a todas las direcciones devueltas por la búsqueda DNS. Esto garantiza que si una dirección IP no es accesible, el poller intentará la siguiente dirección disponible, aumentando la probabilidad de una conexión exitosa. Esta mejora se aplica tanto al servidor de Zabbix como al proxy.

La concurrencia máxima de chequeos asíncronos es 1000 (definida por MaxConcurrentChecksPerPoller).

El número de agent pollers asíncronos se define mediante el parámetro StartAgentPollers.

Solicitud del servidor

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

{
         "request": "passive checks",
         "data": [
           {
             "key": "agent.version",
             "timeout": 3
           }
         ]
       }
Campo Tipo Obligatorio Valor
request string "passive checks"
data array of object Métrica de chequeo pasivo.
key string Clave de la métrica con macros expandidas.
timeout string Tiempo de espera de la métrica.

Respuesta del agente

{
         "version": "8.0.0",
         "variant": 2,
         "data": [
           {
             "value": "8.0.0"
           }
         ]
       }
Campo Tipo Obligatorio Valor
version string El número de versión del agente.
variant number La variante del agente (1 - Zabbix agent, 2 - Zabbix agent 2).
data array of object Contiene el resultado del chequeo.
value string no El valor de la métrica si el chequeo fue exitoso.
error string no El mensaje de error si el chequeo no fue exitoso.

Por ejemplo, para métricas soportadas:

  1. El servidor abre una conexión TCP
  2. El servidor envía <HEADER><DATALEN>{"request":"passive checks","data":[{"key":"agent.ping","timeout":3}]}
  3. El agente lee la solicitud y responde con <HEADER><DATALEN>{"version":"8.0.0","variant":2,"data":[{"value":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 soportadas:

  1. El servidor abre una conexión TCP
  2. El servidor envía <HEADER><DATALEN>{"request":"passive checks","data":[{"key":"vfs.fs.size[/nono]","timeout":3}]}
  3. El agente lee la solicitud y responde con <HEADER><DATALEN>{"version":"8.0.0","variant":2,"data":[{"error":"Unsupported item key."}]}
  4. El servidor procesa los datos, cambia el estado de la métrica a no soportada con el mensaje de error especificado
  5. La conexión TCP se cierra
Conmutación por error al protocolo antiguo

Para asegurarse de que el servidor o proxy de Zabbix pueda trabajar con agentes de versiones anteriores a la 7.2, que utilizan el protocolo en texto plano, se implementa una conmutación por error al protocolo antiguo.

Las comprobaciones pasivas se realizan utilizando el protocolo JSON (7.0 y posteriores) después de reiniciar o cuando se cambia la configuración de la interfaz. Si no se recibe un JSON válido en respuesta (el agente envió "ZBX_NOTSUPPORTED"), Zabbix almacenará en caché la interfaz como protocolo antiguo y reintentará la comprobación enviando solo la clave de la métrica.

Tenga en cuenta que cada hora el servidor/proxy de Zabbix volverá a intentar trabajar con el nuevo protocolo en todas las interfaces, volviendo al protocolo antiguo si es necesario.

Chequeos activos

Los chequeos activos requieren un procesamiento más complejo. El agente debe primero recuperar del servidor/proxy una lista de métricas y/o comandos remotos para su procesamiento independiente.

Los servidores/proxies de los que obtener los chequeos activos se enumeran en el parámetro 'ServerActive' del archivo de configuración del agente. La frecuencia con la que se solicitan estos chequeos se establece mediante el parámetro 'RefreshActiveChecks' en el mismo archivo de configuración. Sin embargo, si la actualización de los chequeos activos falla, se reintenta después de 60 segundos codificados.

Desde Zabbix 6.4 el agente (en modo activo) ya no recibe del servidor/proxy una copia completa de la configuración cada dos minutos (por defecto). En su lugar, para disminuir el tráfico de red y el uso de recursos, se realiza una sincronización incremental de la configuración cada 5 segundos (por defecto), en la que el servidor/proxy proporciona una copia completa de la configuración solo si el agente aún no la ha recibido, o si algo ha cambiado en la configuración del equipo, macros globales o expresiones regulares globales.

El agente luego envía periódicamente los nuevos valores al/los servidor(es). Si el agente recibió algún comando remoto para ejecutar, el resultado de la ejecución también se enviará. Tenga en cuenta que la ejecución de comandos remotos en un agente activo es compatible desde Zabbix agent 7.0.

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

Obtener la lista de métricas

Solicitud del agente

La solicitud de comprobaciones activas se utiliza para obtener las comprobaciones activas que debe procesar el agente. Esta solicitud es enviada por el agente al iniciar y luego en intervalos de RefreshActiveChecks.

{
         "request": "active checks",
         "host": "Zabbix server",
         "host_metadata": "mysql,nginx",
         "interface": "zabbix.server.lan",
         "ip": "159.168.1.1",
         "port": 12050,
         "version": "8.0.0",
         "variant": 2,
         "config_revision": 1,
         "session": "e3dcbd9ace2c9694e1d7bbd030eeef6e"
       }
Campo Tipo Obligatorio Valor
request string active checks
host string Nombre del equipo.
host_metadata string no El parámetro de configuración HostMetadata o el valor de la métrica HostMetadataItem.
interface string no El parámetro de configuración HostInterface o el valor de la métrica HostInterfaceItem.
ip string no La primera IP del parámetro de configuración ListenIP si está establecido.
port number no El valor del parámetro de configuración ListenPort si está establecido y no es el puerto por defecto de escucha del agente.
version string El número de versión del agente.
variant number Variante del agente (1 - Zabbix agent, 2 - Zabbix agent 2).
config_revision number no Identificador de configuración para la sincronización incremental de configuración.
session string no Identificador de sesión para la sincronización incremental de configuración.

Respuesta del servidor

La respuesta de comprobaciones activas es enviada por el servidor de vuelta al agente después de procesar la solicitud de comprobaciones activas.

{
         "response": "success",
         "config_revision": 2,
         "data": [
           {
             "key": "system.uptime",
             "itemid": 1234,
             "delay": "10s",
             "lastlogsize": 0,
             "mtime": 0
           },
           {
             "key": "agent.version",
             "itemid": 5678,
             "delay": "10m",
             "lastlogsize": 0,
             "mtime": 0,
             "timeout": "30s"
           }
         ],
         "commands": [
           {
             "command": "df -h --output=source,size / | awk 'NR>1 {print $2}'",
             "id": 1324,
             "wait": 1
           }
         ]
       }
Campo Tipo Obligatorio Valor
response string success | failed
info string no Información de error en caso de fallo.
data array of objects no Métricas de comprobaciones activas. Se omite si la configuración del equipo no ha cambiado.
key string no Clave de la métrica con macros expandidas.
itemid number no Identificador de la métrica.
delay string no Intervalo de actualización de la métrica.
Los intervalos flexibles/de programación son compatibles tanto con Zabbix agent como con Zabbix agent 2 desde Zabbix 7.0.
lastlogsize number no lastlogsize de la métrica.
mtime number no mtime de la métrica.
timeout string no timeout de la métrica.
refresh_unsupported number no Intervalo de actualización de métricas no soportadas.
regexp array of objects no Expresiones regulares globales.
name string no Nombre de la expresión regular global.
expression string no Expresión regular global.
expression_type number no Tipo de expresión regular global.
exp_delimiter string no Delimitador de la expresión regular global.
case_sensitive number no Configuración de sensibilidad a mayúsculas/minúsculas de la expresión regular global.
commands array of objects no Comandos remotos a ejecutar. Se incluye si la ejecución de comandos remotos ha sido activada por una operación de acción o por la ejecución manual de un script. Tenga en cuenta que la ejecución de comandos remotos en un agente activo es compatible desde Zabbix agent 7.0. Los agentes activos más antiguos ignorarán cualquier comando remoto incluido en la respuesta de comprobaciones activas del servidor.
command string no Comando remoto.
id number no Identificador del comando remoto.
wait number no Modo de ejecución del comando remoto ("0" (nowait) para comandos de operaciones de acción; "1" (wait) para comandos de ejecución manual de script).
config_revision number no Identificador de configuración para la sincronización incremental de configuración. Se omite si la configuración del equipo no ha cambiado. Se incrementa si la configuración del equipo ha cambiado.

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 y comandos remotos a ejecutar
  4. El agente analiza la respuesta
  5. Se cierra la conexión TCP
  6. El agente inicia la recopilación periódica de datos y ejecuta los comandos remotos (compatible desde Zabbix agent 7.0)

Tenga en cuenta que los datos de configuración (sensibles) pueden estar disponibles para las partes que tengan acceso al puerto trapper del servidor Zabbix al utilizar una comprobación activa. Esto es posible porque cualquiera puede hacerse pasar por un agente activo y solicitar datos de configuración de métricas; la autenticación no se realiza a menos que utilice 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 y los valores de los comandos remotos ejecutados (si los hay).

{
         "request": "agent data",
         "data": [
           {
             "id": 1,
             "itemid": 5678,
             "value": "7.0.0",
             "clock": 1712830783,
             "ns": 76808644
           },
           {
             "id": 2,
             "itemid": 1234,
             "value": "69672",
             "clock": 1712830783,
             "ns": 77053975
           }
         ],
         "commands": [
           {
             "id": 1324,
             "value": "16G"
           }
         ],
         "session": "1234456akdsjhfoui",
         "host": "Zabbix server",
         "version": "8.0.0",
         "variant": 2
       }
Campo Tipo Obligatorio Valor
request string agent data
data array de objetos Valores de métricas.
id number El identificador del valor (contador incremental utilizado para comprobar valores duplicados en caso de problemas de red).
itemid string El identificador de la métrica.
value string no El valor de la métrica.
lastlogsize number no El lastlogsize de la métrica.
mtime number no El mtime de la métrica.
state number no El estado de la métrica.
source string no El origen del registro de eventos del valor.
eventid number no El eventid del registro de eventos del valor.
severity number no La severidad del registro de eventos del valor.
timestamp number no La marca de tiempo del registro de eventos del valor.
clock number La marca de tiempo del valor (segundos desde Epoch).
ns number Nanosegundos de la marca de tiempo del valor.
commands array de objetos no Resultado de la ejecución de comandos remotos. Tenga en cuenta que la ejecución de comandos remotos en un agente activo es compatible desde Zabbix agent 7.0. Los agentes activos más antiguos ignorarán cualquier comando remoto incluido en la respuesta del servidor de comprobaciones activas.
id number no Identificador del comando remoto.
value string no Resultado de la ejecución del comando remoto si la ejecución fue exitosa.
error string no Mensaje de error de ejecución del comando remoto si la ejecución falló.
session string Identificador único de sesión generado cada vez que se inicia el agente.
host string Nombre del equipo.
version string Número de versión del agente.
variant number Variante del agente (1 - Zabbix agent, 2 - Zabbix agent 2).

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

Respuesta del servidor

La respuesta de datos del agente es enviada por el servidor de vuelta 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 string success | failed
info string Resultados del procesamiento de 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 volverá 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 envía el estado de vuelta
  4. La conexión TCP se cierra

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

El mensaje de error se recortará a 2048 símbolos en el lado del servidor.

Mensaje de latido

El agente envía

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

Se utiliza para monitorizar la disponibilidad de las comprobaciones activas.

{
         "request": "active check heartbeat",
         "host": "Zabbix server",
         "heartbeat_freq": 60,
         "version": "8.0.0",
         "variant": 2
       }
Campo Tipo Obligatorio Valor
request string active check heartbeat
host string El nombre del equipo.
heartbeat_freq number La frecuencia de latido del agente (parámetro de configuración HeartbeatFrequency).
version string El número de versión del agente.
variant number La variante del agente (1 - agente de Zabbix, 2 - agente 2 de Zabbix).

Respuesta de redirección

Cuando un equipo ha sido reasignado, el servidor puede instruir al agente para que redirija su latido (y las comprobaciones activas posteriores) a otra instancia de proxy o servidor.

  {
           "response": "failed",
           "redirect": {
             "revision": 2,
             "address": "192.0.2.0:10055"
           }
         }
Campo Tipo Obligatorio Valor
response string success | failed
redirect object Instrucciones de redirección.
revision number Identificador de revisión de configuración.
address string Dirección del servidor/proxy de destino.

Protocolo XML antiguo

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