转载

Zabbix 技巧系列:利用 Agent Active 模式监控在 NAT 网络中的设备

本文分享一个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”。

  1. 点击“Configuration”

  2. 点击“Templates”

  3. 点击“Template OS Linux”

  4. 点击“Full Clone” (bottom)

  5. 修改名称为“Template OS Linux Active”

  6. 点击“Add” (bottom)

  7. 点击“Template OS Linux Active”模板

  8. 点击“Items”

  9. 勾选左上角选择所有项目

  10. 向下滚动到,选择“批量更新”。

  11. 勾选“Type”

  12. 把值从“Zabbix agent”改为“Zabbix agent (active)”

  13. 向下滚动到,选择“update”。

  14. 点击”Discovery”,按以上类似方法更新”Discovery”规则的监控项。

一般情况下模板间是有一些关联的,比如“Template OS Linux”模板就关联了”Template App Zabbix Agent” ,这种情况通常有两种方法处理:

  1. 使用以上同样的方法修改关联的监控项为“Zabbix agent (active)”。

  2. 暂停关联的监控项。

添加主机

建立一个新主机

  1. 主机名必须和zabbix_Agentd.conf配置文件中定义的一样(这里是:Mike-Linux)。

  2. Agent interfaces中IP配置为0.0.0.0, 端口为:10050.

  3. 关联刚才建立的”Template OS Linux Active”模板。

测试数据

点击”Monitoring—Latest data”,如果有对应数据就说明Server接收到Agent数据了。

其它

Zabbix主动、被动检测的详细过程与区别

Zabbix Agent检测分为主动(Agent Active)和被动(Agent)两种形式,主动与被动的说法均是相对于Agent来讨论的。简单说明一下主动与被动的区别如下:

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

  2. 被动:Server向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>/n

Aegent返回如下响应数据

<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接收请求并且返回响应数据

    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请求

<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打开TCP连接(主动检测变成Agent打开)

  • Agent请求items检测列表

  • Server返回items列表

  • Agent 处理响应

  • 关闭TCP连接

  • Agent开始收集数据

  • 提交active items数据

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连接

参考文档

http://www.google.com

http://t.cn/RIq6Fsz

http://t.cn/RAFoZ4Y

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

更多精彩热文:

  • 用十条命令在一分钟内检查Linux服务器性能

  • 一张图告诉你,你为什么老加班.....

  • 理解Linux系统负荷

  • 请非技术人员不要对技术人员说这很容易实现

  • 十张图看懂未来的大数据世界

  • Linux终端下全能系统监控工具dstat

  • Linux/Unix目录结构的来历

  • 做好一名系统管理员的18个基本准则

  • Linux Shell从入门到删除根目录跑路指南

  • 基于Docker容器应用的日志收集方案

Zabbix 技巧系列:利用 Agent Active 模式监控在 NAT 网络中的设备

原文  http://mp.weixin.qq.com/s/N440QKpy9QG863BIhLBzVA
正文到此结束
Loading...