alertmanager高可用集群的部署方案

目录

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.hqwc.cn/news/338923.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Element Plus 离线手册 下载

Element Plus (Vue3) 离线手册,解压就能用,双击运行,浏览器访问 http://localhost:7011 获取方式:原文关注微信公众号,回复消息:7011ELP Element Plus 离线手册 下载Vue3 Element Plus 离线手册 离线文档 …

揭秘LoRA与QLoRA:百次实验告诉你如何微调LLM!

原文链接:揭秘LoRA与QLoRA:百次实验告诉你如何微调LLM!​​​​​​​ LoRA(低秩适应)是目前应用最广泛、参数效率最高的自定义大型语言模型(LLM)微调技术之一。本文不仅介绍了使用QLoRA节省内存…

Webpack模块打包工具

目录 Webpack模块打包工具知识点自测01.Webpack 简介以及体验目标讲解小结 02.Webpack 修改入口和出口目标讲解小结 03.案例-用户登录-长度判断目标讲解小结 04.Webpack 自动生成 html 文件目标讲解小结 05.Webpack-打包 css 代码目标讲解小结 06.优化-提取 css 代码目标讲解小…

深入理解 Flink(五)Flink Standalone 集群启动源码剖析

前言 Flink 集群的逻辑概念: JobManager(StandaloneSessionClusterEntrypoint) TaskManager(TaskManagerRunner) Flink 集群的物理概念: ResourceManager(管理集群所有资源,管理集群所有从节点) TaskExecutor(管理从节点资源,接…

【Spring Boot】SpringBoot maven 项目创建图文教程

创建一个Spring Boot项目并使用Maven进行构建是一项相对简单的任务。以下是使用IntelliJ IDEA创建Spring Boot Maven项目的详细教程: 步骤 1:安装 IntelliJ IDEA 确保你已经安装了最新版本的 IntelliJ IDEA。你可以从官方网站下载并安装。 步骤 2&am…

AlmaLinux 9.3 系统 安装配置 Zabbix6.4 监控系统(史上最全 小白都能看懂)

AlmaLinux 9.3 部署 Zabbix6.4 Zabbix安装部署 安装 Zabbix 源 rpm -Uvh https://repo.zabbix.com/zabbix/6.4/rhel/9/x86_64/zabbix-release-6.4-1.el9.noarch.rpm 清除缓存文件 dnf clean all 安装Zabbix server,Web前端,agent dnf install zabb…

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

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

设计模式-规格模式

设计模式专栏 模式介绍模式特点应用场景规格模式和策略模式的区别和联系代码示例Java实现规格模式Python实现规格模式 规格模式在spring中的应用 模式介绍 规格模式(Specification Pattern)是一种行为设计模式,其目的是将业务规则封装成可重…

嵌入式培训机构四个月实训课程笔记(完整版)-Linux网络编程第一天-socket编程(物联技术666)

更多配套资料CSDN地址:点赞+关注,功德无量。更多配套资料,欢迎私信。 物联技术666-CSDN博客物联技术666擅长嵌入式C语言开发,嵌入式培训笔记,嵌入式硬件,等方面的知识,物联技术666关注机器学习,arm开发,物联网,嵌入式硬件,单片机领域.https://blog.csdn.net/weixin_3980490…

Blazor 错误笔记

1. 运行时问题 Microsoft.NETCore.App.Runtime.Mono.browser-wasm Microsoft.NETCore.App.Runtime.Mono.browser-wasm 是一个 .NET Core 运行时的包,用于在浏览器中运行 .NET Core 应用程序。它是针对 WebAssembly 架构的 .NET Core 运行时,可以在浏览…

002 Golang-channel-practice

第二题: 创建一个生产器和接收器,再建立一个无缓冲的channel。生产器负责把数据放进管道里,接收器负责把管道里面的数据打印出来。这里我们开5个协程把数据打印出来。 直接上代码! package mainimport ("fmt" )func …

java基础之函数

函数 概念 是一段具有特定功能的代码, 特点为可以多次执行.通常情况下一个函数对应一个功能 语法 访问修饰符 static 返回值类型 函数名(形参列表){//操作语句 } public static void 函数名(){} 位置 类以内,其他函数以外,与主函数平级 调用 自定义函数必须经过调用才…