本节提供有关 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 | 字符串 | 是 | 主动检查 |
host | 字符串 | 是 | 主机名。 |
host_metadata | 字符串 | 没有 | 配置参数 HostMetadata 或 HostMetadataItem 度量值。 |
hostinterface | 字符串 | 没有 | 配置参数 HostInterface 或 HostInterfaceItem 度量值。 |
ip | 字符串 | 没有 | 如果设置了配置参数 ListenIP 第一个 IP。 |
port | 编号 | 没有 | 配置参数 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 | 字符串 | 是 | 成功 | 失败 |
|
info | 字符串 | 没有 | 失败时的错误信息。 | |
data | 对象数组 | 没有 | 主动检查监控项。 | |
钥匙 | 字符串 | 没有 | 带有扩展宏的监控项键。 | |
key_orig | 字符串 | 没有 | 没有扩展宏的监控项键。 | |
itemid | 数字 | 没有 | 监控项标识符。 | |
delay | 字符串 | 没有 | 监控项更新间隔。 | |
lastlogsize | 数字 | 没有 | 监控项 lastlogsize。 | |
mtime | 数字 | 没有 | 监控项时间。 | |
refresh_unsupported | 数字 | 没有 | 不支持的监控项刷新间隔。 | |
regexp | 对象数组 | 没有 | 全局正则表达式。 | |
name | 字符串 | 没有 | 全局正则表达式名称。 | |
expression | 字符串 | 没有 | 全局正则表达式。 | |
expression_type | 数字 | 没有 | 全局正则表达式类型。 | |
exp_delimiter | 字符串 | 没有 | 全局正则表达式分隔符。 | |
case_sensitive | 数字 | 没有 | 全局正则表达式区分大小写设置。 |
· 服务器必须成功响应。
例如:
1.·agent打开一个TCP连接 2.·agent索要检查列表 3.·服务器响应监控项列表(监控项键,延时) 4.·agent解析响应 5.·TCP连接关闭 6. · agent开始定期收集数据
请注意,在使用主动检查时,(敏感)配置数据可能可供有权访问 Zabbix 服务器采集器端口的各方使用。 这是可能的,因为任何人都可能假装是一个主动agent并请求监控项配置数据; 除非您使用 encryption 选项,否则不会进行身份验证。
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。