这一节我们继续配置报警,首先我们针对WindowsHost的机器重启配置一个邮件通知。
我们添加一个Trigger,利用SystemUptime来检测重启:
添加一个Action:
定义好Operation:
都配置好之后,我们重启了一下这台Windows虚拟机,发现并没有发送邮件。排查之后发现,用户组没有对监控的主机配置正确的权限,默认对All groups权限是None,我们需要对WindowsHosts主机配置权限:
配置成功后,我们再次重启机器,检查发现已经能够收到邮件:
如果还收不到邮件,可以检查几个方面:
Trigger的状态是否是Enabled
Email的配置是否正确
Trigger是否确实被出发
是否在维护时期
Action中的条件是否满足
我们可以在Reports->Actionlog中查看所有Action的触发情况:
邮件的格式比较low,需要的话大家根据自己的需要重新编排一下message即可。
我们再来做一个远程命令调用的Operation。
简单起见,我们直接利用之前配置过的Linux主机的聚合监控项LinuxHost.cpu.avg.overloaded来配置:
创建一个Action:
添加Operation:
我们需要为两台Linux主机修改zabbixagent的配置文件,修改下面一项:
EnableRemoteCommands=1
修改完需要重启zabbix agent。
接着我们在两台Linux主机里面下载一些文件或者做一些其它的调用,让两台主机的CPU升上来。如果没有触发的话,我们可以稍微调低一点Trigger的阈值,例如:
确认触发器规则生效:
进入两台Linux虚拟机内却并没有发现/var/log下生成了tmp.log日志。
经过了一番折腾发现需要在两台Linux主机中设置下面这些内容:
- 关闭selinux
- 在/etc/sudoers文件最后添加“zabbix ALL=NOPASSWD: ALL”这一行,以允许zabbix用户不需要密码直接切换到root执行操作
- 修改/var/log的权限为757,命令为chmod 757 /var/log,原因是zabbix这个用户对于/var/log默认没有w权限
- 执行usermod -s /bin/bash zabbix,保证用户可以作为登陆用户
修改完成后,我们使用“suzabbix -c "sudo date >> /var/log/tmp.log"”测试一下zabbix用户是否可以正常执行命令。成功之后,我们再次尝试触发Trigger的条件,然后就可以看到日志被正确写入了。查看Action log也能够看到命令成功执行的日志:
上面只是举了两个简单的例子,具体使用方法还需要实践多摸索~~