zabbix触发动作执行远程命令

前言

zabbix 是比较著名的开源分布式监控软件。现在已经发布到3.0版本,界面也比以前美观关很多。他的功能非常强大,自身已经提供了很多监控项。大多数人用它监控并触发报警,但是其实在报警之前我们可以让zabbix自动执行一些命令尝试自动恢复故障。运维人员也可以减少晚上起床爬起来处理报警的次数······

注意

  • visudo 添加一行,配置zabbix用户sudo免密执行,这里为了省事设置成了ALL。

    1
    zabbix   ALL=(ALL)    NOPASSWD:ALL
  • 注释visudo里的这一栏

    1
    #Defaults    requiretty
  • zabbix_agentd.conf 允许远程命令执行

    1
    EnableRemoteCommands = 1
  • 重启Agent

1
/etc/init.d/zabbix_agentd restart

添加动作


这里我们以监控nginx服务为例,如果发现80端口没有监听那么就重启nginx服务。上面是已经添加好的监控项和触发器。

下面我们为这个触发器添加一个动作。

配置-动作-创建动作

1.动作名称可以自定义

2.添加一个触发条件

3.添加一个动作操作,重启nginx(如果需要提权,记得命令前面加sudo)

验证

现在我们手动停掉nginx,模拟故障。看是否能够自动执行重启命令。

1
/etc/init.d/nginx stop

查看报表-动作日志

已经成功执行了动作,我们在看一下nginx是否有正常启动。

1
2
netstat -ntlp | grep nginx
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 12532/nginx

因为我这里监控项配置的数据更新间隔是1秒,所以从发现nginx故障到重启nginx是非常快的。

坚持原创技术分享,您的支持将鼓励我继续创作!