如何将数据暴露给zabbix
我的目标是:我想把一些指标报告给zabbix,这样我们就可以在网页上显示图表。
这些指标包括:
- 每次提交SOAP服务的延迟
- 来自一个或多个数据库的各种查询结果。
我需要写些什么,或者说我需要暴露哪些东西?还是说zabbix服务器会去某个暴露的服务那里获取这些数据?
有人告诉我,返回一个单一值的脚本可以工作,但我在想这样做是否正确。
2 个回答
其实有一个Python的库可以用来和zabbix_sender配合使用。你可以在这个链接找到它:http://pypi.python.org/pypi/zbxsend
我可以给你两个建议,帮助你把数据传送到Zabbix:
第一种方法是使用
zabbix_sender
这个程序,把你的脚本数据直接发送到Zabbix服务器。这样,你的脚本可以按照自己的时间间隔运行,并设置所需的所有参数。你只需要知道zabbix_sender
程序的存放位置就行。
在Zabbix服务器的界面里,你需要创建一种叫做Zabbix trapper
的项目类型。这种类型的项目可以接收从zabbix_sender
发送过来的值。你可以自定义一个键名,并且这个键名必须要一致。第二种方法是,在
zabbix_agentd.conf
文件里指定一个键名和脚本/程序。每当Zabbix服务器请求这个项目时,脚本就会被调用,脚本中的数据会被记录下来。
这样你就可以在Zabbix项目配置中设置时间间隔,而不需要强制你的脚本按照自己的时间间隔运行。不过,你需要在每个主机的zabbix_agentd.conf
文件里添加这部分额外的信息。
可能还有其他方法可以直接通过Python来实现(比如Python的 zabbix_sender
绑定)。但这两种方法是我之前用过的,效果很好。这并不特别针对Python。不过,你应该能在你的Python脚本中使用 zabbix_sender
。希望这些信息对你有帮助!
更新:我还记得Zabbix正在开发一个API(JSON/RPC风格)。不过目前文档网站无法访问,我不确定这个API是否用于提交项目数据。这里是关于API的维基链接: http://www.zabbix.com/wiki/doc/api
还有一个Python API的项目: https://github.com/gescheit/scripts/tree/master/zabbix/
关于这个API的文档似乎很少,因为它是在Zabbix 1.8版本时新推出的。