本文分享一个Zabbix Agent在NAT网络环境下进行监控的技巧。 Zabbix Agent检查有两种模式,分为主动(Agent Active)和被动(Agent)两种形式。主动与被动的说法均是相对于Agent来讨论的。 被监控端的配置调整
$ cat zabbix_Agentd.conf
Server=X.X.X.X #如果设置为纯被动模式,则应该注释掉这一条指令 ServerActive=X.X.X.X #主动模式的server IP地址 Hostname=Mike-Linux #在Web UI上声明主机时所使用相同的主机名(区分大小写),不配置则使用主机名。 StartAgents=0 #客户端Agent模式,设置为0表示关闭被动模式。被监控端的zabbix_agentd不监听本地端口,netstat无法查看到zabbix_agentd监听的端口。
替换X.X.X.X为你Zabbix server的IP。 调整监控模板纯主动模式下的Zabbix Agent,只能支持Zabbix Agent(Active)类型的监控项。 我们将克隆“Template OS Linux”并创建一个将使用主动检查而不是被动模式的“Template OS Linux Active”。 点击“Configuration” 点击“Templates” 点击“Template OS Linux” 点击“Full Clone” (bottom) 修改名称为“Template OS Linux Active” 点击“Add” (bottom) 点击“Template OS Linux Active”模板 点击“Items” 勾选左上角选择所有项目 向下滚动到,选择“批量更新”。 勾选“Type” 把值从“Zabbix agent”改为“Zabbix agent (active)” 向下滚动到,选择“update”。 点击”Discovery”,按以上类似方法更新”Discovery”规则的监控项。
一般情况下模板间是有一些关联的,比如“Template OS Linux”模板就关联了”Template App Zabbix Agent” ,这种情况通常有两种方法处理: 添加主机建立一个新主机 主机名必须和zabbix_Agentd.conf配置文件中定义的一样(这里是:Mike-Linux)。 Agent interfaces中IP配置为0.0.0.0, 端口为:10050. 关联刚才建立的”Template OS Linux Active”模板。
测试数据点击”Monitoring—Latest data”,如果有对应数据就说明Server接收到Agent数据了。 其它Zabbix主动、被动检测的详细过程与区别 Zabbix Agent检测分为主动(Agent Active)和被动(Agent)两种形式,主动与被动的说法均是相对于Agent来讨论的。简单说明一下主动与被动的区别如下: zabbix agent通信过程中的协议均基于JSON格式,格式如下: - "ZBXD\x01" (5 bytes) - data length (8 bytes). 1 will be formatted as 01/00/00/00/00/00/00/00 (eight bytes in HEX, 64 bit number)备注:为了避免内存耗尽,Server限制每个通信连接最多使用128MB内存。
被动检测 Server发起如下请求 <item key>\nAegent返回如下响应数据 <HEADER><DATALEN><DATA>[\0<ERROR>]supported items通信过程 Server打开一个TCP连接 Server发送请求agent.ping\n Agent接收到请求并且响应1 Server处理接收到的数据1 关闭TCP连接
not supported items通信过程 主动检测 如前面所说,Zabbix首先向ServerActive配置的IP请求获取Active Items,获取并提交Active Items数据值Server或者Proxy。很多同学会提出疑问:Zabbix多久获取一次Active Items?它会根据配置文件中的RefreshActiveChecks的频率进行,如果获取失败,那么将会在60秒之后重试 获取ACTIVE ITEMS列表 Agent请求 <HEADER><DATALEN>{ "request":"active checks", "host":"<hostname>"}Server响应列表 <HEADER><DATALEN>{ "response":"success", "data":[ { "key":"log[/home/zabbix/logs/zabbix_agentd.log]", "delay":30, "lastlogsize":0, "mtime":0 }, { "key":"agent.version", "delay":600, "lastlogsize":0, "mtime":0 }, { "key":"vfs.fs.size[/nono]", "delay":600, "lastlogsize":0, "mtime":0 } ]}备注:获取到的items列表中的所有item属性key, delay, lastlogsize ,mtime都必须存在,获取列表的通信过程如下: Agent发送请求 <HEADER><DATALEN>{ "request":"agent data", "data":[ { "host":"<hostname>", "key":"agent.version", "value":"2.4.0", "clock":1400675595, "ns":76808644 }, { "host":"<hostname>", "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 }, { "host":"<hostname>", "key":"vfs.fs.size[/nono]", "state":1, "value":"Cannot obtain filesystem information: [2] No such file or directory", "clock":1400675595, "ns":78154128 } ], "clock": 1400675595, "ns": 78211329}Server响应数据 { "response":"success", "info":"processed: 3; failed: 0; total: 3; seconds spent: 0.003534" }备注:如果有些数据提交失败,比如host、item被删除或者禁用,agent不会尝试从新提交 主动检测提交数据过程如下: Agent建立TCP连接 Agent提交items列表收集的数据 Server处理数据,并返回响应状态 关闭TCP连接
参考文档
|