一、简介
Zabbix agent 可以运行被动检查和主动检查。
在被动检查模式中 agent 应答数据请求。Zabbix server(或 proxy)询求数据,例如 CPU load,然后 Zabbix agent 返还结果。
主动检查处理过程将相对复杂。Agent 必须首先从 Zabbix sever 索取监控项列表以进行独立处理,然后会定期发送采集到的新值给 Zabbix server。
是否执行被动或主动检查是通过选择相应的监控项类型来配置的。 Zabbix agent 处理“Zabbix agent”或“Zabbix agent(active)”类型的监控项。
主动模式与被动模式:
这二种模式在使用过程中有所不同,各有优势,主要有以下区别
模式 | Server 压力 | 远程命令 | 日志监控 |
---|---|---|---|
主动 | 低 | 不支持 | 支持 |
被动 | 高 | 支持 | 不支持 |
鉴于以上不同,根据实际需求,选择对应模式。
二、监控模式配置
配置被动模式,只需要配置以下几个参数即可:
Server=10.2.58.64
Server 配置为 Zabbix Server 或 Zabbix proxy 的地址,也可以配置域名/ip,如需配置多个地址,多地址之间用英文逗号隔开即可,如:192.168.1.50,10.11.3.25。这里可以理解为 ACL 功能,即允许那些 Zabbix Server 及 Zabbix Proxy 访问 Zabbix Agent,因此可以配置网段和配置成所有 IP,如:192.168.1.0/24 或 0.0.0.0/0,纯被动模式下只需要配置 Server 即可 Hostname 不配置。 配置好之后重启即可生效。
远程命令:
与主动模式不同,被动模式支持 zabbix agent 执行远程命令。在出现告警后,发送邮件的同时,可以配置远程命令实现故障“自愈”,如重启服务等
需在Zabbix Agent 配置文件中开启:
AllowKey=system.run[*]
EnableRemoteCommands=1
LogRemoteCommands=1
EnableRemoteCommands 配置开启远程命令 LogRemoteCommands 在日志中记录远程命令 配置之后重启 Zabbix Agent即可生效。
由于 zabbix 执行命令默认是以zabbix系统用户执行,因此需要在操作系统上为 zabbix 用户配置 sudo。
vi /etc/sudoes
zabbix ALL=NOPASSWD: ALL
配置为 ALL,这里也可以配置成具体的命令
zabbix ALL=NOPASSWD: /etc/init.d/nginx restart
三、Server配置
配置一个 Nginx 自动恢复,使用 zabbix agent 远程命令实现 nginx 停止自动启动。 配置一个监控项,监控 Nginx 的 80 端口。并配置一个Trigger 端口不存在时告警。再配置一个 Action动作,条件为 Trigger 名称,端口 down 之后,执行脚本重启 Nginx。然后为 Action 配置 Operations,添加一个远程执行命令。为配置命令和需要执行的主机即可。
注:被动模式远程命令,是以 zabbix 用户执行,注意配置 sudo 及权限命令后可跟参数,参数可以使用 zabbix 的内置宏。AllowKey中也可限制运行执行的命令也就是所谓命令权限的黑白名单。
模式示例
模式 | 描述 | 匹配 | 不匹配 |
---|---|---|---|
* | 匹配所有可能的带或不带参数的键。 | 任何 | 无 |
vfs.file.contents | 匹配不带参数的vfs.file.contents 。 | vfs.file.contents | vfs.file.contents[/etc/passwd] |
vfs.file.contents[] | 匹配带有空参数的vfs.file.contents 。 | vfs.file.contents[] | vfs.file.contents |
vfs.file.contents[*] | 匹配 vfs.file.contents 和任何参数;不匹配没有方括号的 vfs.file.contents 。 | vfs.file.contents[] vfs.file.contents[/path/to/file] | vfs.file.contents |
vfs.file.contents[/etc/passwd,*] | 匹配 vfs.file.contents 与第一个参数匹配 /etc/passwd 和所有其他参数具有任何值(也可以为空)。 | vfs .file.contents[/etc/passwd,] vfs.file.contents[/etc/passwd,utf8] | vfs.file.contents[/etc/passwd] vfs. file.contents[/var/log/zabbix_server.log] vfs.file.contents[] |
vfs.file.contents[*passwd*] | 匹配 vfs.file.contents ,第一个参数匹配 *passwd* 而没有其他参数。 | vfs.file.contents[/etc /passwd] | vfs.file.contents[/etc/passwd,] vfs.file.contents[/etc/passwd, utf8] |
vfs.file.contents[*passwd*,*] | 匹配 vfs.file.contents ,只有第一个参数匹配 *passwd* 和所有后续参数具有任何值(也可以为空)。 | vfs.file.contents[/etc/passwd,] vfs.file.contents[/etc/passwd, utf8] | vfs.file.contents[/etc/passwd]<br >vfs.file.contents[/tmp/test] |
vfs.file.contents[/var/log/zabbix_server.log,*,abc] | 匹配 vfs.file.contents 与第一个参数匹配 /var/log/zabbix_server.log , 第三个参数匹配 'abc' 和任何(也可以为空)第二个参数。 | vfs.file.contents[/var/log/zabbix_server.log,,abc] vfs.file.contents[/ var/log/zabbix_server.log,utf8,abc] | vfs.file.contents[/var/log/zabbix_server.log,,abc,def] |
vfs.file.contents[/etc/passwd,utf8] | 匹配 vfs.file.contents ,第一个参数匹配 /etc/passwd,第二个参数匹配 'utf8',没有其他参数。 | vfs. file.contents[/etc/passwd,utf8] | vfs.file.contents[/etc/passwd,] vfs.file.contents[/etc/passwd,utf16] |
vfs.file.* | 匹配任何以 vfs.file. 开头且不带任何参数的键。 | vfs.file.contents vfs.file.size | vfs.file.contents[]< br>vfs.file.size[/var/log/zabbix_server.log] |
vfs.file.*[*] | 匹配任何以 vfs.file. 开头的键和任何参数。 | vfs.file.size.bytes[] vfs.file.大小[/var/log/zabbix_server.log, utf8] | vfs.file.size.bytes |
vfs.*.contents | 匹配任何以 vfs. 开头并以 .contents 结尾且不带任何参数的键。 | vfs.mount.point.file.contents vfs..contents | vfs.contents |
博主可能不能及时回答疑问,如技术问题欢迎加入交流。
博主具有丰富的模板资源和开发能力及项目落地管理经验分享欢迎加入交流
微信号:king_songax