alertmanager高可用集群的部署方案

news2025/1/11 14:30:53

目录

alertmanager集群模式如何形成?

先看看prometheus这边怎么配

非容器部署

基于容器部署


alertmanager集群模式如何形成?

官方的:Alertmanager | Prometheus

GitHub - prometheus/alertmanager: Prometheus Alertmanager

 基本上就是,通过cluster相关的参数进行组织。翻译原话过来就是:要创建 Alertmanager 的高可用性集群,需要将实例配置为相互通信。这是使用--cluster.*标志配置的 。

写的看起来很简单,但实际操作时,一次就完全成功可能远了点,下面直接来看成功案例,不费劲。

先看看prometheus这边怎么配

假设现在后面要做得alertmanager相关的都已经做好,这需要如何关联?

很简单(下图是以docker容器部署时的两个alert实例):

 注意端口别写错了,如果写错,那又是另一桩血案......

非容器部署

以两台机器为例

172.18.6.150上:

./alertmanager --web.listen-address=":9093" --cluster.listen-address="172.18.6.150:8101" --log.level=debug

172.18.6.158上:

./alertmanager --web.listen-address=":9093" --cluster.listen-address="172.18.6.158:8101" --cluster.peer=172.18.6.150:8101  --log.level=debug

这就相当于两个实例构成一个集群,两个之间通信通过各自开放的端口,前者开放8101,后者开放8101,同时后者通过cluster.peer来设置自己通过172.18.6.150:8101加入集群,看看日志:

看看页面状态:

 (重要:如果你的不正常,那么看一下宿主机对对应端口的开放,是两种协议都要开放哦!)

这时候,prometheus的配置则是

  - targets:
      - '172.18.6.158:9093'
      - '172.18.6.150:9093'

如果你的prom也是集群模式,则告警这块都这么配就OK。 

没错,这就可以了。那么试想一下,这时候是两个实例,如果配置文件相同,告警发生后是发送一次还是两次?

HA模式下,alertmanager的配置文件配一样的就好,这样在发送告警时可自行判断和协调,最后决定以哪个实例来发送告警信息到用户,发出的告警也不会重复。这是怎样实现的?

-----可移步:GitHub - hashicorp/memberlist: Golang package for gossip based membership and failure detection

总结一下就是:

多个Alertmanager通过gossip协议可以组成一个集群。这时候每个alertmanager的规则可以完全一致,当触发告警时集群内各个节点通过gossip协议相互通信,即进行了发送前先对齐一下的过程,如果有重复的需要发送,则只发送一次。

n台机器组成集群都一样。

基于容器部署

下面你看到的直接是正确姿势,这是历经无数踩坑之后的...

启动第一个:

docker run -d -p 19093:9093 -p 19193:19193 -p 19193:19193/udp --name alert1 --restart always -v /opt/prom_mappings/alert1:/etc/alertmanager jialanli/alertmanager:0.22.2  --config.file=/etc/alertmanager/alertmanager.yml --cluster.listen-address=0.0.0.0:19193 --cluster.advertise-address=192.168.30.31:19193 --log.level=debug --cluster.peer-timeout=40s

第二个:

docker run -d -p 19094:9093 -p 19194:19194 -p 19194:19194/udp --name alert2 --restart always -v /opt/prom_mappings/alert2:/etc/alertmanager jialanli/alertmanager:0.22.2  --config.file=/etc/alertmanager/alertmanager.yml --cluster.listen-address=0.0.0.0:19194 --cluster.advertise-address=192.168.30.31:19194 --cluster.peer=192.168.30.31:19193 --log.level=debug --cluster.peer-timeout=40s

非常关键的、需要极其注意的地方是 -p x:y/udp 

这时候,prom这么配(和非容器下一样):

    - targets:
      - '192.168.30.31:19093'
      - '192.168.30.31:19094'

 看看效果

 告警触发且alertmanager收到prometheus发送的告警通知后,如果看到这种日志在交替打印,那么就是正常的:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1373428.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C++面试宝典第18题:旋转数组

题目 给定一个数组,将数组中的元素向右移动k个位置,其中k是非负数。要求如下: (1)尽可能想出更多的解决方案,至少有三种不同的方法可以解决这个问题。 (2)使用时间复杂度为O(n)和空间复杂度为O(1)的原地算法解决这个问题。 示例 1: 输入: [1, 2, 3, 4, 5, 6, 7] 和 k…

Vue中的class和style绑定

聚沙成塔每天进步一点点 本文内容 ⭐ 专栏简介动态绑定class对象语法数组语法 动态绑定style对象语法多重值 ⭐ 写在最后 ⭐ 专栏简介 Vue学习之旅的奇妙世界 欢迎大家来到 Vue 技能树参考资料专栏!创建这个专栏的初衷是为了帮助大家更好地应对 Vue.js 技能树的学习…

免费远程控制软件推荐2024最新

远程控制软件在我们的生活和工作中越来越常见,今天给大家分享一个免费的远程控制软件,教你如何使用手机远程控制电脑。 首先,您需要在电脑上安装KKView远程控制软件,该软件提供手机端和桌面端。安装完成后,您将获得一个…

win7添加access的odbc数据源

从控制面板打开odbc数据源;如果像下面没有access的驱动程序, 根据资料,打开C盘-Windows-SysWow64-odbcad32.exe,看一下就有了; 然后添加用户DSN,选中access的驱动程序, 自己输入一个数据源名&am…

Hive基础知识(七):Hive 数据类型全解

1. 基本数据类型 对于 Hive 的 String 类型相当于数据库的 varchar 类型,该类型是一个可变的字符串,不过它不能声明其中最多能存储多少个字符,理论上它可以存储2GB 的字符数。 2. 集合数据类型 Hive 有三种复杂数据类型 ARRAY、MAP 和 STRUCT…

docker 部署项目的操作文档,安装nginx

目录 1 部署环境检查2 相关知识点2.1 docker默认镜像存放地址2.2 docker 的镜像都是tar 包?2.3 Docker-compose 是直接使用镜像创建容器?2.4 Docker Compose down 就是将容器删除?2.5 删除,会删除挂载嘛2.6 DockerFile 和 docker …

远程求职:有什么不同吗?

外面的世界很大,你渴望探索它,但面对现实吧,你必须吃饭。远程工作可能就是答案。下面的博客详细介绍了您需要了解的有关找到工作的细节,同时也可以让您在需要时收拾行李继续前进。 申请任何工作,无论是远程工作还是办…

服务容错-熔断策略之断路器hystrix-go

文章目录 概要一、服务熔断二、断路器模式三、hystrix-go3.1、使用3.2、源码 四、参考 概要 微服务先行者Martin Fowler与James Lewis在文章microservices中指出了微服务的九大特征,其中一个便是容错性设计(Design for failure)。正如文章中提到的,微服…

宋仕强论道之华强北精神和文化(二十一)

华强北的精神会内化再提炼和升华成为华强北文化,在外部会流传下去和传播开来。在事实上的行动层面,就是华强北人的思维方式和行为习惯,即见到机会就奋不顾身敢闯敢赌,在看似没有机会的时候拼出机会,和经济学家哈耶克企…

【OSG案例详细分析与讲解】之四:【3D动画场景】

文章目录 一、【3D动画场景】前言 二、【3D动画场景】实现效果 三、【3D动画场景】创建动画路径 1、实现目的 2、创建动画路径步骤 3、核心代码 4、知识要点 5、AnimationPath详讲 四、【3D动画场景】创建基础模型 1、实现目的 2、创建基础模型步骤 3、核心代码 4、知识要点 5、…

openssl3.2 - 官方dmeo学习 - server-arg.c

文章目录 openssl3.2 - 官方dmeo学习 - server-arg.c概述笔记备注END openssl3.2 - 官方dmeo学习 - server-arg.c 概述 TLS服务器, 等客户端来连接; 如果客户端断开了, 通过释放bio来释放客户端socket, 然后继续通过bio读来aceept. 笔记 对于开源工程, 不可能有作者那么熟悉…

uniapp 字母索引列表插件(组件版) Ba-SortList

简介(下载地址) Ba-SortList 是一款字母索引列表组件版插件,可自定义样式,支持首字母字母检索、首字检索、搜索等等;支持点击事件。 支持首字母字母检索支持首字检索支持搜索支持点击事件支持长按事件支持在uniapp界…

VMware vSphere运维管理手册

适用版本:VMware vSphere 7.0 VMware vSphere 是 VMware 的虚拟化平台,可将数据中心转换为包括 CPU、存储和网络资源的聚合计算基础架构。vSphere 将这些基础架构作为一个统一的运行环境进行管理,并为您提供工具来管理加入该环境的数据中心。 ![[Pasted image 20231212132…

数据库原理与应用期末复习试卷1

数据库原理与应用期末复习试卷1 一.单项选择题 数据库系统是采用了数据库技术的计算机系统,由系统数据库,数据库管理系统,应用系统和(C)组成。 ​ A.系统分析员 B.程序员 C.数据库管理员 D.操作员 数据库系统的体系…

YOLOv5改进 | 检测头篇 | DynamicHead支持检测和分割(不同于网上版本,全网首发)

一、本文介绍 本文给大家带来的改进机制是DynamicHead(Dyhead),这个检测头由微软提出的一种名为“动态头”的新型检测头,用于统一尺度感知、空间感知和任务感知。网络上关于该检测头我查了一些有一些魔改的版本,但是我觉得其已经改变了该检测头的本质,因为往往一些细节上才…

解决STM32F7系列芯片TIM无法触发ADC采样的问题

我在测试STM32F746 ADC DMA TIM 做AD采样时候发现 使用cubeMX 库生成的代码无法进入DMA中断,发现官方勘误手册有做解释,需要打开DAC时钟。如下 如上图,在ADC初始化代码中加入 __HAL_RCC_DAC_CLK_ENABLE();

统一密钥管理在信息安全领域有什么作用

统一密钥管理在信息安全领域中至关重要。它可以确保密钥的安全性、保密性和可用性,同时降低开发、维护和管理的成本。 对于没有KMS(密钥管理服务)管理系统的公司,密钥的本地化管理可能导致密钥分散在代码、配置文件中,缺乏统一管理&#xff0…

999合1超级简易文字菜单组件

引言 超级简易文字菜单组件 大家好,相信大家都玩过那个999合1的游戏,特别是那个菜单。 在游戏开发中,往往会有形式各异的游戏菜单,游戏菜单和菜单一样主要是给玩家选择开始游戏、设置、排行榜等功能的。 本文将分享一下笔者在…

【MMC子系统】四、MMC控制器驱动层

我的圈子: 高级工程师聚集地 我是董哥,高级嵌入式软件开发工程师,从事嵌入式Linux驱动开发和系统开发,曾就职于世界500强企业! 创作理念:专注分享高质量嵌入式文章,让大家读有所得! …

网络服务DHCP与DNS

一 DHCP的工作原理(租约过程) 分类 1)自动分配:分配到一个IP地址后永久使用 (2)手动分配:由DHCP服务器管理员指定IP(打印机、报销系统)把mac地址和ip地址做一个一一对…