我喜欢使用 Prometheus 进行监控和警报。到目前为止,我的所有目标(节点和容器)都与监控服务器位于同一网络上。
但现在我面临一个场景,我们将应用程序堆栈(作为一堆 Docker 容器)部署到网络中的多台客户端计算机。几乎所有客户端网络都位于防火墙或 NAT 后面。所以刮痧变得相当困难。
由于我们仍然对堆栈负责,因此我希望拥有一个中央监控服务器、更改和仪表板。
我想知道如果想用 Prometheus 实现它,最好的架构是什么,但我找不到任何令人信服的方法。到目前为止我的想法:
-
使用推送网关在我们这边并将所有数据推出客户端网络。正如文档所述,它并不是这样的:https://prometheus.io/docs/practices/pushing/ https://prometheus.io/docs/practices/pushing/
-
使用联合设置 (https://prometheus.io/docs/prometheus/latest/federation/ https://prometheus.io/docs/prometheus/latest/federation/):在反向代理后面的每个客户端网络中放置一个 Prometheus 服务器(以启用 SSL 和身份验证)并在那里聚合相关指标。仅打开/转发单个端口以进行联合抓取。
- 其他更具实验性的设置,例如 SSH 隧道(例如此处https://miek.nl/2016/february/24/monitoring-with-ssh-and-prometheus/ https://miek.nl/2016/february/24/monitoring-with-ssh-and-prometheus/)还是VPN!?
预先感谢您的帮助!
没有人发表答案,所以我会尝试对第二个选择发表我的意见,因为这就是我认为在你的情况下我会做的。
第二种设置似乎是最灵活的,您可以访问数据并且只需要为联合服务器打开一个端口,因此它仍然应该是安全的。
这种类型设置的另一个好处是,即使防火墙由于某种原因停止工作,您仍然会遇到普罗米修斯抓取,您将收到警报,因为您将无法访问服务器,但当连接再次出现时,您将获得所有数据。 grafana 仪表板上不会有漏洞,因为除了事件发生期间之外没有任何数据。
此设置的问题在于您需要维护与网络数量相当的服务器数量。解决方案是使用加壳器映像或可部署的 Ansible 剧本。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)