本节描述了使用Duktape实现的Zabbix对JavaScript语言的扩展,以及支持的全局JavaScript函数。
Zabbix 对象提供与 Zabbix 内部功能的交互。
方法 | 描述 |
---|---|
log(loglevel, message) |
使用 <loglevel> 日志级别(参见配置文件中的 DebugLevel 参数)将 <message> 写入 Zabbix 日志。 |
示例:
你可以使用以下别名:
别名 | 别名对应的方法 |
---|---|
console.log(object) | Zabbix.log(4, JSON.stringify(object)) |
console.warn(object) | Zabbix.log(3, JSON.stringify(object)) |
console.error(object) | Zabbix.log(2, JSON.stringify(object)) |
每次脚本执行的所有日志消息的总大小限制为 8 MB。
方法 | 描述 |
---|---|
sleep(delay) |
延迟 JavaScript 执行 delay 毫秒。 |
示例(延迟执行 15 秒):
此 object 封装了 cURL 处理器,允许发送简单的 HTTP 请求。 错误将以异常的形式抛出。
初始化多个 HttpRequest
objects 的限制为每个脚本执行 10 个。
方法 | 描述 |
---|---|
{CODE_d11c7c8e} |
添加 HTTP 头字段。此字段将用于所有后续请求,直到使用 clearHeader() 方法清除。可以添加到单个 HttpRequest object 的 HTTP 头字段的总长度限制为 128 Kbytes(包括特殊字符和头名称)。 |
{CODE_e99885f1} |
清除 HTTP 头。如果没有设置头字段,HttpRequest 将根据发布的数据是否为 JSON 格式,将 Content-Type 设置为 application/json;否则设置为 text/plain。 |
{CODE_6d31a6e4} |
向 URL 发送 HTTP CONNECT 请求并返回响应。 |
{CODE_ee7e88b0} |
允许在第一个参数中指定任何 HTTP 方法。向 URL 发送方法请求,可选 data 负载,并返回响应。 |
{CODE_d382a7be} |
向 URL 发送 HTTP DELETE 请求,可选 data 负载,并返回响应。 |
{CODE_bdef05b1} |
返回收到的 HTTP 头字段的 object。 可以将 asArray 参数设置为 "true"(例如,getHeaders(true) )、"false" 或不定义。如果设置为 "true",收到的 HTTP 头字段值将以数组形式返回;这应用于检索多个同名头的字段值。如果不设置或设置为 "false",收到的 HTTP 头字段值将以字符串形式返回。 |
{CODE_ea260189} |
向 URL 发送 HTTP GET 请求,可选 data 负载,并返回响应。 |
{CODE_46dc94e0} |
向 URL 发送 HTTP HEAD 请求并返回响应。 |
{CODE_7719cdb6} |
向 URL 发送 HTTP OPTIONS 请求并返回响应。 |
{CODE_a9b79467} |
向 URL 发送 HTTP PATCH 请求,可选 data 负载,并返回响应。 |
{CODE_73c0bac5} |
向 URL 发送 HTTP PUT 请求,可选 data 负载,并返回响应。 |
{CODE_75ac2ada} |
向 URL 发送 HTTP POST 请求,可选 data 负载,并返回响应。 |
{CODE_997b6ee8} |
返回上一个 HTTP 请求的状态码。 |
{CODE_1a97ccb0} |
将 HTTP proxy 设置为 "proxy" 值。如果此参数为空,则不使用 proxy。 |
{CODE_27c71a1f} |
在 'bitmask' 参数中设置启用的 HTTP 认证方法(HTTPAUTH_BASIC, HTTPAUTH_DIGEST, HTTPAUTH_NEGOTIATE, HTTPAUTH_NTLM, HTTPAUTH_NONE)。 HTTPAUTH_NONE flag 允许禁用 HTTP 认证。 示例: request.setHttpAuth(HTTPAUTH_NTLM | HTTPAUTH_BASIC, username, password) request.setHttpAuth(HTTPAUTH_NONE) |
{CODE_5484a1c2} |
向 URL 发送 HTTP TRACE 请求,可选 data 负载,并返回响应。 |
示例:
try {
Zabbix.log(4, 'jira webhook script value='+value);
var result = {
'tags': {
'endpoint': 'jira'
}
},
params = JSON.parse(value),
req = new HttpRequest(),
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://jira.example.com/rest/api/2/issue/',
JSON.stringify({"fields": fields})
);
if (req.getStatus() != 201) {
throw 'Response code: '+req.getStatus();
}
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);
XML对象允许在项目和低级别发现预处理和webhook中处理XML数据。
为了使用XML对象,服务器/代理必须编译支持libxml2。
方法 | 描述 |
---|---|
XML.query(data, expression) |
使用XPath检索节点内容。如果未找到节点,则返回null。 expression - XPath表达式; data - XML数据字符串。 |
XML.toJson(data) |
将XML格式的数据转换为JSON。 |
XML.fromJson(object) |
将JSON格式的数据转换为XML。 |
示例:
输入:
<menu>
<food type = "breakfast">
<name>Chocolate</name>
<price>$5.95</price>
<description></description>
<calories>650</calories>
</food>
</menu>
输出:
{
"menu": {
"food": {
"@type": "breakfast",
"name": "Chocolate",
"price": "$5.95",
"description": null,
"calories": "650"
}
}
}
XML转换为JSON将根据以下规则进行处理(对于JSON转换为XML,将应用相反的规则):
示例:
输入:
输出:
示例:
输入:
输出:
示例:
输入:
输出:
示例:
输入:
输出:
示例:
输入:
输出:
示例:
输入:
输出:
已使用Duktape实现了额外的全局JavaScript函数:
```javascript try { b64 = btoa("test string"); buffer = atob(b64);
// Note that decoding logic depends on the data format of the buffer.
decoded = String.fromCharCode.apply(this, [].slice.call(buffer));
} catch (error) { return {'error.name' : error.name, 'error.message' : error.message}; } ``- md5(data) - 计算数据的MD5哈希 - sha256(data) - 计算数据的SHA256哈希 - hmac('\<hash type\>',key,data) - 以十六进制格式返回HMAC哈希string; 支持MD5和SHA256哈希类型; key和data参数支持二进制数据。示例: -
hmac('md5',key,data)-
hmac('sha256',key,data)- sign(hash,key,data) - 返回计算的签名(使用SHA-256的RSA签名)作为string,其中:
`代替换行符; - 无任何换行符的单行string; - 作为JSON格式的string。
**hash** - 仅允许'sha256',否则将抛出错误;
**key** - 私钥。它应符合PKCS#1或PKCS#8标准。密钥可以以不同形式提供:
- 用空格代替换行符; - 用转义或未转义的