[当节点的代理发生故障时,如何通过Consul服务发现使该节点对Prometheus可见?

问题描述 投票:-1回答:1

我正在使用Consul在Prometheus中使用服务发现,并且在大多数情况下都运行良好。我在节点上运行了导出器,在相同节点上运行了Consul代理,并且已经通过代理在Consul群集中注册了导出器服务(使用对代理的REST调用)。 Prometheus正在正确找到注册的出口商并抓取指标。另外,当注册的服务(出口商)被撤下时,Prometheus会正确发送警报。但是...问题是,当节点丢失Consul代理时(只是代理进程或整个节点出现故障),Consul群集将再也看不到该节点!然后,Prometheus甚至不知道该节点,因此甚至不尝试抓取其导出器指标。因此,我没有收到警报。换句话说,当一个代理在某个节点上崩溃时,它就消失了,我什至都不知道。我已经尝试过“ leave_on_terminate”:在代理的agent.json配置中为false,但这没有什么区别。

是的,我知道我也可以使用DNS服务记录进行服务发现,即使Consul代理发生故障,这也可以使该节点在Prometheus中保持可见,但是在所有其他情况下,我都会重复使用指标当代理启动时。我想坚持只使用Consul范式进行服务发现,而不要在其中混用DNS服务记录方法。我也想避免单独监视代理(即通过黑盒导出器)。

有什么想法吗?请帮忙。谢谢!

prometheus consul
1个回答
0
投票

我们为此解决了这一问题。现在一切正常。

解决方案摘要:在代理容器中的agent.json配置中具有'“ leave_on_terminate”:false“的情况下,当代理容器在节点上发生故障时,Consul群集确实显示红色(原始问题),然后Prometheus只是默默地停止在该节点上抓取指标-并且不会发出警报(新问题的产生与原始问题相同)。我们最终还使用了节点上的consul-exporter,将指标发布到节点的consul代理上。这样一来,普罗米修斯在关闭领事代理时仍然没有发出警报,但是领事-出口商的指标表明它已关闭。因此,我们在rules.yml配置的Consul部分中添加了Prometheus规则,以在consul-exporter度量标准显示Consul代理已关闭时发出警报。端到端有效。

© www.soinside.com 2019 - 2024. All rights reserved.