UDN-企业互联网技术人气社区

板块导航

浏览  : 4288
回复  : 0

[干货] Zabbix技巧系列——利用Agent Active模式监控在NAT网络中的设备

[复制链接]
开花包的头像 楼主
发表于 2016-12-28 15:51:44 | 显示全部楼层 |阅读模式
  本文分享一个Zabbix Agent在NAT网络环境下进行监控的技巧。

  Zabbix Agent检查有两种模式,分为主动(Agent Active)和被动(Agent)两种形式。主动与被动的说法均是相对于Agent来讨论的。

  主动检查:Agent请求Server获取主动的监控项列表,并主动将监控项内需要检测的数据提交给Server/Proxy

  被动检查:Server向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 agent (active)”。

  暂停关联的监控项。

  添加主机

  建立一个新主机

  主机名必须和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来讨论的。简单说明一下主动与被动的区别如下:

  主动:Agent请求Server获取主动的监控项列表,并主动将监控项内需要检测的数据提交给Server/Proxy

  被动:Server向Agent请求获取监控项的数据,Agent返回数据。

  zabbix agent通信过程中的协议均基于JSON格式,格式如下:

  1.   - "ZBXD\x01" (5 bytes)

  2.   - 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发起如下请求

 
  1. <item key>\n
复制代码


  Aegent返回如下响应数据

 
  1.  <HEADER><DATALEN><DATA>[\0<ERROR>]
复制代码


  supported items通信过程

  Server打开一个TCP连接

  Server发送请求agent.ping\n

  Agent接收到请求并且响应1

  Server处理接收到的数据1

  关闭TCP连接

  not supported items通信过程

  Server打开一个TCP连接

  Server发送请求vfs.fs.size[/nono]\n

  Agent接收请求并且返回响应数据

  1.   ZBX_NOTSUPPORTED\0Cannot obtain filesystem information: [2] No such file or directory
复制代码

  Server接收并处理数据, 将item的状态改为“ not supported ”

  关闭TCP连接

  主动检测

  如前面所说,Zabbix首先向ServerActive配置的IP请求获取Active Items,获取并提交Active Items数据值Server或者Proxy。很多同学会提出疑问:Zabbix多久获取一次Active Items?它会根据配置文件中的RefreshActiveChecks的频率进行,如果获取失败,那么将会在60秒之后重试

  获取ACTIVE ITEMS列表

  Agent请求

  1.   {

  2.   "request":"active checks",

  3.   "host":""

  4.   }
复制代码


  Server响应列表

 
  1.  {

  2.   "response":"success",

  3.   "data":[

  4.   {

  5.   "key":"log[/home/zabbix/logs/zabbix_agentd.log]",

  6.   "delay":30,

  7.   "lastlogsize":0,

  8.   "mtime":0

  9.   },

  10.   {

  11.   "key":"agent.version",

  12.   "delay":600,

  13.   "lastlogsize":0,

  14.   "mtime":0

  15.   },

  16.   {

  17.   "key":"vfs.fs.size[/nono]",

  18.   "delay":600,

  19.   "lastlogsize":0,

  20.   "mtime":0

  21.   }

  22.   ]

  23.   }
复制代码


  备注:获取到的items列表中的所有item属性key, delay, lastlogsize ,mtime都必须存在,获取列表的通信过程如下:

  Agent打开TCP连接(主动检测变成Agent打开)

  Agent请求items检测列表

  Server返回items列表

  Agent 处理响应

  关闭TCP连接

  Agent开始收集数据

  提交active items数据

  Agent发送请求

  1.   {

  2.   "request":"agent data",

  3.   "data":[

  4.   {

  5.   "host":"",

  6.   "key":"agent.version",

  7.   "value":"2.4.0",

  8.   "clock":1400675595,

  9.   "ns":76808644

  10.   },

  11.   {

  12.   "host":"",

  13.   "key":"log[/home/zabbix/logs/zabbix_agentd.log]",

  14.   "lastlogsize":112,

  15.   "value":" 19845:20140621:141708.521 Starting Zabbix Agent []. Zabbix 2.4.0 (revision 50000).",

  16.   "clock":1400675595,

  17.   "ns":77053975

  18.   },

  19.   {

  20.   "host":"",

  21.   "key":"vfs.fs.size[/nono]",

  22.   "state":1,

  23.   "value":"Cannot obtain filesystem information: [2] No such file or directory",

  24.   "clock":1400675595,

  25.   "ns":78154128

  26.   }

  27.   ],

  28.   "clock": 1400675595,

  29.   "ns": 78211329

  30.   }
复制代码


  Server响应数据

  1.   {

  2.   "response":"success",

  3.   "info":"processed: 3; failed: 0; total: 3; seconds spent: 0.003534"

  4.   }
复制代码


  备注:如果有些数据提交失败,比如host、item被删除或者禁用,agent不会尝试从新提交

  主动检测提交数据过程如下:

  Agent建立TCP连接

  Agent提交items列表收集的数据

  Server处理数据,并返回响应状态

  关闭TCP连接

  参考文档

  http://www.google.com

  http://t.cn/RIq6Fsz

  http://t.cn/RAFoZ4Y

  https://www.zabbix.com/forum/showthread.php?t=50510

原文作者:Mike 来源:开发者头条

相关帖子

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关于我们
联系我们
  • 电话:010-86393388
  • 邮件:udn@yonyou.com
  • 地址:北京市海淀区北清路68号
移动客户端下载
关注我们
  • 微信公众号:yonyouudn
  • 扫描右侧二维码关注我们
  • 专注企业互联网的技术社区
版权所有:用友网络科技股份有限公司82041 京ICP备05007539号-11 京公网网备安1101080209224 Powered by Discuz!
快速回复 返回列表 返回顶部