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:
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:
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.
Onderaan de lijst is één massabewerkingsoptie beschikbaar:
Om deze optie te gebruiken, markeert u de selectievakjes voor de betreffende scripts en klikt u op Verwijderen.
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.
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 Meldingen → Acties. 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 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 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:
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'.
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.
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.
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).