企业真实案例:zabbix调用脚本超时解决方案
场景模拟:
- 企业需要对某台执行一个清理系统垃圾的脚本
- 企业需要对某台数据库执行一个查询数据库的脚本
- 企业需要对某台监控设备进行一系列动作的脚本
现象分析
使用过zabbix调用脚本的运维人员都知道的一个现象,就是如果脚本运行的时间超过30s秒,就会获取该脚本执行的结果。
上述原因是zabbix的内部源码造成的,它限制了脚本执行的时间最多不超过30s
现象重现
我们在/usr/local/zabbix/scripts/目录下创建一个test目录,并创建一个test.py脚本,(shell脚本也行)
我们在脚本中加一个time.sleep(35),模拟脚本调用超时现象
执行改脚本。Time python test.py
从上图可以看出。手动执行改脚本是可以输出结果的。
接着在zabbix创建脚本,执行调用该脚本的操作
调用脚本
上图证明zabbix调用脚本有超时限制
解决方案
通过agent的内置键system.run+zabbix_sender结合实现,调用脚本并返回结果
第一步:
采用zabbix_agent内置键调用test.py脚本
System.run[command,nowait]
Command:要执行的命令或者脚本
Nowait:不等待用户返回的结果,永远返回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调用脚本成功。
验证成功。上述方法已经解决了脚本超时无法执行的问题。
- Go调用企业微信API发送zabbix告警信息脚本
- Windows Azure真实案例:Glympse 位置分享解决方案提供商通过托管服务获得了生产力和敏捷性
- [2015-11-10]分享一个调用msbuild生成解决方案并打包发布的批处理脚本
- 通过脚本调用MSBuild编译项目时指定Configuration(解決方案配置)和Platform(解決方案平台),Rebuid(重新生成解决方案),Clean(清理解决方案)
- java调用shell脚本小案例
- Windows Azure 客户真实案例:交互式解决方案提供商获得了敏捷性,通过托管服务节省了成本
- Windows Azure真实案例:Glympse 位置分享解决方案提供商通过托管服务获得了生产力和敏捷性
- 企业运维案例:提升用户体验的网站解决方案
- 小企业sql server数据备份shell脚本解决方案
- 【案例实战】餐饮企业分店财务数据分析系统解决方案:业务需求
- loadrunner调用QTP脚本来实现性能测试(一次现场特殊需求的解决方案)
- 企业移动信息化解决方案——微信与SAP集成应用案例:逾期应收款管理
- Windows Azure真实案例:FullArmor 解决方案提供商以基于云的平台提供了灵活的策略解决方案
- Windows Azure真实案例:Glympse 位置分享解决方案提供商通过托管服务获得了生产力和敏捷性
- zabbix 调用的发邮件脚本
- Unity 3d C#和Javascript脚本互相调用 解决方案(非原创、整理资料,并经过实践得来)
- PHP调用shell脚本导致的中文显示问号的解决方案
- 真实工作经验总结——案例解析企业选型操作步骤
- zabbix 调用python脚本监控 磁盘剩余空间(创建模版,创建监控项,创建触发器)
- shell脚本 如何调用Mysql的存储过程 解决方案