本节描述Zabbix添加到用Duktape实现的JavaScript语言中。
Zabbix
Zabbix对象提供了与内部Zabbix功能的交互。
方法 描 | |
---|---|
Log(级别, 消息) 使用& |
t;loglevel>日志级别(参见配置文件DebugLevel参数)将<message>写入Zabbix日志。 |
例子:
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);
Additional global JavaScript functions have been implemented with Duktape:
try {
b64 = btoa("utf8 string");
utf8 = atob(b64);
}
catch (error) {
return {'error.name' : error.name, 'error.message' : error.message}
}