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.
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.
Respuesta del agente
Arriba, la parte entre corchetes es opcional y solo se envía para métricas no compatibles.
Por ejemplo, para métricas compatibles:
Para métricas no compatibles:
To make sure that Zabbix server or proxy can work with agents from pre-7.0 versions, which have plaintext protocol, a failover to the old protocol is implemented.
Passive checks are performed using the JSON protocol (7.0 and later) after restart or when the interface configuration is changed. If no valid JSON is received in response (agent sent "ZBX_NOTSUPPORTED"), Zabbix will cache the interface as old protocol and retry the check by sending only the item key.
Note that every hour Zabbix server/proxy will again try working with the new protocol with all interfaces, falling back to the old protocol if required.
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.
Desde Zabbix 6.4, el agente (en modo activo) ya no recibe del servidor/proxy una copia completa de la configuración una vez cada dos minutos (predeterminado). En cambio, para disminuir el tráfico de red y el uso de recursos, se realiza una sincronización de configuración incremental cada 5 segundos (predeterminado) en la cual el servidor/proxy proporciona una copia completa de la configuración solo si el agente aún no la ha recibido. , o algo ha cambiado en la configuración del equipo, macros globales o 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.
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:
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.
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.
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:
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.
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.
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). |
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.