This is a translation of the original English documentation page. Help us make it better.

10 Commando-uitvoering

Zabbix maakt gebruik van gemeenschappelijke functionaliteit voor externe controles, gebruikersparameters, system.run-items, aangepaste waarschuwingsscripts, externe opdrachten en globale scripts.

Uitvoeringsstappen

Standaard worden alle scripts in Zabbix uitgevoerd met behulp van de sh-shell, en het is niet mogelijk om de standaardshell te wijzigen. Als u een andere shell wilt gebruiken, kunt u een workaround gebruiken: maak een scriptbestand aan en roep dat script aan tijdens de uitvoering van de opdracht.

De opdracht/het script wordt op een vergelijkbare manier uitgevoerd op zowel Unix- als Windows-platforms:

  1. Zabbix (het ouderproces) maakt een pijp aan voor communicatie.
  2. Zabbix stelt de pijp in als de uitvoer voor het te maken kindproces.
  3. Zabbix maakt het kindproces aan (voert de opdracht/het script uit).
  4. Er wordt een nieuwe procesgroep (op Unix) of een taak (op Windows) gemaakt voor het kindproces.
  5. Zabbix leest uit de pijp totdat de time-out optreedt of er niemand schrijft naar het andere uiteinde (ALLE handvatten/bestandsdescriptoren zijn gesloten). Merk op dat het kindproces meer processen kan creëren en kan afsluiten voordat deze processen afsluiten of het handvat/bestandsdescriptor sluiten.
  6. Als de time-out nog niet is bereikt, wacht Zabbix totdat het oorspronkelijke kindproces afsluit of de time-out optreedt.
  7. Als het oorspronkelijke kindproces is afgesloten en de time-out nog niet is bereikt, controleert Zabbix de exitcode van het oorspronkelijke kindproces en vergelijkt deze met 0 (een niet-nulwaarde wordt beschouwd als uitvoeringsfout, alleen voor aangepaste waarschuwingscripts, externe opdrachten en gebruikerscripts die worden uitgevoerd op de Zabbix-server en Zabbix-proxy).
  8. Op dit punt wordt ervan uitgegaan dat alles is voltooid en de hele processtructuur (d.w.z. de procesgroep of de taak) wordt beëindigd.

Zabbix gaat ervan uit dat een opdracht/het script is voltooid wanneer het oorspronkelijke kindproces is afgesloten EN er geen enkel ander proces nog steeds het uitvoerhandvat/bestandsdescriptor open houdt. Wanneer de verwerking is voltooid, worden ALLE gemaakte processen beëindigd.

Alle dubbele aanhalingstekens en schuine strepen in de opdracht worden geëscaped met schuine strepen en de opdracht wordt tussen dubbele aanhalingstekens geplaatst.

Exit code-controle

Exitcodes worden gecontroleerd aan de hand van de volgende voorwaarden:

  • Alleen voor aangepaste waarschuwingscripts, externe opdrachten en gebruikerscripts die worden uitgevoerd op de Zabbix-server en de Zabbix-proxy.
  • Elke exitcode die verschilt van 0 wordt beschouwd als uitvoeringsfout.
  • Inhoud van standaardfout en standaarduitvoer voor mislukte uitvoeringen wordt verzameld en is beschikbaar in de frontend (waar het uitvoeringsresultaat wordt weergegeven).
  • Er wordt een extra logboekvermelding gemaakt voor externe opdrachten op de Zabbix-server om de uitvoer van het script op te slaan, en dit kan worden ingeschakeld met de parameter LogRemoteCommands van de agent.

Mogelijke frontend-meldingen en logboekvermeldingen voor mislukte opdrachten/scripts:

  • Inhoud van standaardfout en standaarduitvoer voor mislukte uitvoeringen (indien aanwezig).
  • "Proces afgesloten met code: N." (voor lege uitvoer en exitcode ongelijk aan 0).
  • "Proces beëindigd door signaal: N." (voor processen die zijn beëindigd door een signaal, alleen op Linux).
  • "Proces onverwacht beëindigd." (voor processen die om onbekende redenen zijn beëindigd).

Lees meer over:

See also