2 Verificacions dels agents actius i passius

Vista general

Aquesta secció detalla les verificacions actives i passives que fa l'agent Zabbix.

Zabbix empra un protocol de comunicacions basat en JSON per comunicar-se amb l'agent Zabbix.

Veieu també els detalls del protocol de l'Agent Zabbix 2.

Verificacions passives

Una verificació passiva és una petició simple de dades. El servidor o el proxy Zabbix demanen dades (per exemple, la càrrega del processador) i l'agent Zabbix retorna el resultat al sevidor.

**Petició del servidor **

Per la definició de l'encapçalament i la longitud de les dades, veieu els détalls del protocol.

<item key>

Respossta de l'agent

<DATA>[\0<ERROR>]

A sota, la part en claudàtors és opcional i només s'envia per als elements no admesos.

Per exemple, per elements admesos:

  1. El servidor obre una connexió TCP
  2. El servidor envia <HEADER><DATALEN>agent.ping
  3. L'agent llegeix la petició i respon amb <HEADER><DATALEN>1
  4. El servidor tracta les dades per obtindre el valor, '1' en el nostre cas
  5. Es tanca la connexió TCP

Per els elements no admesos:

  1. El servidor obre una connexió TCP
  2. El servidor envia <HEADER><DATALEN>vfs.fs.size[/nono]
  3. L'agent llegeix la petició i respon amb <HEADER><DATALEN>ZBX_NOTSUPPORTED\0Cannot obtain filesystem information: [2] No such file or directory
  4. El servidor tracta les dades i modifica l'estat de l'element a no suportat, amb el missatge d'error especificat.
  5. Es tanca la connexió TCP

Verificacions actives

Les verificacions actives tenen un tractament més complexe. L'agent primer ha de recuperar dels servidors una llista d'elements per un tractament independent.

Els servidors des d'on obtenim les verificacions actives són llistats al paràmetre 'ServerActive' de l'arxiu de configuració de l'agent. La freqüència de les peticions per les verificacions es defineix amb el paràmetre 'RefreshActiveChecks' del mateix arxiu de configuració. Tanmateix, si el refresc de les verificacions actives falla, es tornarà a provar després de 60 segons.

Per tal de reduir el trànsit de la xarxa i l'ús de recursos, el servidor Zabbix o el proxy Zabbix només proporcionaran configuració si l'agent Zabbix encara no ha rebut la configuració o si alguna cosa ha canviat en la configuració de l'equip, les macros globals o les expressions regulars globals.

Aleshores, l'agent envia periòdicament els nous valors als servidors.

Si un agent és darrere un tallafocs, considereu a emprar només les verificacions actives doncs, en aquest cas, no tindreu pas necessitat de modificar el tallafocs per permetre connexions entrants inicials.

Obtindre la llista d'elements

Petició de l'agent

La petició de les verificacions actives s'empra per obtindre les verificacions actives a tractar per l'agent. Aquesta petició s'envia per l'agent a l'iniciar, i després amb els intervals 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"
       }
Camp Tipus Obligatori Valor
request string active checks
host string Nom d'equip.
host_metadata string no El paràmetre de configuració HostMetadata o el valor de mètrica HostMetadataItem.
hostinterface string no El valor de mètrica del paràmetre de configuració HostInterface o HostInterfaceItem.
ip string no El paràmetre de configuració ListenIP first IP, si s'ha definit.
port number no El valor del paràmetre de configuració ListenPort si s'ha definit i no pas el port d'escola per defecte de l'agent.
config_revision number no Identificador de configuració per sincronització incremental de la configuració.
session string no Identificador de la sessió per sincronització incremental de la configuració.

Resposta del servidor

La resposta de les verificacions actives s'envien per el servidor a l'agent després del tractament de la petició de verificacions actives.

{
         "response": "success",
         "data": [
           {
             "key": "log[/home/zabbix/logs/zabbix_agentd.log]",
             "key_orig": "log[/home/zabbix/logs/zabbix_agentd.log]",
             "itemid": 1234,
             "delay": "30s",
             "lastlogsize": 0,
             "mtime": 0
           },
           {
             "key": "agent.version",
             "key_orig": "agent.version",
             "itemid": 5678,
             "delay": "10m",
             "lastlogsize": 0,
             "mtime": 0
           }
         ]
       }
Camp Tipus Obligatori Valor
response string success | failed
info string no Informacions d'error en cas de fallida.
data array of objects no Elements de verificacions actius.
key string no Clau d'element amb macros esteses.
key_orig string no Clau d'element sense macros esteses.
itemid number no Identificador d'element.
delay string no Interval d'actualització de l'element.
lastlogsize number no Darrera mida del registre de l'element.
mtime number no Mtime de l'element.
refresh_unsupported number no Interval d'actualització dels elements no suportats.
regexp array of objects no Expressions regulars globals.
name string no Nom de l'expressió regular global.
expression string no Expression régulière globale.
expression_type number no Tipus de l'expressió regular global.
exp_delimiter string no Delimitador de l'expressió regular global.
case_sensitive number no Paràmetre global de sensibilitat a majúscules de les expressions regulars.
config_revision number no Identificador de la configuració per sincronització incremental de la configuració. Omès si la configuració de l'equip no s'ha canviat. S'incrementa si la configuració de l'equip ha canviat.

El servidor ha de respondre amb èxit.

Per exemple :

  1. L'agent obre una connexió TCP
  2. L'agent demana la llista de verificacions
  3. El servidor contesta amb una llista d'elements (clau d'element, retard)
  4. L'agent analitza la resposta
  5. Es tanca la connexió TCP
  6. L'agent comença la recollida periòdica de dades

Veieu que les dades de configuració (sensibles) poden ésser disponibles per a les persones que tinguin accés al port del trapper del servidor Zabbix quan emprin verificació activa. Això és possible perquè tot el món pot pretendre tindre un agent actiu i demanar informació de configuració d'elements. L'autenticació no té lloc excepte que empreu les opcions de xifrat.

Enviament de les dades recollides

Enviament de l'agent

La petició de dades de l'agent conté els valors recollits de l'element.

{
         "request": "agent data",
         "data": [
           {
             "host": "Zabbix server",
             "key": "agent.version",
             "value": "2.4.0",
             "clock": 1400675595,
             "ns": 76808644
           },
           {
             "host": "Zabbix server",
             "key": "log[/home/zabbix/logs/zabbix_agentd.log]",
             "lastlogsize": 112,
             "value": " 19845:20140621:141708.521 Starting Zabbix Agent [<hostname>]. Zabbix 2.4.0 (revision 50000).",
             "clock": 1400675595,
             "ns": 77053975
           }
         ],
         "session": "1234456akdsjhfoui"
       }
Camp Tipus Obligatori Valor
request string yes dades de l'agent
session string yes Identificador de sessió únic generat cada vegada que s'inicia l'agent.
data array of objects yes Valors de l'element.
id number yes L'identificador del valor (comptador incremental emprat per comprovar els valors duplicats en cas de problemes de xarxa).
host string yes Nom de l'equip.
key string yes Clau de l'element.
value string no Valor de l'article.
lastlogsize number no Darrera mida del registre.
mtime number no Element mtime.
state number no Estat de l'element.
source string no Font del registre d'esdeveniments del valor.
eventid number no El valor del registre d'esdeveniments eventd.
severity number no El valor de gravetat del registre d'esdeveniments.
timestamp number no La marca de temps del registre d'esdeveniments del valor.
clock number yes La marca de temps del valor (segons des de l'Època.
ns number yes El valor de marca de temps nanosegons.

S'assigna un identificador virtual a cada valor. El valor ID és un comptador ascendent simple, únic dins d'una sessió de dades (identificat per el token de la sessió). Aquest identificador s'empra per descartar els valors duplicats que es poden enviar a entorns de connectivitat pobra.

Resposta del servidor

El servidor torna a enviar la resposta de dades de l'agent a l'agent després de processar la petició de dades de l'agent.

{
         "resposta": "èxit",
          "info": "processat: 2; fallat: 0; total: 2; segons dedicats: 0,003534"
       }
Camp Tipus Obligatori Valor
resposta cadena èxit | fallit
informació cadena Resultats del processament d'articles.

::: noteimportant Si l'enviament d'alguns valors falla al servidor (per exemple, perquè l'equip o l'element s'ha desactivat o suprimit), l'agent no tornarà a provar d'enviar aquests valors. :::

Per exemple:

  1. L'agent obre una connexió TCP
  2. L'agent envia una llista de valors
  3. El servidor processa les dades i torna a enviar l'estat
  4. La connexió TCP es tanca

Tingueu en compte com a l'exemple anterior l'estat no compatible per vfs.fs.size[/nono] s'indica amb el valor "estat" 1 i el missatge d'error a la propietat "valor".

El missatge d'error es retallarà a 2048 símbols de la banda del servidor.

Missatge de Heartbeat

El missatge de heartbeat l'envia un agent actiu al servidor/proxy de Zabbix cada segons de HeartbeatFrequency (configurat al fitxer de configuració de l'agent Zabbix).

S'empra per controlar la disponibilitat de controls actius.

{
          "request": "active check heartbeat",
          "host": "Servidor Zabbix",
          "heartbeat_freq": 60
       }
Camp Tipus Obligatori Valor
petició cadena comprovació activa del heartbeat
host cadena El nom de l'equip.
heartbeat_freq nombre Freqüència de heartbeat de l'agent (paràmetre de configuració HeartbeatFrequency).

Antic protocol XML

Zabbix prendrà fins a 16Mo de dades codificades en XML Base64, però un sol valor descodificat no haurà de passar els 64Ko, sinó es retallarà a 64Ko mentre es descodifiqui.