本节提供有关 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然后定期向服务器发送新值。
如果代理位于防火墙后面,您可能会考虑 仅使用主动检查,因为在这种情况下您不需要 修改防火墙以允许初始传入连接。
In order to decrease network traffic and resources usage Zabbix server or Zabbix proxy will provide configuration only if Zabbix agent still hasn't received configuration or if something has changed in host configuration, global macros or global regular expressions.
The agent then periodically sends the new values to the server(s).
If an agent is behind the firewall you might consider using only Active checks because in this case you wouldn't need to modify the firewall to allow initial incoming connections.
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 个符号。
The heartbeat message is sent by an active agent to Zabbix server/proxy every HeartbeatFrequency seconds (configured in the Zabbix agent configuration file).
It is used to monitor the availability of active checks.
Field | Type | Mandatory | Value |
---|---|---|---|
request | string | yes | active check heartbeat |
host | string | yes | The host name. |
heartbeat_freq | number | yes | The agent heartbeat frequency (HeartbeatFrequency configuration parameter). |
Zabbix将占用16 MB的XML base64编码的数据, 但单个解码值应该不超过64kb,否则,在解码时将被截断到64 KB。