18 脚本监控项

概述

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

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

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

配置

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

script_item.png

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

脚本监控项需要填写特定信息的字段包括:

字段 描述
Key 输入用于标识监控项的唯一键值。
Parameters 指定要传递给脚本的变量作为属性和值对。
支持Built-in macros {HOST.CONN}、{HOST.DNS}、{HOST.HOST}、{HOST.IP}、{HOST.NAME}、{ITEM.ID}、{ITEM.KEY}、{ITEM.KEY.ORIG}和user macros
Script 在点击参数字段(或旁边的查看/编辑按钮)时出现的代码块中输入JavaScript代码。该代码必须提供返回指标值的逻辑。
代码可以访问所有参数,可以执行HTTP GET、POST、PUT和DELETE请求,并可以控制HTTP头部和请求体。
另请参阅:Additional JavaScript objectsJavaScript Guide
Timeout JavaScript执行超时时间(1-60秒,默认为3秒);超过此时间将返回错误。
支持时间后缀,例如30s、1m。
根据脚本的不同,触发超时可能需要更长时间。

示例

简单数据收集

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

  • 创建一个类型为"Script"的监控项。
  • Script字段中输入:
var request = new HttpRequest();
       return request.get("https://www.example.com/release_notes");
带参数的数据收集

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

  • 创建一个类型为"脚本"的监控项并设置两个参数:

    • url : {$DOMAIN} (the user macro {$DOMAIN} should be defined, preferably on the host level)
    • 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;