10 Execució de comanda

Zabbix empra funcionalitats comunes per les verificacions externes, paràmetres d'usuari, elements de system.run, els scripts personalitzats d'alertes, comandes remotes i scripts d'usuaris.

Passes d'execució

Per defecte, tots els scripts de Zabbix s'executen emprant l'intèrpret d'ordres sh, i no és possible modificar l'intèrpret d'ordres predeterminat. Per emprar una shell diferent, podeu emprar una solució alternativa: creeu un fitxer d'script i invoqueu aquest script durant l'execució de l'ordre.

La comanda/script s'executa de manera similar a les plataformes Unix i Windows:

  1. Zabbix (el procés principal) crea un canal de comunicació
  2. Zabbix estableix el canal com a sortida del procés fill que s'ha de crear
  3. Zabbix crea un procés fill (executa l'ordre/script)
  4. Es crea un nou grup de processos (a Unix) o una tasca (a Windows) per al procés fill.
  5. Zabbix llegeix l'entrada fins que el temps d'espera o fins que ningú escrigui a l'altre extrem (s'han tancat TOTS els identificadors/els fitxers). Tingueu en compte que el procés fill pot crear diversos processos i acabar abans que surtin o tanquin el controlador/identificador del fitxer.
  6. Si no s'ha arribat al temps d'espera, Zabbix espera fins que acabi el procés secundari inicial o que hagi transcorregut el temps d'espera.
  7. Si el procés secundari inicial ha acabat i no s'ha superat el temps d'espera, Zabbix comprova el codi de sortida del procés secundari inicial i el compara amb 0 (un valor diferent de zero es considera un error d'execució, només per als scripts d'alerta personalitzats, ordres remotes i scripts d'usuari que s'executen al servidor Zabbix i al proxy Zabbix)
  8. En aquest punt, se suposa que tot està fet i que tot l'arbre del procés (és a dir, el grup de processos o el treball) ha acabat.

::: nota important Zabbix assumeix que s'ha processat una ordre/script quan el procés fill inicial hagi acabat I cap altre procés encara mantingui obert el descriptor de sortida/descriptor de fitxer. Quan s'ha completat el processament, acaben TOTS els processos creats. :::

Totes les cometes dobles i les barres inclinades invertides de l'ordre s'escapen amb barres invertides i l'ordre s'inclou entre cometes.

Comprovació del codi de sortida

El codi de sortida es comprova amb les condicions següents:

  • Només per a scripts d'alerta personalitzats, ordres remotes i scripts d'usuari que s'executen al servidor Zabbix i al proxy Zabbix.
  • Qualsevol codi de sortida diferent de 0 es considera un error d'execució.
  • El contingut de l'error estàndard i la sortida estàndard de les execucions fallides es recullen i són disponibles a la interfície (on es mostra el resultat de l'execució).
  • Es crea una entrada de registre addicional per a ordres remotes al servidor Zabbix per desar els resultats de l'execució de l'script. Es pot activar mitjançant el paràmetre d'agent LogRemoteCommands.

Possibles missatges de la interfície web i entrades de registre per a ordres/scripts erronis:

  • Contingut d'error estàndard i sortida estàndard per a execucions fallides (si n'hi han).
  • "S'ha sortit del procés amb el codi: N." (per a una sortida buida i un codi de sortida diferent de 0).
  • "Procés mort per el senyal: N." (per al procés finalitzat amb un senyal, només a Linux).
  • "El procés va acabar inesperadament". (perquè el procés s'ha aturat per motius desconeguts).

Veieu també