如何在多位置方案中配置Prometheus?

时间:2018-11-26 21:00:52

标签: docker prometheus

我喜欢使用Prometheus进行监视和警报。到目前为止,我的所有目标(节点和容器)都与监视服务器位于同一网络上。

但是现在我面临一个场景,我们将应用程序堆栈(作为一堆Docker容器)部署到其网络中的多台客户端计算机上。几乎所有的客户端网络都位于防火墙或NAT之后。因此抓取变得非常困难。

由于我们仍然要对堆栈负责,所以我想拥有一个中央监控服务器,变更和仪表板。

我想知道如果想用Prometheus来实现最好的架构,但是我找不到任何令人信服的方法。到目前为止,我的想法:

  1. 使用我们的Pushgateway 并将所有数据推出客户端网络。正如文档所指出的那样,它并非旨在这样做:https://prometheus.io/docs/practices/pushing/
  2. 使用联合身份验证设置https://prometheus.io/docs/prometheus/latest/federation/):将Prometheus服务器放置在每个客户端网络中的反向代理后面(以启用SSL和身份验证),并在那里聚合相关指标。仅打开/转发单个端口即可进行联合身份验证。
  3. 其他更具实验性的设置,例如SSH隧道(例如,https://miek.nl/2016/february/24/monitoring-with-ssh-and-prometheus/)或VPN!?

提前感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

没有人发布答案,所以我将尝试就第二种选择发表意见,因为我认为我会在您的情况下这样做。

第二种设置似乎是最灵活的,您可以访问数据并且只需要为联合服务器打开一个端口,因此它仍然是安全的。

这种设置的另一个好处是,即使防火墙由于某种原因停止工作,您仍然会受到普罗米修斯的刮擦,您将收到警报,因为您将无法访问服务器( s),但是当连接再次出现时,您将拥有所有数据。在事件发生期间,除了没有数据之外,您在grafana仪表板上不会有任何漏洞。

此设置的问题在于您需要维护与网络数量相同的服务器数量。一个解决方案是拥有一个打包程序映像或一个可部署的剧本。