You are viewing documentation for the development version, it may be incomplete.
Join our translation project and help translate Zabbix documentation into your native language.

8 Scripts

Overzicht

In de sectie Meldingen → Scripts kunnen door de gebruiker gedefinieerde globale scripts worden geconfigureerd en onderhouden.

Afhankelijk van de geconfigureerde reikwijdte en ook gebruikersmachtigingen zijn wereldwijde scripts beschikbaar voor uitvoering:

  • vanuit het hostmenu op verschillende locaties in de frontend (Dashboard, Problemen, Laatste gegevens, Kaarten, enz.)
  • vanuit het gebeurtenismenu
  • kunnen worden uitgevoerd als actiebewerking

De scripts worden uitgevoerd op Zabbix-agent, Zabbix-server (proxy) of alleen Zabbix-server. Zie ook Commando-uitvoering.

Zowel op Zabbix-agent als op Zabbix-proxy zijn externe scripts standaard uitgeschakeld. Ze kunnen worden ingeschakeld door:

  • Voor externe commando's uitgevoerd op Zabbix-agent:
    • het toevoegen van een parameter AllowKey=system.run[<commando>,*] voor elk toegestaan commando in de agentconfiguratie, * staat voor de modus 'wachten' en 'nuait';
  • Voor externe commando's uitgevoerd op Zabbix-proxy:
    • Waarschuwing: Het is niet nodig om externe commando's in te schakelen op Zabbix-proxy als externe commando's worden uitgevoerd op Zabbix-agent die wordt gecontroleerd door Zabbix-proxy. Als echter vereist is dat externe commando's worden uitgevoerd op Zabbix-proxy, stelt u de parameter EnableRemoteCommands in op '1' in de proxyconfiguratie.

Er wordt een lijst weergegeven van bestaande scripts met hun details.

Weergegeven gegevens:

Kolom Omschrijving
Naam Naam van het script. Door op de naam van het script te klikken, wordt het configuratieformulier van het script geopend.
Reikwijdte Reikwijdte van het script - actiebewerking, handmatige hostactie of handmatige gebeurtenisactie. Deze instelling bepaalt waar het script beschikbaar is.
Gebruikt in acties Acties waarin het script wordt gebruikt, worden weergegeven.
Type Het scripttype wordt weergegeven - URL, Webhook, Script, SSH, Telnet of IPMI-opdracht.
Uitvoeren op Er wordt weergegeven of het script wordt uitgevoerd op Zabbix-agent, Zabbix-server (proxy) of alleen Zabbix-server.
Opdrachten Alle opdrachten die binnen het script moeten worden uitgevoerd, worden weergegeven.
Gebruikersgroep De gebruikersgroep waarvoor het script beschikbaar is, wordt weergegeven (of Alle voor alle gebruikersgroepen).
Hostgroep De hostgroep waarvoor het script beschikbaar is, wordt weergegeven (of Alle voor alle hostgroepen).
Hosttoegang Het machtigingsniveau voor de hostgroep wordt weergegeven - Lezen of Schrijven. Alleen gebruikers met het vereiste machtigingsniveau hebben toegang tot het uitvoeren van het script.

Om een nieuw script te configureren, klikt u op de knop Script maken in de rechterbovenhoek.

Massabewerkingsopties

Onderaan de lijst is één massabewerkingsoptie beschikbaar:

  • Verwijderen - de scripts verwijderen

Om deze optie te gebruiken, markeert u de selectievakjes voor de betreffende scripts en klikt u op Verwijderen.

Gebruik van filter

U kunt de filter gebruiken om alleen de scripts weer te geven waarin u geïnteresseerd bent. Voor betere zoekprestaties wordt gezocht met onopgeloste macro's.

De Filter-koppeling is beschikbaar boven de lijst met scripts. Als u erop klikt, wordt een filter beschikbaar waarin u scripts kunt filteren op naam en reikwijdte.

Een wereldwijd script configureren

Afbeelding

Script attributen:

Parameter Beschrijving
Naam Unieke naam van het script.
Bijvoorbeeld Clear /tmp filesystem
Reikwijdte Reikwijdte van het script - actiebewerking, handmatige hostbewerking of handmatige gebeurtenisbewerking. Deze instelling bepaalt waar het script kan worden gebruikt - in externe opdrachten van actiebewerkingen, vanuit het hostmenu of vanuit het gebeurtenismenu respectievelijk.
Het instellen van de reikwijdte op 'Actiebewerking' maakt het script beschikbaar voor alle gebruikers met toegang tot MeldingenActies.
Als een script daadwerkelijk wordt gebruikt in een actie, kan de reikwijdte niet worden gewijzigd vanaf 'actiebewerking'.
Macro-ondersteuning
De reikwijdte beïnvloedt het bereik van beschikbare macro's. Bijvoorbeeld, gebruikersgerelateerde macro's ({USER.*}) worden ondersteund in scripts om informatie door te geven over de gebruiker die het script heeft gestart. Ze worden echter niet ondersteund als de reikwijdte van het script actiebewerking is, omdat actiebewerkingen automatisch worden uitgevoerd.
Om te achterhalen welke macro's worden ondersteund, zoekt u naar 'Trigger-gebaseerde meldingen en opdrachten/Trigger-gebaseerde opdrachten', 'Scripts voor handmatige hostacties' en 'Scripts voor handmatige gebeurtenisacties' in de tabel met ondersteunde macro's. Houd er rekening mee dat als een macro kan resulteren in een waarde met spaties (bijvoorbeeld hostnaam), u deze waar nodig moet aanhalen.
Menupad Het gewenste menupad naar het script. Bijvoorbeeld Standaard of Standaard/, hiermee wordt het script weergegeven in de respectieve map. Menu's kunnen genest zijn, bijvoorbeeld Hoofdmenu/Submenu1/Submenu2. Bij het openen van scripts via het host/gebeurtenismenu in de monitoringsecties worden ze georganiseerd volgens de opgegeven mappen.
Dit veld wordt alleen weergegeven als 'Handmatige hostactie' of 'Handmatige gebeurtenisactie' is geselecteerd als Reikwijdte.
Type Klik op de respectieve knop om het scripttype te selecteren:
URL, Webhook, Script, SSH, Telnet of IPMI commando.
Het type URL is alleen beschikbaar wanneer 'Handmatige hostactie' of 'Handmatige gebeurtenisactie' is geselecteerd als Reikwijdte.
Scripttype: URL
^ URL
^ In nieuw venster openen
Scripttype: Webhook
^ Parameters

Advanced configuration

Advanced configuration options are available in a collapsible Advanced configuration section:

Parameter Description
Enable user input Mark the checkbox to enable manual user input before executing the script.
Manual user input will replace the {MANUALINPUT} macro value in the script.
See also: Manual user input.
Input prompt Enter custom text prompting for custom user input. This text will be displayed above the input field in the Manual input popup.
To see a preview of the Manual input popup, click on Test user input. The preview also allows to test if the input string complies with the input validation rule (see parameters below).
Macro and user macro support depends on the scope of the script (see Scope in general script configuration parameters).
Input type Select the manual input type:
String - single string;
Dropdown - value is selected from multiple dropdown options.
Dropdown options Enter unique values for the user input dropdown in a comma-delimited list.
To include an empty option in the dropdown, add an extra comma at the beginning, middle, or end of the list.
This field is displayed only if 'Dropdown' is selected as Input type.
Default input string Enter the default string for user input (or none).
This field will be validated against the regular expression provided in the Input validation rule field.
The value entered here will be displayed by default in the Manual input popup.
This field is displayed only if 'String' is selected as Input type.
Input validation rule Enter a regular expression to validate the user input string.
Global regular expressions are supported.
This field is displayed only if 'String' is selected as Input type.
Enable confirmation Mark the checkbox to display a confirmation message before executing the script. This feature might be especially useful with potentially dangerous operations (like a reboot script) or ones that might take a long time.
Confirmation text Enter custom confirmation text for the confirmation popup enabled with the checkbox above (for example, Remote system will be rebooted. Are you sure?). To see how the text will look like, click on Test confirmation next to the field.
Macros and custom user macros are supported.
Note: the macros will not be expanded when testing the confirmation message.

If both manual user input and a confirmation message are configured, they will be displayed in consecutive popup windows.

Manual user input

Manual user input allows to supply a custom parameter on each execution of the script. This saves the necessity to create multiple similar user scripts with only a single parameter difference.

For example, you may want to supply a different integer or a different URL address to the script during execution.

To enable manual user input:

  • use the {MANUALINPUT} macro in the script (commands, script, script parameter) where required; or in the URL field of URL scripts;
  • in advanced script configuration, enable manual user input and configure input options.

With user input enabled, before script execution, a Manual input popup will appear to the user asking to supply a custom value. The supplied value will replace {MANUALINPUT} in the script.

Depending on the configuration, the user will be asked to enter a string value:

Or select the value from a dropdown of pre-determined options:

Manual user input is available only for scripts where the scope is 'Manual host action' or 'Manual event action'.

Uitvoering van scripts en resultaat

Scripts die worden uitgevoerd door de Zabbix-server worden uitgevoerd in de volgorde zoals beschreven in de sectie Opdrachtuitvoering, inclusief controle op de exitcode. Het resultaat van het script wordt weergegeven in een pop-upvenster dat verschijnt nadat het script is uitgevoerd.

Opmerking: De retourwaarde van het script is de standaarduitvoer samen met de standaardfout.

Zie hieronder een voorbeeld van een script en het resultaatvenster:

uname -v
       /tmp/non_existing_script.sh
       echo "Dit script is gestart door {USER.USERNAME}"

Het resultaat van het script toont het script zelf niet.

Time-out voor script

Zabbix-agent

Het kan voorkomen dat er een time-out optreedt tijdens de uitvoering van een script.

Hieronder ziet u een voorbeeld van een script dat wordt uitgevoerd op de Zabbix-agent en het resultaatvenster:

sleep 5
       df -h

In dit geval is de foutmelding als volgt:

Time-out tijdens het uitvoeren van een shell-script.

Om dergelijke situaties te voorkomen, wordt geadviseerd om het script zelf te optimaliseren in plaats van de Time-out parameter aan te passen naar een overeenkomstige waarde (in het bovenstaande voorbeeld, > '5') in de Zabbix-agent configuratie en Zabbix-server configuratie.

Als de Time-out parameter wordt gewijzigd in de Zabbix-agent configuratie, wordt de volgende foutmelding weergegeven:

Get value from agent failed: ZBX_TCP_READ() is verlopen.

Dit betekent dat er wijzigingen zijn aangebracht in de Zabbix-agent configuratie, maar dat het ook nodig is om de Time-out instelling in de Zabbix-server configuratie aan te passen.

Zabbix-server/proxy

Zie hieronder een voorbeeld van een script dat wordt uitgevoerd op de Zabbix-server en het resultaatvenster:

sleep 11
       df -h

Het wordt ook geadviseerd om het script zelf te optimaliseren (in plaats van de TrapperTimeout parameter aan te passen naar een overeenkomstige waarde, zoals in ons geval > '11', door de Zabbix-serverconfiguratie aan te passen).