在 Kubernetes 中部署 Alertmanager

news/2025/3/13 2:38:25/文章来源:https://www.cnblogs.com/ulricqin/p/18345101

Prometheus alert manager

AlertManager 是一个开源警报系统,与 Prometheus 监控系统配合使用。本博客是 Prometheus Kubernetes 教程系列的一部分。在我们之前的文章中,我们研究了以下内容:

  • 在 Kubernetes 上部署 Prometheus
  • 部署 Kube State Metrics

在本指南中,我将介绍 Alertmanager 设置及其与 Prometheus 的集成。

注意:在本指南中,所有 Alert Manager Kubernetes 对象都将在名为 monitoring 的命名空间中创建。如果使用不同的命名空间,则可以在 YAML 文件中替换它。

Kubernetes 上的 Alertmanager

Alert manager 有以下关键配置:

  • 用于 Alertmanager 配置的 ConfigMap
  • 用于 Alertmanager 警报模板的 ConfigMap
  • Alertmanager 本身的 Deployment
  • Alertmanager 的 Service,用于访问 Web UI

重要注意事项

您应该已经启动并运行了一个 Prometheus。Prometheus 的 config.yaml 中应具有正确的 Alertmanager 地址,如下所示,以便将警报发送到警报管理器。

alerting:alertmanagers:- scheme: httpstatic_configs:- targets:- "alertmanager.monitoring.svc:9093"

为了能够接收邮件告警,您需要在 Alertmanager 的 config.yaml 中配置合法的 SMTP 信息。您也可以根据自己的需求自定义邮件告警模板。我们在本指南中给出了通用模板。让我们开始吧。

Alertmanager Kubernetes 清单

本教程中使用的所有 Kubernetes 清单都可以在此 Github 链接中找到。使用以下命令克隆 Github 仓库。

git clone https://github.com/bibinwilson/kubernetes-alert-manager.git

用于 Alertmanager 配置的 ConfigMap

Alert Manager 从 config.yaml 文件中读取其配置。它包含警报模板路径、电子邮件和其他警报接收配置的配置。

在此次部署演示中,我们使用电子邮件和 Slack webhook 接收器。您可以从此处查看所有受支持的警报接收器。

创建名为 AlertManagerConfigmap.yaml 的文件,并复制以下内容。

kind: ConfigMap
apiVersion: v1
metadata:name: alertmanager-confignamespace: monitoring
data:config.yml: |-global:templates:- '/etc/alertmanager/*.tmpl'route:receiver: alert-emailergroup_by: ['alertname', 'priority']group_wait: 10srepeat_interval: 30mroutes:- receiver: slack_demo# Send severity=slack alerts to slack.match:severity: slackgroup_wait: 10srepeat_interval: 1m    receivers:- name: alert-emaileremail_configs:- to: demo@devopscube.comsend_resolved: falsefrom: from-email@email.comsmarthost: smtp.eample.com:25require_tls: false- name: slack_demoslack_configs:- api_url: https://hooks.slack.com/services/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sz4Qkchannel: '#devopscube-demo'

让我们使用 kubectl 创建 ConfigMap。

kubectl create -f AlertManagerConfigmap.yaml

用于 Alertmanager 警报模板的 ConfigMap

我们需要为我们使用的所有接收器(电子邮件、Slack 等)提供警报模板。Alertmanager 将动态替换这些值,并根据模板向接收者发送警报。您可以根据需要自定义这些模板。

创建一个名为 AlertTemplateConfigMap.yaml 的文件,并从此文件链接 ==> 警报管理器模板 YAML 中复制内容。

使用 kubectl 创建 configmap。

kubectl create -f AlertTemplateConfigMap.yaml

创建 Deployment

在此 Deployment 中,我们将挂载我们创建的两个 ConfigMap。

使用以下内容创建名为 Deployment.yaml 的文件。

apiVersion: apps/v1
kind: Deployment
metadata:name: alertmanagernamespace: monitoring
spec:replicas: 1selector:matchLabels:app: alertmanagertemplate:metadata:name: alertmanagerlabels:app: alertmanagerspec:containers:- name: alertmanagerimage: prom/alertmanager:latestargs:- "--config.file=/etc/alertmanager/config.yml"- "--storage.path=/alertmanager"ports:- name: alertmanagercontainerPort: 9093resources:requests:cpu: 500mmemory: 500Mlimits:cpu: 1memory: 1GivolumeMounts:- name: config-volumemountPath: /etc/alertmanager- name: templates-volumemountPath: /etc/alertmanager-templates- name: alertmanagermountPath: /alertmanagervolumes:- name: config-volumeconfigMap:name: alertmanager-config- name: templates-volumeconfigMap:name: alertmanager-templates- name: alertmanageremptyDir: {}

使用 kubectl 创建 Deployment。

kubectl create -f Deployment.yaml

创建 Alertmanager 的服务端点

我们需要使用 NodePort 或 Load Balancer 公开警报管理器,以便访问 Web UI。Prometheus 将使用内部服务端点与警报管理器进行通信。

创建包含以下内容的 Service.yaml 文件。

apiVersion: v1
kind: Service
metadata:name: alertmanagernamespace: monitoringannotations:prometheus.io/scrape: 'true'prometheus.io/port:   '9093'
spec:selector: app: alertmanagertype: NodePort  ports:- port: 9093targetPort: 9093nodePort: 31000

使用 kubectl 创建服务。

kubectl create -f Service.yaml

现在,您将能够在节点端口 31000 上访问警报管理器。例如

http://35.114.150.153:31000

Alertmanager Web UI

  • 英文原文:https://devopscube.com/alert-manager-kubernetes-guide/
  • 中文译文:https://flashcat.cloud/blog/alert-manager-kubernetes-guide/
  • 译者:巴辉特

本博客出自快猫星云的小伙伴们,快猫星云是一家专注在监控/可观测性领域的初创公司,其团队是开源项目 Open-Falcon、Nightingale 的创始团队。如果您想要采购监控/可观测性相关的产品方案,欢迎 联系我们做产品技术交流。

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

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

相关文章

华为云IoTDA控制台全新升级,来体验35万+开发者使用的平台

摘要:现在体验华为云IoT全新控制台,赢无线耳机等精美好礼 本文分享自华为云社区《华为云IoTDA控制台全新升级,邀您有奖体验!| 云声建议 - 华为云IoTDA专属活动(8月)》,作者:华为IoT云服务。 作为万物上云的物联网底座,华为云IoT物联网平台(设备接入IoTDA)目前接入的…

第三章 栈、队列和数组

栈 栈的基本概念 栈的定义 栈是只允许在一端进行插入或删除操作的线性表栈顶:线性表允许进行插入删除的那一端 栈底:固定的,不允许进行插入和删除的另一端 空栈:不含任何元素的空表栈的操作特性可以概括为:后进先出(LIFO) 栈的基本操作 InitStack(&S)//初始化栈,构…

第二章 线性表

线性表的定义和基本操作 线性表的定义 线性表是具有相同数据类型的n(n≥0)个数据元素的有限序列,其中n为表长,当n=0时线性表是一个空表,若当L命名线性表,则其一般表示为L=(a1,a2,.…,an)ai 是线性表中“第i个”元素线性表中的位序 a1 是表头元素,an 是表尾元素 出第一个…

zabbix“专家坐诊”第250期问答

问题一 Q:乐维监控社区版监控交换机,能统计出端口的IP流量排名吗? A:社区版没有这个功能 ,正式版,流量报表可以实现端口IP流量排行。问题二 Q:我看了一下乐维有事件平台汇总的功能,可以接第三方的告警吗? A:可以的。 Q:有没有操作手册我看看,或者你们是基于什么做的…

uniapp中的websocket的研究,以及相关的封装

官方文档---官方文档写的跟屎一样 https://uniapp.dcloud.net.cn/api/request/websocket.html相关博客 https://www.cnblogs.com/sunnyeve/p/16757633.html

aspnet .core 网站默认不支持文件下载

将txt文件和rar文件都放到 wwwroot 目录下,会发现前者可以正常下载而后者不行。其实是需要在初始化的地方进行设置: builder.WebHost.UseKestrel(option =>{ option.ListenAnyIP(config.Port);}); WebApplication app = builder.Build(); var httpContextAccessor = ap…

2024FIC线上初赛WP

感觉需要总结一些技巧了2024FIC线上初赛WP 挖个坑,哪天想起来了补一下艰难困苦,玉汝于成

部署CPU与GPU通用的tensorflow:Anaconda环境

本文介绍在Anaconda环境中,下载并配置Python中机器学习、深度学习常用的新版tensorflow库的方法~本文介绍在Anaconda环境中,下载并配置Python中机器学习、深度学习常用的新版tensorflow库的方法。在之前的两篇文章Python TensorFlow深度学习回归代码:DNNRegressor与Python T…

采购订单列表根据条件设置行背景色

方式一:通过Python脚本实现 import clr clr.AddReference(System) clr.AddReference(Kingdee.BOS) clr.AddReference(Kingdee.BOS.Core) clr.AddReference(System.Drawing) clr.AddReference(System.Collections)from System import * from System.Collections import * from…

采购订单打开单据时表格行设置颜色

列表根据条件设置背景色import clr clr.AddReference(System) clr.AddReference(Kingdee.BOS) clr.AddReference(Kingdee.BOS.Core) clr.AddReference(System.Drawing) clr.AddReference(System.Collections)from System import * from System.Collections import * from Syst…

ArgoWorkflow 教程(一)--DevOps 另一选择?云原生 CICD 初体验

本文主要记录了如何使用 ArgoWorkflow 构建流水线,以及 ArgoWorkflow 中 的 Workflow、Template 等概念模型。本文主要分析以下问题:1)如何创建流水线 2)Workflow、Template、template 自己的引用关系 3)Workflow 和 Template 之间的参数传递问题 4)ArgoWorkflow 流水线…

利用miniprogram-ci工具实现一键上传微信小程序代码

本文由 ChatMoney团队出品利用miniprogram-ci工具在后台实现一键上传微信小程序代码,避免了微信开发者工具的繁琐。 一、部署node环境 我用的是宝塔,可以直接在宝塔上安装Node.js版本管理器二、安装miniprogram-ci npm install miniprogram-ci --save安装在指定文件夹里,这个…