18 脚本监控项

概览

脚本监控项可以通过执行用户自定义的JavaScript代码,检索HTTP/HTTPS的方式来收集数据。除了脚本外,可以指定一个可选的参数列表(一些键值对)并配置超时限制。

此监控项类型在有收集数据过程中需要多个步骤或复杂逻辑的场景非常有用。举个例子,一个脚本监控项可以被配置为执行一个HTTP调用,然后经过某些方式处理从第一步调用得到的数据,并将转换后的数值传递给第二个HTTP调用。

脚本监控项由 Zabbix server 或 proxy的轮询器处理。

配置

监控项配置 表单类型字段中选择脚本,然后填写所需的字段。

script_item.png

所有必填输入字段都标有红色星号。

对于Script监控项,需要特定信息的字段如下:

字段 描述
输入一个唯一的键,用于标识监控项。
参数 指定要传递给脚本的变量,作为属性和值对。
用户宏得到支持。要查看哪些内置宏得到支持,请在支持的宏表中搜索“Script-type item”。
脚本 在点击参数字段或其旁边的铅笔图标时打开的模态编辑器中输入JavaScript代码。此代码必须提供返回指标值的逻辑。
代码可以访问所有参数和Zabbix添加的所有附加JavaScript对象
另请参阅:JavaScript指南
超时时间 JavaScript执行超时时间(1-600秒;超过此时间将返回错误)。
请注意,根据脚本的不同,可能需要更长的时间才能触发超时。
有关超时时间参数的更多信息,请参见通用监控项属性

示例

简单的数据采集

https://www.example.com/release_notes 页面收集内容:

  • 创建一个监控项,类型选择”脚本“。
  • 脚本字段填写下面的代码:
var request = new HttpRequest();
       return request.get("https://www.example.com/release_notes");
带参数收集数据

收集特定页面的内容并使用参数:

  • 创建一个 "脚本 "类型的项目,并设置两个参数:
    • url : {$DOMAIN}(应定义用户宏 {$DOMAIN},最好是在主机级定义)
    • 子页面 : /release_notes**

  • Script 字段中输入
var obj = JSON.parse(value);
       var url = obj.url;
       var subpage = obj.subpage;
       var request = new HttpRequest();
       return request.get(url + subpage);
多个 HTTP 请求

同时收集 https://www.example.comhttps://www.example.com/release_notes

  • 创建一个类型为 "脚本 "的监控项。
  • Script 字段中输入
var request = new HttpRequest();
       return request.get("https://www.example.com") + request.get("https://www.example.com/release_notes");
日志

在 Zabbix 服务器日志中添加 "日志测试 "项并接收监控项 值 "1":

  • 创建一个类型为 "脚本 "的监控项。
  • Script 字段中输入
Zabbix.log(3, 'Log test');
       return 1;