![从远程 Icinga/Nagios 实例获取警报](https://linux22.com/image/613353/%E4%BB%8E%E8%BF%9C%E7%A8%8B%20Icinga%2FNagios%20%E5%AE%9E%E4%BE%8B%E8%8E%B7%E5%8F%96%E8%AD%A6%E6%8A%A5.png)
我在其中一个客户的站点上有一个 Icinga 服务器(基本上是 Nagios 的一个分支)。我通过访问该服务器,ssh
但无法访问其他端口。
由于该网站可能会出现一些问题,因此我建议至少每天检查一次该网站。因此我运行以下命令:
ssh -L 8080:localhost:80 [email protected]
并使用我的浏览器检查 Icinga Web UI:
http://localhost:8080
相当标准。
问题是,如果我有更多这样的客户端,那么通过 ssh 访问每个服务器都会是一种痛苦的经历。最受欢迎的解决方案是在这些主机上配置邮件警报,不幸的是这些机器无法访问互联网,而我通过 ssh 访问它们是唯一与它们联系的方式。
有没有办法通过 ssh 从这些实例收集信息?假设 Icinga 将当前警报转储到一个文件中,然后scp
将该文件转储到我的本地实例?或者还有其他解决方案吗?
我真的很感激能够来上班并在某个地方看到任何警报(本地仪表板、邮件等等)。
编辑远程站点应该有自己的 Icinga 设置,这样该网络内的任何人都可以检查其中的警报。此外,我希望在我这里有一个本地实例,它将聚合这些远程实例并仅显示来自它们的警报。这样,我就可以将其配置为在警报上发送电子邮件(从我的本地 Icinga 实例发送)
答案1
首先,你可以为每个站点指定一个特定的端口 8080、8081 等,然后使用类似自动SSH以保持连接。然后您就会连接上,只需从 8080 转到 8081 检查您已映射到指定本地端口的每个站点。
这种方法可以扩展,这样你就不用查看每个站点的本地端口,而是可以使用脚本进行检查。根据每个站点的 Icinga 站点上的内容,你可以定期使用自己的 Nagios/Icinga 站点进行检查,该站点已配置为检查你手动检查的各种内容。
如果没有更多具体信息的话,很难提供更多信息。
答案2
通常,解决方案是使用 NSCA 设置分布式 Nagios。但是,由于您说这些主机无法访问互联网,而且只能使用 SSH,因此您必须发挥更多的创造力。最好的办法可能是像现在一样保持 SSH 会话,但使用远程端口转发(-R 而不是 -L)为 NSCA 提供套接字,以便将结果提交给集中式 Nagios。您还可以让远程 Nagios 将结果写入文件,使用 SSH 获取该文件,然后在中央 Nagios 服务器上重播。无论哪种方式,您都可以查看中央 Nagios 上的 Web UI 并查看所有站点的结果。(您需要进行一些配置管理;您为每个主机远程定义的所有监控点都需要在中央服务器上进行镜像。)
答案3
结合建议的 SSH 隧道空间光度测量和通过 XML/JSON/SOAP/任何你喜欢的方式公开 nagios/icinga 状态的各种附加组件之一。
然后你需要编写(找到?)一个脚本,可以从所有这些不同的 localhost:8080、localhost:8081 等中抓取状态,可能使用检查多重或同等学历。
虽然它会有点脆弱,但通过精心定义的依赖关系以及保持这些隧道畅通的工具,它就可以发挥作用。