2022 Zabbix中国峰会
2022 Zabbix中国峰会

4 Zabbix agent 2插件协议

Zabbix Agent 2协议基于代码、大小和数据模型。

代码

类型 大小 注解
Byte 4 Payload类型,目前仅支持JSON.

大小

类型 大小 注解
Byte 4 当前有效负载的大小(以字节为单位).

Payload数据

类型 大小 注解
Byte Size 字段定义 JSON 格式的数据.
Payload 数据定义
常用数据

这些参数存在于所有请求/响应中:

名称 类型 注解
id uint32 对于请求 - 用于将请求与响应链接起来的递增标识符。在请求方向内唯一 (即从代理到插件或从插件到代理).
对于响应 - 相应请求的 ID.
type uint32 请求类型.
日志请求

插件发送的将日志消息写入代理日志文件的请求。

direction plugin → agent
response no

特定于日志请求的参数:

名称 类型 注解
severity uint32 消息严重性(日志级别).
message string 要记录的消息.

例子:

{"id":0,"type":1,"severity":3,"message":"message"}
注册请求

代理在代理启动阶段发送的请求,用于获取注册插件所提供的指标。

direction agent → plugin
response yes

特定于注册请求的参数:

名称 类型 注解
version string 协议版本 <major>.<minor>

例子:

{"id":1,"type":2,"version":"1.0"}
注册响应

插件对注册请求的响应。

direction plugin → agent
response n/a

特定于注册响应的参数:

Name Type Comments
name string 插件名称.
metrics array of strings (optional) 带有插件中使用的描述的指标。返回 RegisterMetrics()。如果返回错误则不存在.
interfaces uint32 (optional) 插件支持的接口的掩码位。如果返回错误则不存在.
error string (optional) 如果插件无法启动,则返回错误消息。如果返回指标,则不存在.

例子:

{"id":2,"type":3,"metrics":["external.test", "External exporter Test."], "interfaces": 4}

or

{"id":2,"type":3,"error":"error message"}
开始请求

请求执行Runner接口的Start函数.

direction agent → plugin
response no

该请求没有具体参数, 它只包含 常用数据 参数。

例子:

{"id":3,"type":4}
终止请求

代理发送的关闭插件的请求。

direction agent → plugin
response no

该请求没有具体参数,它只包含 常用数据 参数。

例子:

{"id":3,"type":5}
导出请求

请求执行Exporter接口的Export函数。

direction agent → plugin
response no

特定于导出请求的参数:

名称 类型 注解
key string 插件密钥.
parameters array of strings (optional) 导出函数的参数.

例子:

{"id":4,"type":6,"key":"test.key","parameters":["foo","bar"]}
导出响应

来自 Exporter 接口的 Export 功能的响应。

direction plugin → agent
response n/a

特定于导出响应的参数:

名称 类型 注解
value string (optional) 来自导出功能的响应值。如果返回错误,则不存在.
error string (optional) 如果导出功能未成功执行,则会出现错误消息。如果返回值,则不存在.

例子:

{"id":5,"type":7,"value":"response"}

or

{"id":5,"type":7,"error":"error message"}
配置请求

执行 Configurator 接口的 Configure 功能的请求。

direction agent → plugin
response n/a

特定于Configure 请求的参数:

名称 类型 注解
global_options JSON object 包含全局代理配置选项的JSON对象.
private_options JSON object (optional) 包含私有插件配置选项的JSON对象,如果提供.

例子:

{"id":6,"type":8,"global_options":{...},"private_options":{...}}
验证请求

执行 Configurator 接口的 Validate 功能的请求。

direction agent → plugin
response yes

特定于 Validate 请求的参数:

Name Type Comments
private_options JSON object (optional) 包含私有插件配置选项的 JSON 对象, 如果提供.

例子:

{"id":7,"type":9,"private_options":{...}}
验证响应

来自 Configurator 接口的 Validate 函数的响应。

direction plugin → agent
response n/a

特定于 Validate 响应的参数:

Name Type Comments
error string (optional) 如果 Validate 函数未成功执行,则返回错误消息。如果执行成功则不存在.

例子:

{"id":8,"type":10}

or

{"id":8,"type":10,"error":"error message"}