如何将数据暴露给zabbix

14 投票
2 回答
16187 浏览
提问于 2025-04-16 19:33

我的目标是:我想把一些指标报告给zabbix,这样我们就可以在网页上显示图表。

这些指标包括:

  • 每次提交SOAP服务的延迟
  • 来自一个或多个数据库的各种查询结果。

我需要写些什么,或者说我需要暴露哪些东西?还是说zabbix服务器会去某个暴露的服务那里获取这些数据?

有人告诉我,返回一个单一值的脚本可以工作,但我在想这样做是否正确。

2 个回答

3

其实有一个Python的库可以用来和zabbix_sender配合使用。你可以在这个链接找到它:http://pypi.python.org/pypi/zbxsend

15

我可以给你两个建议,帮助你把数据传送到Zabbix:

  1. 第一种方法是使用 zabbix_sender 这个程序,把你的脚本数据直接发送到Zabbix服务器。这样,你的脚本可以按照自己的时间间隔运行,并设置所需的所有参数。你只需要知道 zabbix_sender 程序的存放位置就行。

    在Zabbix服务器的界面里,你需要创建一种叫做 Zabbix trapper 的项目类型。这种类型的项目可以接收从 zabbix_sender 发送过来的值。你可以自定义一个键名,并且这个键名必须要一致。

  2. 第二种方法是,在 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版本时新推出的。

撰写回答