18 Script-items

Overzicht

Script items kunnen worden gebruikt om gegevens te verzamelen door aangepaste JavaScript-code uit te voeren met de mogelijkheid om gegevens op te halen via HTTP/HTTPS. Naast het script kan een optionele lijst met parameters (paren van naam en waarde) en een time-out worden opgegeven.

Dit type item kan nuttig zijn in gegevensverzamelings-scenario's die meerdere stappen of complexe logica vereisen. Als voorbeeld kan een Script item geconfigureerd worden om een HTTP-oproep te doen, vervolgens de in de eerste stap ontvangen gegevens op een bepaalde manier te verwerken en de getransformeerde waarde door te geven aan de tweede HTTP-oproep.

Script items worden verwerkt door Zabbix-server- of proxy-pollers.

Configuratie

In het Type-veld van het item configuratieformulier selecteer je Script en vul je de vereiste velden in.

script_item.png

Alle verplichte invoervelden zijn gemarkeerd met een rood asterisk.

De velden die specifieke informatie vereisen voor Script items zijn:

Veld Beschrijving
Sleutel Voer een unieke sleutel in die zal worden gebruikt om het item te identificeren.
Parameters Specificeer de variabelen die aan het script moeten worden doorgegeven als attribuut- en waardeparen.
Ingebouwde macro's zoals {HOST.CONN}, {HOST.DNS}, {HOST.HOST}, {HOST.IP}, {HOST.NAME}, {ITEM.ID}, {ITEM.KEY}, {ITEM.KEY.ORIG} en gebruikersmacro's worden ondersteund.
Script Voer JavaScript-code in het blok in dat verschijnt wanneer je in het parameter-veld klikt (of op de knop voor bekijken/bewerken naast het veld). Deze code moet de logica bevatten voor het retourneren van de metrische waarde.
De code heeft toegang tot alle parameters, het kan HTTP GET, POST, PUT en DELETE verzoeken uitvoeren en heeft controle over HTTP-headers en aanvraagbody.
Zie ook: Aanvullende JavaScript-objecten, JavaScript Gids.
Timeout Timeout voor het uitvoeren van JavaScript (1-60s, standaard 3s); als deze wordt overschreden, wordt een foutmelding teruggegeven.
Tijdssuffixen worden ondersteund, bijv. 30s, 1m.
Afhankelijk van het script kan het langer duren voordat de time-out wordt geactiveerd.

Voorbeelden

Simpele gegevensverzameling

Verzamel de inhoud van https://www.example.com/release_notes:

  • Maak een item met het type "Script".
  • Voer in het veld Script het volgende in:
var request = new HttpRequest();
       return request.get("https://www.example.com/release_notes");
Gegevensverzameling met parameters

Verzamel de inhoud van een specifieke pagina en maak gebruik van parameters:

  • Maak een item met het type "Script" en twee parameters:
    • url : {$DOMAIN} (de gebruikersmacro {$DOMAIN} moet gedefinieerd zijn, bij voorkeur op het niveau van de host)
    • subpage : /release_notes

  • Voer in het veld Script het volgende in:
var obj = JSON.parse(value);
       var url = obj.url;
       var subpage = obj.subpage;
       var request = new HttpRequest();
       return request.get(url + subpage);
Meerdere HTTP-verzoeken

Verzamel de inhoud van zowel https://www.example.com als https://www.example.com/release_notes:

  • Maak een item met het type "Script".
  • Voer in het veld Script het volgende in:
var request = new HttpRequest();
       return request.get("https://www.example.com") + request.get("https://www.example.com/release_notes");
Logboekregistratie

Voeg de vermelding "Log test" toe aan het Zabbix-serverlogboek en ontvang als resultaat de itemwaarde "1":

  • Maak een item met het type "Script".
  • Voer in het veld Script het volgende in:
Zabbix.log(3, 'Log test');
       return 1;