本节提供有关 Zabbix agent 执行的被动和主动检查的详细信息。
Zabbix 使用基于 JSON 的通信协议与 Zabbix agent进行通信。
另请参阅:[Zabbix agent 2] (/manual/appendix/protocols/zabbix_agent2) 协议详细信息。
被动检查是一个简单的数据请求。Zabbix服务器或proxy请求一些数据(例如,CPU负载),Zabbix agent将结果发送回服务器。
Server 请求 头部和数据长度的定义请参考协议详细信息
Agent 响应
在上面,方括号中的部分是可选的,只发送到不受支持的监控项。
例如, 对于支持的监控项:
对于不支持的监控项:
主动检查需要更复杂的处理,agent 必须首先从server端检索独立处理监控项的列表。
The servers 主动检查的列表在agent 配置文件中的 'ServerActive' 参数中列出, 请求这些检查的频率是由相同配置文件中的'RefreshActiveChecks' 参数设置的。 然而,如果刷新主动检查失败,则在60秒后重试。
agent然后定期向服务器发送新值。
如果代理位于防火墙后面,您可能会考虑 仅使用主动检查,因为在这种情况下您不需要 修改防火墙以允许初始传入连接。
Agent 请求
主动检查请求用于获取agent要处理的主动检查。 此请求由agent在启动时发送,然后以 RefreshActiveChecks 间隔发送。
{
"request": "active checks",
"host": "Zabbix server",
"host_metadata": "mysql,nginx",
"hostinterface": "zabbix.server.lan",
"ip": "159.168.1.1",
"port": 12050
}
字段 | 类型 | 必填 | 值 |
---|---|---|---|
request | string | 是 | 主动检查 |
host | string | 是 | 主机名。 |
host_metadata | string | 否 | 配置参数 HostMetadata 或 HostMetadataItem 度量值。 |
hostinterface | string | 否 | 配置参数 HostInterface 或 HostInterfaceItem 度量值。 |
ip | string | 否 | 如果设置了配置参数 ListenIP 第一个 IP。 |
port | number | 否 | 配置参数 ListenPort 值(如果已设置)而不是默认agent侦听端口。 |
Server 响应
在处理主动检查请求之后,主动检查响应由服务器发送回agent。
{
"response": "success",
"data": [
{
"key": "log[/home/zabbix/logs/zabbix_agentd.log]",
"key_orig": "log[/home/zabbix/logs/zabbix_agentd.log]",
"itemid": 1234,
"delay": "30s",
"lastlogsize": 0,
"mtime": 0
},
{
"key": "agent.version",
"key_orig": "agent.version",
"itemid": 5678,
"delay": "10m",
"lastlogsize": 0,
"mtime": 0
}
]
}
字段 | 类型 | 必填 | 值 | |
---|---|---|---|---|
response | string | 是 | 成功 | 失败 |
|
info | string | 否 | 失败时的错误信息。 | |
data | array of objects | 否 | 主动检查监控项。 | |
key | string | 否 | 带有扩展宏的监控项键。 | |
key_orig | string | 否 | 没有扩展宏的监控项键。 | |
itemid | number | 否 | 监控项标识符。 | |
delay | string | 否 | 监控项更新间隔。 | |
lastlogsize | number | 否 | 监控项 lastlogsize。 | |
mtime | number | 否 | 监控项时间。 | |
refresh_unsupported | number | 否 | 不支持的监控项刷新间隔。 | |
regexp | array of objects | 否 | 全局正则表达式。 | |
name | string | 否 | 全局正则表达式名称。 | |
expression | string | 否 | 全局正则表达式。 | |
expression_type | number | 否 | 全局正则表达式类型。 | |
exp_delimiter | string | 否 | 全局正则表达式分隔符。 | |
case_sensitive | number | 否 | 全局正则表达式区分大小写设置。 |
服务器必然成功响应。
例如:
请注意,当使用主动检查时,敏感的配置数据可能会被能够访问Zabbix server trapper端口的各方获取。这是可能的,因为任何人都可能伪装成主动 agent 并请求项目配置数据;除非使用加密选项,否则不会进行身份验证。
Agent 发送
代理数据请求包含收集的监控项值。
{
· "request": "agent data",
· "data": [
· {
· "host": "Zabbix server",
· "key": "agent.version",
· "value": "2.4.0",
· "clock": 1400675595,
· "ns": 76808644
· },
· {
· "host": "Zabbix server",
· "key": "log[/home/zabbix/logs/zabbix_agentd.log]",
· "lastlogsize": 112,
· "value": " 19845:20140621:141708.521 Starting Zabbix Agent [<hostname>]. Zabbix 2.4.0 (revision 50000).",
· "clock": 1400675595,
· "ns": 77053975
· }
· ],
· "session": "1234456akdsjhfoui"
}
字段 | 类型 | 必填 | 值 | |
---|---|---|---|---|
request | 字符串 | 是 | agent数据 |
|
session | 字符串 | 是 | 每次启动代理时生成的唯一会话标识符。 | |
data | 对象数组 | 是 | 监控项值。 | |
id | 数字 | 是 | 值标识符(用于在出现网络问题时检查重复值的增量计数器)。 | |
host | 字符串 | 是 | 主机名。 | |
key | 字符串 | 是 | 监控项键。 | |
value | 字符串 | 没有 | 监控项值。 | |
lastlogsize | 数字 | 没有 | 监控项 lastlogsize。 | |
mtime | 数字 | 没有 | 监控项时间。 | |
state | 数字 | 没有 | 监控项状态。 | |
source | 字符串 | 没有 | 值事件日志源。 | |
eventid | 数字 | 没有 | 值事件日志eventid。 | |
severity | 数字 | 没有 | 值事件日志严重性。 | |
timestamp | 数字 | 没有 | 值事件日志时间戳。 | |
clock | 数字 | 是 | 值时间戳(自纪元以来的秒数)。 | |
ns | 数字 | 是 | 值时间戳纳秒。 |
每个值都分配了一个虚拟 ID。 值 ID 是一个简单的递增计数器,在一个数据会话中是唯一的(由会话令牌标识)。 此 ID 用于丢弃可能在连接性差的环境中发送的重复值。
服务器响应
agent数据响应在处理代理数据请求后由服务器发送回agent。
字段 | 类型 | 必填 | 值 |
---|---|---|---|
response | 字符串 | 是 | 成功 | 失败 |
info | 字符串 | 是 | 监控项处理结果。 |
· ::: noteimportant 如果在服务器上发送某些值失败(例如,因为主机或监控项已被禁用或删除),agent将不会重试发送这些值。 :::
举例:
请注意,在上面的示例中,vfs.fs.size[/nono] 的不支持状态如何由“state”值 1 和“value”属性中的错误消息指示。
服务器端的错误消息将被修剪为 2048 个符号。
Zabbix将占用16 MB的XML base64编码的数据, 但单个解码值应该不超过64kb,否则,在解码时将被截断到64 KB。