将监控数据从Nagios/Zenoss推送到另一个系统

将监控数据从Nagios/Zenoss推送到另一个系统

我已经构建了一个可以进行各种时间序列分析的系统,现在我想从监控工具中获取数据。由于我的测试环境中已经设置了 Nagios,所以我更喜欢从那里获取数据。但作为第二种选择,我可以访问 Zenoss 测试实例,并且也希望得到有关 Zenoss 的答案。

我想要的是

我想要多个设备上多个 KPI 的时间序列。

理想情况下,我可以指定数据格式,但只要它包含我需要的信息,我很乐意在收到后对其进行转换。我需要的信息只是

  • 设备标识符,例如10.2.42.2或者Ubuntu-42A
  • 被监控的组件例如中央处理器或者记忆
  • KPI 例如%用法可用千字节数
  • KPI 的价值
  • 时间戳

最后,我想通过 HTTP 发送数据(现在,稍后通过 HTTPS)。

我已经可以在出现警报时执行此操作 - 例如,当阈值被突破时,我知道如何配置 Nagios 以使用设备 IP 等作为参数调用我的简单脚本 - 然后我的脚本执行 HTTP 请求。但我还没有看到如何将其设置为在每一个轮询。

我不想要什么

我不想要警报数据,我想要原始时间序列。

我不想轮询 Nagios 来获取这些数据 - 轮询间隔会有所不同,而且我想避免不必要的网络流量。

我检查了这个问题但这似乎是将数据从 Nagios 从属节点发送到主节点纳吉奥斯节点。

答案1

您可以使用用于分布式监控的部分来完成此操作。

例如,使用ocsp 命令将所有检查结果发送到其他地方。命令 def 可以指向通过 curl 或类似方式推送 perfdata 的脚本。

答案2

我们nagios.cfg添加了

  • obsess_over_services=1
  • ocsp_command=OUR_COMMAND_NAME

然后我们在中定义新命令commands.cfg

  • command_name OUR_COMMAND_NAME
  • command_line /path/to/our/script

该脚本接收以下参数:

  1. 主机名
  2. 服务说明
  3. 服务状态
  4. 来自相关插件的消息

参考我的问题:我想要的设备是这个主机名,并且可以从服务描述和插件消息中提取组件和KPI。

但是我确实需要做一些解析工作来获取这些值,因为插件消息更多的是为人类而不是机器编写的,例如

OK - 1.05 GB used (1.05 GB RAM + 0.00 GB SWAP, this is 32.4% of 3.24 GB RAM)

但至少格式是一致的,所以我没有抱怨。

相关内容