Prometheus监控实战系列二十四: Alertmanager集群

news/2024/12/12 20:27:38/

上篇文章介绍了Prometheus Server自身的高可用方案,但除了Prometheus Server外,Alertmanager也是整个告警体系里面重要的组件。所有的告警都需要通过它来进行发送,当Alertmanager出现问题时,告警信息将无法送达用户。

本文我们将讲解关于Alertmanager的集群方案。

1、功能概述

Alertmanager使用HashiCorp 公司的Memberlist库来实现集群功能。Memberlist使用Go语言开发,并基于Gossip的协议来管理集群成员和成员故障检测。

Gossip协议(Gossip protocol)是一种去中心化、容错并保证最终一致性的协议,被广泛应用于分布式系统中。Gossip的原理是由网络中的某个节点,通过一种随机的方式向集群中的N个节点同步信息,相关节点在收到消息后,又会重复相同的工作,最终达到整个集群所有节点的统一。
在这里插入图片描述
Gossip协议具有以下优点:

  • 扩展性强,可以允许集群内节点任意增加或者减少。
  • 协议操作简单,实现起来简单方便。
  • 容错性强,节点之间是平等关系,任何节点出现问题都不影响集群。
  • 最终一致性,可以在较短时间内快速将变化覆盖到全局节点。

2、Alertmanager配置

在本次配置中,我们通过三个Alertmanager来进行演示,分别为am1、am2和am3,其中am1主机做为集群的启动节点。每台alertmanager必须保证配置文件的一致性,否则集群实际上并不是高可用的效果 。

am1: 192.168.75.160
am2: 192.168.75.166
am3: 192.168.75.167

Gossip的传播需要指定特定端口,此处我们使用8001为监听端口。为了能够让Alertmanager节点之间进行通讯,需要在Alertmanager启动时设置相应的参数。其中主要的参数包括:

--cluster.listen-address string: 当前实例集群服务监听地址

--cluster.peer value: 初始化时关联的其它实例的集群服务地址

am1启动配置:

alertmanager --config.file alertmanager.yml --storage.path /data/alertmanager/ --cluster.listen-address="192.168.75.160:8001" &

am2与am3启动配置:

alertmanager --config.file alertmanager.yml --storage.path /data/alertmanager/ --cluster.listen-address="0.0.0.0:8001" --cluster.peer=192.168.75.160:8001 &

在配置完成后,我们可以在任意一个Alertmanager中看到如下状态,证明三个节点已加入到集群中。

在这里插入图片描述
在集群启动后,我们可以在其中一个Alertmanager上设置silence,并查看配置是否复制到其他Alertmanager节点,以此来验证集群是否正常工作。如下图所示,现在集群已经在正常运行,接下来可以开始进行Prometheus的设置。

在这里插入图片描述

在这里插入图片描述

3、Prometheus设置

对于Alertmanager集群,我们不需要在集群前面额外增加负载均衡器。在Prometheus的配置文件中,只需要将所有Alertmanager的地址配置进去,这样当集群中的某个Alertmanager发生故障时,Prometheus会自动找寻另一个来发送警报。而收到警报Alertmanager节点,自身会负责与集群中的其他活动成员共享所有收到的警报。

# Alertmanager configuration
alerting:alertmanagers:- static_configs:- targets:- 192.168.75.160:9093- 192.168.75.166:9093- 192.168.75.167:9093

启动Prometheus后,我们在Status页面会看到相关的Alertmanager信息,代表配置成功。

在这里插入图片描述

上一篇:Prometheus监控实战系列二十三:高可用与扩展性
下一篇:Prometheus监控实战系列二十五: Thanos介绍


http://www.ppmy.cn/news/37044.html

相关文章

布隆过滤器原理及实践

1 背景 现在有海量的数据,而这些数据的大小已经远远超出了服务器的内存,现在再来一条数据,如何快速高效判断这条数据在不在其中? 如果这些数据是存在数据库中的,考虑索引,分库分表;或者考虑其…

浅聊面试这件事

目录 哪个时间点适合跳槽 如何准备面试 面试原则 面试常见问题 哪个时间点适合跳槽 金三银四、金九银十,这些都📌标记为我们的最佳跳槽节点,但是这些节点真的是最佳的么,也需要因人而异。 如果公司年前不发年终奖&#xff0c…

Thread 类的基本用法

文章目录一、线程创建1.1 Thread的常见构造方法2.1 创建线程二、线程中断2.1 Thread的几个常见属性2.2 中断线程三、线程等待四、线程休眠五、获取线程实例一、线程创建 1.1 Thread的常见构造方法 方法说明Thread()创建线程对象Thread(Runnable target)使用Runnable对象创建线…

JSON 基础结构

什么是JSON JSON,说白了就是JavaScript用来处理数据的一种格式,这种格式非常简单易用。 JSON,大部分都是用来处理JavaScript和web服务器端之间的数据交换,把后台web服务器的数据传递到前台,然后使用JavaScript进行处…

Qt中connect中[]()和[]()有什么区别?

1、Qt中connect中[]()和[&]()有什么区别? 你想知道 connect 中 和 & 有什么区别吗?根据我查到的信息,这两种写法都是 lambda 表达式的一种,它们可以用来创建匿名函数对象,用于传递给 connect 的槽参数。它们的…

【新2023Q2模拟题JAVA】华为OD机试 - 预订酒店

最近更新的博客 华为od 2023 | 什么是华为od,od 薪资待遇,od机试题清单华为OD机试真题大全,用 Python 解华为机试题 | 机试宝典【华为OD机试】全流程解析+经验分享,题型分享,防作弊指南华为od机试,独家整理 已参加机试人员的实战技巧本篇题解:预订酒店 题目 放暑假了,橡…

你知道Python 最常用的 20 个包吗(按照使用频率排序)

文章目录numpy(数据处理和科学计算)pandas(数据处理和分析)matplotlib(数据可视化)scikit-learn(机器学习工具)tensorflow(深度学习框架)keras(深…

通过Interceptor以及Redis实现接口访问防刷

方式一 以下是通过Interceptor以及Redis实现接口访问防刷的Java代码示例: 首先,创建一个自定义拦截器类,实现HandlerInterceptor接口,并在preHandle方法中添加接口防刷逻辑。例如: Component public class RateLimi…