远程命令是一个很棒的功能,试想一下,你正在与甜美娇羞的小娘子兴奋的啪啪啪,突然短信来了,提示服务器里存储空间不够用,你还要翻身下床摸索出笔记本来把这些问题处理掉,处理完毕之后又要重新酝酿情绪,太扫兴了!其实这种一两个命令就能搞定的问题就应该交给Zabbix自己去解决。
我们这里就举一个“监控文件大小”的例子:假设我们把/mnt这个文件夹挂载到数据盘上,如果数据盘存储空间不够用,就要求zabbix远程自动删除一些过期的日志文件,只保留一天以内的日志文件。
于是乎,我们先写一个脚本,名字叫”mts删除过期日志.sh”,路径就在/share/yunwei/chenshuo里,整个内容如下:
#!/bin/bash cd /mnt/hswx/mts-bak rm -rf *.core cd /mnt/hswx/mts-bak/logs/ find . -name 'mts_*.log' -mtime +1 -exec rm -f {} /;
可以看出,在上面的脚本里我们先后进入了两个文件夹,然后对应删除.core文件和.log文件。
然后打开zabbix_agentd.conf,把里面的EnableRemoteCommands = 0改成1,并且重启zabbix_agent服务。
因为zabbix会调用一个叫zabbix的linux用户去执行操作,所以我们还要赋予zabbix用户一些权限可以让他自由的sudo,#sudoedit /etc/sudoers,增加如下内容:
这里注意一下,有的人斩钉截铁的说要在Defaults:zabbix !requiretty前面加上一个#,注释掉,我这里测试不用注释其实也可以。
然后返回zabbix,建立一个item,如图:
这里要注意一下,在Type的栏目里有Zabbix agent(active),切记不要选择这个!因为在active模式下,remote command是无效的。
现在我们再根据这个item去制定一个trigger,如图:
这里我先设定“已用空间大于35%就报警”,然后在Monitoring里发现有一台机器中标了,这台机器是js-online-mts-004。
然后来到Configuration—Action里,建立一个action,在Conditions里的设置如图:
在Operations里,我们的设置是这样的:
这里执行脚本和远程命令在Type里选择Custom script就好,如果是要关闭机器的话,就选择IPMI,在命令里写“Power off”,如果是要重启机器的话,还是IPMI,命令里写“Reset on”。当然还有比如SSH,Telnet等命令,这些就可以具体情况具体使用了。
update—save保存远程命令之后,我们应该可以看到,zabbix开始成功执行了这个命令,如图:
由原来的38%变成了21%,可见过期的日志文件真不少。
至此,整个远程执行命令过程就结束了。
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/55759.html