本节详细介绍了由Zabbix agent执行的被动和主动检查。
Zabbix使用基于JSON的通信协议与Zabbix agent进行通信。
另请参阅:Zabbix agent 2 协议详情。
被动检查是一种简单的数据请求。Zabbix server或proxy向服务器请求某些数据(例如CPU负载),Zabbix agent将结果返回给服务器。
服务器请求
关于头部和数据长度的定义,请参阅protocol details。
Agent响应
上述方括号中的部分是可选的,仅在不支持的监控项时发送。
例如,对于支持的监控项:
对于不支持的监控项:
主动检查需要更复杂的处理。agent首先必须 从服务器检索一组监控项以进行独立处理
用于get主动检查的服务器列在 'ServerActive' 参数用于 agent configuration file。询问频率 这些检查的间隔时间由配置文件中的'RefreshActiveChecks'参数设置 相同配置file. 但如果刷新主动检查失败, 它 在硬编码的60秒后重试。
agent随后会定期将新值发送到服务器
如果 agent 位于防火墙后方,您可能需要考虑 仅使用主动检查,因为在这种情况下您不需要 修改防火墙以允许初始传入连接。
Agent请求
主动检查请求用于获取需要由agent处理的主动检查项。该请求由agent在启动时发送,之后按照_RefreshActiveChecks_间隔定期发送。
{
         "request": "active checks",
         "host": "Zabbix server",
         "host_metadata": "mysql,nginx",
         "interface": "zabbix.server.lan",
         "ip": "159.168.1.1",
         "port": 12050
       }| 字段 | 类型 | 必填 | 值 | 
|---|---|---|---|
| request | string | yes | active checks | 
| host | string | yes | 主机名. | 
| host_metadata | string | no | 配置参数HostMetadata或HostMetadataItem的指标值。 | 
| interface | string | no | 配置参数HostInterface或HostInterfaceItem的指标值。 | 
| ip | string | no | 配置参数ListenIP的首个IP(如设置)。 | 
| port | number | no | 配置参数ListenPort的值(如设置且非默认agent监听端口)。 | 
服务器响应
服务器在处理完主动检查请求后,会向agent返回主动检查响应。
{
         "response": "success",
         "data": [
           {
             "key": "log[/home/zabbix/logs/zabbix_agentd.log]",
             "key_orig": "log[/home/zabbix/logs/zabbix_agentd.log]",
             "itemid": 1234,
             "delay": 30,
             "lastlogsize": 0,
             "mtime": 0
           },
           {
             "key": "agent.version",
             "key_orig": "agent.version",
             "itemid": 5678,
             "delay": 10,
             "lastlogsize": 0,
             "mtime": 0
           }
         ]
       }| 字段 | 类型 | 必填 | 值 | |
|---|---|---|---|---|
| response | string | yes | success\ | |
| info | string | no | 失败时的错误信息。 | |
| data | array of objects | no | 主动检查监控项。 | |
| key | string | no | 展开宏后的监控项键值。 | |
| key_orig | string | no | 未展开宏的监控项键值。 | |
| itemid | number | no | 监控项标识符。 | |
| delay | integer | no | 监控项update间隔。 | |
| lastlogsize | number | no | 监控项lastlogsize值。 | |
| mtime | number | no | 监控项mtime值。 | |
| refresh_unsupported | number | no | 不支持的监控项刷新间隔。 | |
| regexp | array of objects | no | 全局正则表达式。 | |
| name | string | no | 全局正则表达式名称。 | |
| expression | string | no | 全局正则表达式。 | |
| expression_type | number | no | 全局正则表达式类型。 | |
| exp_delimiter | string | no | 全局正则表达式分隔符。 | |
| case_sensitive | number | no | 全局正则表达式大小写敏感设置。 | |
服务器必须返回成功响应。
例如:
注意:当使用主动检查时,(敏感)配置数据可能 被能够访问Zabbix server trapper端口的第三方获取。 这是因为任何人都可以伪装成主动agent并请求监控项配置数据; 除非使用encryption选项,否则不会进行身份验证。
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 | string | yes | agent data | |
| session | string | yes | agent每次启动时生成的唯一会话标识符。 | |
| data | array of objects | yes | 监控项值。 | |
| id | number | yes | 值标识符(用于在网络问题情况下检查重复值的递增计数器)。 | |
| 主机 | string | yes | 主机名。 | |
| key | string | yes | 监控项键。 | |
| value | string | no | 监控项值。 | |
| lastlogsize | number | no | 监控项lastlogsize。 | |
| mtime | number | no | 监控项mtime。 | |
| state | number | no | 监控项状态。 | |
| source | string | no | 值事件日志来源。 | |
| eventid | number | no | 值事件日志eventid。 | |
| severity | number | no | 值事件日志严重级别。 | |
| timestamp | number | no | 值事件日志时间戳。 | |
| clock | number | yes | 值时间戳(自Epoch起的秒数)。 | |
| ns | number | yes | 值时间戳纳秒部分。 | |
每个值都会被分配一个虚拟ID。值ID是一个简单的递增计数器,在单个数据会话(由会话令牌标识)内唯一。该ID用于在连接质量差的环境中丢弃可能重复发送的值。
服务器响应
agent数据响应是服务器在处理完agent数据请求后发送回agent的。
| 字段 | 类型 | 必填 | 值 | 
|---|---|---|---|
| response | string | yes | success\ | 
| info | string | yes | 监控项处理结果。 | 
如果某些值在服务器端发送失败(例如由于主机或监控项被禁用或删除),agent将不会重试发送这些值。
例如:
注意上例中vfs.fs.size[/nono]的不支持状态通过"state"值为1和"value"属性中的错误消息来指示。
错误消息在服务器端将被截断至2048个字符。
Zabbix最多可处理16MB的Base64编码XML数据 但单个解码后的值不应超过64KB 否则在解码过程中会被截断为64KB