18 脚本监控项

概览

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

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

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

配置

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

script_item.png 标红星号为必填字段。

脚本监控项需要特定信息的字段是:

字段描述
键值输入一个用于标识监控项的唯一值。
参数指定要传递给脚本的变量,作为属性和值对。
支持用户宏。要查看支持哪些内置的宏,可以在支持的宏 中搜索。
脚本在点击参数字段(或其旁边的查看/编辑按钮)时出现的代码块中输入 JavaScript 代码。此代码必须提供返回度量值的逻辑。
代码可以访问所有参数,以及 Zabbix 添加的所有额外的JavaScript 对象
参见 JavaScript手册
超时avaScript 的执行超时时间设定为 1 至 600 秒;如果超出这个时间,将会返回错误。
请注意,依据脚本的复杂度,触发超时可能需要更多时间。
关于超时参数的更多详情,请参阅通用监控项属性

示例

简单的数据采集

https://www.example.com/release\_notes 页面收集内容:

  • 创建一个监控项,类型选择”脚本“。

  • 脚本字段填写下面的代码:

  1. var request = new HttpRequest();
  2. return request.get("https://www.example.com/release_notes");
带参数收集数据

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

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

18 脚本监控项 - 图2

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

同时收集 https://www.example.comhttps://www.example.com/release\_notes

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

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

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