这是原厂英文文档的翻译页面. 欢迎帮助我们 完善文档.
2022 Zabbix中国峰会
2022 Zabbix中国峰会

额外的JavaScript对象

概览

本节描述Zabbix添加到用Duktape实现的JavaScript语言中。

内置对象

Zabbix

Zabbix对象提供了与内部Zabbix功能的交互。

方法 描
Log(级别, 消息) 使用& t;loglevel>日志级别(参见配置文件DebugLevel参数)将<message>写入Zabbix日志。

例子:

Zabbix.Log(3, "this is a log entry written with 'Warning' log level")

CurlHttpRequest

这个对象封装了cURL句柄,允许进行简单的HTTP请求。错误被作为异常抛出。

方法 描
AddHeader(name, value) 添加HTTP报头字段。此字段用于所有后续请求,直到使用ClearHeader()方法清除为止
ClearHeader() 清理HTTP头。如果没有设置报头字段,如果发送的数据是json格式的,CurlHttpRequest将设置Content-Type为application/json,否则为text/plain
GetHeaders() 返回接收的HTTP报头字段的对象。这个方法从Zabbix 5.0.4开始就可用了
Get(url, data) 将HTTP GET请求发送到带有可选data负载的URL,并返回响应
Put(url, data) 将HTTP PUT请求发送到带有可选data负载的URL,并返回响应
Post(url, data) 将HTTP POST请求发送到带有可选data负载的URL,并返回响应
Delete(url, data) 将HTTP DELETE请求发送到带有可选data负载的URL,并返回响应
Status() 返回最后一个HTTP请求的状态码
SetProxy(proxy) 设置HTTP代理为"proxy"值。如果该参数为空,则不使用代理

例子:

try {
           Zabbix.Log(4, 'jira webhook script value='+value);
         
           var result = {
               'tags': {
                   'endpoint': 'jira'
               }
           },
           params = JSON.parse(value),
           req = new CurlHttpRequest(),
           fields = {},
           resp;
         
           req.AddHeader('Content-Type: application/json');
           req.AddHeader('Authorization: Basic '+params.authentication);
         
           fields.summary = params.summary;
           fields.description = params.description;
           fields.project = {"key": params.project_key};
           fields.issuetype = {"id": params.issue_id};
           resp = req.Post('https://tsupport.zabbix.lan/rest/api/2/issue/',
               JSON.stringify({"fields": fields})
           );
         
           if (req.Status() != 201) {
               throw 'Response code: '+req.Status();
           }
         
           resp = JSON.parse(resp);
           result.tags.issue_id = resp.id;
           result.tags.issue_key = resp.key;
       } catch (error) {
           Zabbix.Log(4, 'jira issue creation failed json : '+JSON.stringify({"fields": fields}));
           Zabbix.Log(4, 'jira issue creation failed : '+error);
         
           result = {};
       }
         
       return JSON.stringify(result);

Global JavaScript functions

Additional global JavaScript functions have been implemented with Duktape:

  • btoa(string) - encodes string to base64 string
  • atob(base64_string) - decodes base64 string
try {
           b64 = btoa("utf8 string");
           utf8 = atob(b64);
       } 
       catch (error) {
           return {'error.name' : error.name, 'error.message' : error.message}
       }
  • md5(string) - calculates the MD5 hash of a string. This function is supported since Zabbix 5.0.9
  • sha256(string) - calculates the SHA256 hash of a string. This function is supported since Zabbix 5.0.9