18 Script items
Overview
Script items can be used to collect data by executing a user-defined JavaScript code with the ability to retrieve data over HTTP/HTTPS. In addition to the script, an optional list of parameters (pairs of name and value) and timeout can be specified.
This item type may be useful in data collection scenarios that require multiple steps or complex logic. As an example, a Script item can be configured to make an HTTP call, then process the data received in the first step in some way, and pass transformed value to the second HTTP call.
Script items are processed by Zabbix server or proxy pollers.
Configuration
In the Type field of item configuration form select Script then fill out required fields.
All mandatory input fields are marked with a red asterisk.
The fields that require specific information for Script items are:
Field | Description |
---|---|
Key | Enter a unique key that will be used to identify the item. |
Parameters | Specify the variables to be passed to the script as the attribute and value pairs. Built-in macros {HOST.CONN}, {HOST.DNS}, {HOST.HOST}, {HOST.IP}, {HOST.NAME}, {ITEM.ID}, {ITEM.KEY}, {ITEM.KEY.ORIG} and user macros are supported. |
Script | Enter JavaScript code in the block that appears when clicking in the parameter field (or on the view/edit button next to it). This code must provide the logic for returning the metric value. The code has access to all parameters, it may perform HTTP GET, POST, PUT and DELETE requests and has control over HTTP headers and request body. See also: Additional JavaScript objects, JavaScript Guide. |
Timeout | JavaScript execution timeout (1-60s, default 3s); exceeding it will return error. Time suffixes are supported, e.g. 30s, 1m. Depending on the script it might take longer for the timeout to trigger. |
Examples
Simple data collection
Collect the content of https://www.example.com/release\_notes:
Create an item with type “Script”.
In the Script field, enter the following code:
var request = new HttpRequest();
return request.get("https://www.example.com/release_notes");
Data collection with parameters
Use the {HOST.CONN} macro as parameter value and get a response with expanded macro:
Create an item with type “Script”.
Create a parameter:
Name: host
Value: {HOST.CONN}In the Script field, enter the following code:
var request = new HttpRequest();
return request.post("https://postman-echo.com/post", JSON.parse(value));
Multiple HTTP requests
Collect the content of both https://www.example.com and https://www.example.com/release\_notes:
Create an item with type “Script”.
In the Script field, enter the following code:
var request = new HttpRequest();
return request.get("https://www.example.com") + request.get("https://www.example.com/release_notes");
Logging
Add the “Log test” entry to the Zabbix server log and receive the item value “1” in return:
Create an item with type “Script”.
In the Script field, enter the following code:
Zabbix.log(3, 'Log test');
return 1;