我试图用Zabbix API实现一个功能,基本要求是:创建命令脚本(字符串或脚本文件都可以,无论是保存在服务器还是代理上) - >在代理上执行;
我找到了使用Remote Command执行此操作的两种方法:
1)全局脚本:我可以通过直接调用script.execute来使用它,但是"远程命令限制为255个字符",它不足以创建脚本/命令作为我们的需求;如果我们需要使用Python,那就更难了,#python -c" ..."如果Python脚本很复杂,并且使用shell命令在代理上创建* .py文件需要更多字符,则无法正常运行;
全局脚本保存在脚本表中,但根据https://www.zabbix.com/forum/showthread.php?t=51869中的注释,通过将长度从255增加到1024来更改表结构不是一个好主意;
2)自定义脚本:对命令字符没有限制,但我必须在Action中配置它,并等待触发它。
另一方面,即使Remote Command也可以在代理上创建脚本文件,它仍然不方便,有没有办法通过Zabbix自己的功能将文件从Zabbix Server发送到Agent?
我想在Zabbix论坛上问它,但我没有权限创建新帖子/帖子,所以我去了这里。
有没有人能给我一些帮助呢?
答案 0 :(得分:1)
这不是监控系统的真正特征。您可以滥用system.run
密钥 - 有一个脚本将目标脚本拆分为~200字节块,然后通过运行远程命令或zabbix_get
这样在代理上连接它们(并且小心换行):
zabbix_get -s target.host -k "system.run[echo \"$script_part\" >> /script_location]"
但是,那将是非常可怕和骇人听闻的。
虽然有a feature request to introduce agent configuration management in Zabbix,但我是否已经提到它对监控系统来说不是一项真正的任务?您可能希望查看系统管理工具,例如Puppet,Chef和其他工具。