作者:广州九一乐维信息科技有限公司 许远
使用过zabbix调用脚本的运维人员都知道的一个现象,就是如果脚本运行的时间超过30s秒,就会获取该脚本执行的结果。
上述原因是zabbix的内部源码造成的,它限制了脚本执行的时间最多不超过30s
我们在 /usr/local/zabbix/scripts/ 目录下创建一个test目录,并创建一个test.py脚本,(shell脚本也行)
我们在脚本中加一个time .sleep(35) ,模拟脚本调用超时现象
执行改脚本。 T ime python test.py
从上图可以看出。手动执行改脚本是可以输出结果的。
采用zabbix_agent内置键调用test .py 脚本
S ystem.run[command,nowait]
Command :要执行的命令或者脚本
N owait:不等待用户返回的结果,永远返回1
图中的{HOST .IP} zabbix的内置宏,他的作用是自动获取该脚本的主机ip
注意:最好写绝对路径,否则可能出现报错
图中如果system .run 的command参数中间有空格请加单引号或者双引号
再次调用该脚本看一下
如果,此时脚本其实已经调用成功了,不会再出现超时提示。
接收超时脚本的结果**
创建一个zabbix采集器的监控项,命名为test
调整test .py 脚本结合zabbix_sender使用
总的过程就是通过system .run [command,nowait]内置键,触发该脚本,然后test .py 脚本执行完成后,把结果发送到监控主机上。
再次调用该脚本,永远返回1.
检查zabbix-server上的名称为test这个zabbix采集器的监控项有没有clean finish的字符串,有则说明,zabbix调用脚本成功。
验证成功。上述方法已经解决了脚本超时无法执行的问题
如果觉得我的文章对您有用,请点赞。您的支持将鼓励我继续创作!
赞0
添加新评论0 条评论