Deze sectie beschrijft Zabbix-toevoegingen aan de JavaScript-taal die zijn geïmplementeerd met Duktape en ondersteunde globale JavaScript-functies.
Het Zabbix-object biedt interactie met de interne Zabbix-functionaliteit.
Methode | Omschrijving |
---|---|
log(loglevel, message) |
Schrijft <message> in het Zabbix-logboek met gebruik van het logniveau <loglevel> (zie configuratiebestand DebugLevel parameter). |
Voorbeeld:
Je kunt de volgende aliassen gebruiken:
Alias | Alias voor |
---|---|
console.log(object) | Zabbix.log(4, JSON.stringify(object)) |
console.warn(object) | Zabbix.log(3, JSON.stringify(object)) |
console.error(object) | Zabbix.log(2, JSON.stringify(object)) |
De totale grootte van alle gelogde berichten is beperkt tot 8 MB per scriptuitvoering.
Methode | Omschrijving |
---|---|
sleep(delay) |
Vertraagt de uitvoering van JavaScript met delay milliseconden. |
Voorbeeld (vertraagt de uitvoering 15 seconden):
"HttpRequest" is een nieuwe naam voor dit object sinds Zabbix 5.4. Eerder stond het bekend als "CurlHttpRequest". Ook de methodenamen zijn veranderd in Zabbix 5.4. De oude object-/methodenamen worden nu afgekeurd en hun ondersteuning wordt stopgezet na Zabbix 6.0.
Dit object omhult een cURL-handle om eenvoudige HTTP-verzoeken te maken. Fouten worden als uitzonderingen gemeld.
De initialisatie van meerdere HttpRequest
-objecten is beperkt tot 10 per scriptuitvoering.
Methode | Omschrijving |
---|---|
addHeader(value) |
Voegt een HTTP-koptekstveld toe. Dit veld wordt gebruikt voor alle volgende verzoeken totdat het wordt gewist met de methode clearHeader() .De totale lengte van de koptekstvelden die aan een enkel HttpRequest -object kunnen worden toegevoegd, is beperkt tot 128 Kbytes (speciale tekens en koptekstnamen inbegrepen). |
clearHeader() |
Wist de HTTP-koptekst. Als er geen koptekstvelden zijn ingesteld, zal HttpRequest Content-Type instellen op application/json als de te posten gegevens JSON-opmaak hebben; anders text/plain. |
connect(url) |
Verstuurt een HTTP CONNECT-verzoek naar de URL en geeft de reactie terug. |
customRequest(method, url, data) |
Staat toe om in het eerste parameter een willekeurige HTTP-methode op te geven. Verstuurt het methodeverzoek naar de URL met optionele data-lading en geeft de reactie terug. |
delete(url, data) |
Verstuurt een HTTP DELETE-verzoek naar de URL met optionele data-lading en geeft de reactie terug. |
getHeaders(<asArray>) |
Geeft het object van ontvangen HTTP-koptekstvelden terug. De parameter asArray kan worden ingesteld op "true" (bijv. getHeaders(true) ), "false" of niet gedefinieerd zijn. Als deze op "true" wordt ingesteld, worden de ontvangen waarden van HTTP-koptekstvelden als arrays geretourneerd; dit moet worden gebruikt om de veldwaarden van meerdere koptekstvelden met dezelfde naam op te halen.Als niet ingesteld of ingesteld op "false", worden de ontvangen waarden van HTTP-koptekstvelden als strings geretourneerd. |
get(url, data) |
Verstuurt een HTTP GET-verzoek naar de URL met optionele data-lading en geeft de reactie terug. |
head(url) |
Verstuurt een HTTP HEAD-verzoek naar de URL en geeft de reactie terug. |
options(url) |
Verstuurt een HTTP OPTIONS-verzoek naar de URL en geeft de reactie terug. |
patch(url, data) |
Verstuurt een HTTP PATCH-verzoek naar de URL met optionele data-lading en geeft de reactie terug. |
put(url, data) |
Verstuurt een HTTP PUT-verzoek naar de URL met optionele data-lading en geeft de reactie terug. |
post(url, data) |
Verstuurt een HTTP POST-verzoek naar de URL met optionele data-lading en geeft de reactie terug. |
getStatus() |
Geeft de statuscode van het laatste HTTP-verzoek terug. |
setProxy(proxy) |
Stelt de HTTP-proxy in op de waarde "proxy". Als deze parameter leeg is, wordt geen proxy gebruikt. |
setHttpAuth(bitmask, username, password) |
Stelt ingeschakelde HTTP-authenticatiemethoden (HTTPAUTH_BASIC, HTTPAUTH_DIGEST, HTTPAUTH_NEGOTIATE, HTTPAUTH_NTLM, HTTPAUTH_NONE) in het 'bitmask'-parameter in. De HTTPAUTH_NONE-vlag maakt het mogelijk om HTTP-authenticatie uit te schakelen. Voorbeelden: request.setHttpAuth(HTTPAUTH_NTLM \| HTTPAUTH_BASIC, username, password) request.setHttpAuth(HTTPAUTH_NONE) |
trace(url, data) |
Verstuurt een HTTP TRACE-verzoek naar de URL met optionele data-lading en geeft de reactie terug. |
Voorbeeld:
try {
Zabbix.log(4, 'jira webhook script value='+value);
var result = {
'tags': {
'endpoint': 'jira'
}
},
params = JSON.parse(value),
req = new HttpRequest(),
fields = {},
resp;
req.addHeader('Content-Type: application/json');
req.addHeader('Authorization: Basic '+params.authentication);
fields.summary = params.summary;
fields.description = params.description;
fields.project = {"key": params.project_key};
fields.issuetype = {"id": params.issue_id};
resp =
req.post('https://tsupport.zabbix.lan/rest/api/2/issue/',
JSON.stringify({"fields": fields})
);
if (req.getStatus() != 201) {
throw 'Response code: '+req.getStatus();
}
resp = JSON.parse(resp);
result.tags.issue_id = resp.id;
result.tags.issue_key = resp.key;
} catch (error) {
Zabbix.log(4, 'jira issue creation failed json : '+JSON.stringify({"fields": fields}));
Zabbix.log(4, 'jira issue creation failed : '+error);
result = {};
}
return JSON.stringify(result);
Het XML-object maakt de verwerking van XML-gegevens mogelijk in item- en voorverwerkingsfuncties voor lage niveaus en webhooks.
Om het XML-object te gebruiken, moet de server/proxy zijn gecompileerd met libxml2-ondersteuning.
Methode | Omschrijving |
---|---|
XML.query(data, expression) |
Haalt knooppuntinhoud op met behulp van XPath. Geeft null terug als het knooppunt niet wordt gevonden. expression - een XPath-expressie; data - XML-gegevens als een tekenreeks. |
XML.toJson(data) |
Converteert gegevens in XML-indeling naar JSON. |
XML.fromJson(object) |
Converteert gegevens in JSON-indeling naar XML. |
Voorbeeld:
Invoer:
<menu>
<food type = "breakfast">
<name>Chocolate</name>
<price>$5.95</price>
<description></description>
<calories>650</calories>
</food>
</menu>
Uitvoer:
{
"menu": {
"food": {
"@type": "breakfast",
"name": "Chocolate",
"price": "$5.95",
"description": null,
"calories": "650"
}
}
}
De XML-naar-JSON-conversie wordt uitgevoerd volgens de volgende regels (voor de omgekeerde conversie van JSON naar XML worden omgekeerde regels toegepast):
1. XML-attributen worden geconverteerd naar sleutels waarvan de namen worden voorafgegaan door '@'.
Voorbeeld:
Invoer:
Uitvoer:
2. Zelfafsluitende elementen (<foo/>) worden geconverteerd alsof ze de waarde 'null' hebben.
Voorbeeld:
Invoer:
Uitvoer:
3. Lege attributen (met een "" waarde) worden geconverteerd alsof ze de lege tekenreeks ('') als waarde hebben.
Voorbeeld:
Invoer:
Uitvoer:
4. Meerdere kindknopen met dezelfde elementnaam worden geconverteerd naar een enkele sleutel met een array van waarden als zijn waarde.
Voorbeeld:
Invoer:
Uitvoer:
5. Als een tekstelement geen attributen en geen kinderen heeft, wordt het geconverteerd als een tekenreeks.
Voorbeeld:
Invoer:
Uitvoer:
6. Als een tekstelement geen kinderen heeft, maar wel attributen heeft: de tekstinhoud wordt geconverteerd naar een element met de sleutel '#text' en de inhoud als waarde; attributen worden geconverteerd zoals beschreven in regel 1 van de serialisatie.
Voorbeeld:
Invoer:
Uitvoer:
Aanvullende wereldwijde JavaScript-functies zijn geïmplementeerd met Duktape:
try {
b64 = btoa("utf8-string");
utf8 = atob(b64);
}
catch (error) {
return {'error.name' : error.name, 'error.message' : error.message}
}
md5(data) - berekent de MD5-hash van de gegevens
sha256(data) - berekent de SHA256-hash van de gegevens
hmac('<hash type>',key,data) - retourneert de HMAC-hash als hexadecimaal geformatteerde string; MD5- en SHA256-hashtypen worden ondersteund; key- en data-parameters ondersteunen binaire gegevens. Voorbeelden:
hmac('md5',key,data)
hmac('sha256',key,data)
sign(hash,key,data) - retourneert de berekende handtekening (RSA-handtekening met SHA-256) als een string, waar:
hash - alleen 'sha256' is toegestaan, anders wordt er een foutmelding weergegeven;
key - de privésleutel. Het moet overeenkomen met de PKCS#1- of PKCS#8-standaard. De sleutel kan op verschillende manieren worden opgegeven:
De sleutel kan ook worden geladen vanuit een gebruikersmacro/geheime macro/kluis.
data - de gegevens waarvoor de handtekening wordt gemaakt. Het kan een string zijn (binaire gegevens worden ook ondersteund) of een buffer (Uint8Array/ArrayBuffer).
OpenSSL of GnuTLS wordt gebruikt om de handtekeningen te berekenen. Als Zabbix is gebouwd zonder een van deze encryptiebibliotheken, wordt er een foutmelding weergegeven ('ontbrekende OpenSSL- of GnuTLS-bibliotheek').
Deze functie wordt ondersteund sinds Zabbix 6.0.15.