18 脚本监控项

概述

脚本 监控项 可用于通过执行用户定义的 JavaScript 代码来收集数据,并具备通过 HTTP/HTTPS 检索数据的能力。除了脚本之外,还可以指定一个可选的参数列表(名称和值的对)以及超时时间。

这种 监控项 类型可能在需要多步骤或复杂逻辑的数据收集场景中非常有用。例如,可以配置一个脚本 监控项 来进行 HTTP 调用,然后以某种方式处理第一步接收到的数据,并将转换后的值传递给第二个 HTTP 调用。

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

配置

item configuration form类型 字段中选择 脚本,然后填写必填字段。

script_item.png

所有必填输入字段均以红色星号标记。

脚本 监控项 需要填写的字段如下:

字段 描述
Key 输入一个唯一的键,用于标识该 监控项。
Parameters 指定作为属性和值对传递给脚本的变量。
支持 User macros。要查看支持哪些内置宏,请在 supported macro 表格中搜索“脚本类型 监控项”。
Script 点击参数字段或其旁边的铅笔图标时,在打开的模态编辑器中输入 JavaScript 代码。该代码必须提供返回指标值的逻辑。
代码可以访问所有参数和 Zabbix 添加的所有 additional JavaScript objects
另请参阅:JavaScript Guide
Timeout 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} 应该被定义,最好是在 主机 级别上)
    • subpage : /release_notes

  • 脚本 字段中输入:
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 的内容:

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

将“Log test”条目添加到Zabbix server日志中,并返回接收监控项值"1":

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