首页 > 其他分享 >在 Kubernetes 中部署 Alertmanager

在 Kubernetes 中部署 Alertmanager

时间:2024-08-06 14:38:23浏览次数:9  
标签:Alertmanager name Kubernetes 部署 yaml alertmanager 警报 config

Prometheus alert manager

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

在本指南中,我将介绍 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: http
        static_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-config
  namespace: monitoring
data:
  config.yml: |-
    global:
    templates:
    - '/etc/alertmanager/*.tmpl'
    route:
      receiver: alert-emailer
      group_by: ['alertname', 'priority']
      group_wait: 10s
      repeat_interval: 30m
      routes:
        - receiver: slack_demo
        # Send severity=slack alerts to slack.
          match:
            severity: slack
          group_wait: 10s
          repeat_interval: 1m    
 
    receivers:
    - name: alert-emailer
      email_configs:
      - to: [email protected]
        send_resolved: false
        from: [email protected]
        smarthost: smtp.eample.com:25
        require_tls: false
    - name: slack_demo
      slack_configs:
      - api_url: https://hooks.slack.com/services/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sz4Qk
        channel: '#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: alertmanager
  namespace: monitoring
spec:
  replicas: 1
  selector:
    matchLabels:
      app: alertmanager
  template:
    metadata:
      name: alertmanager
      labels:
        app: alertmanager
    spec:
      containers:
      - name: alertmanager
        image: prom/alertmanager:latest
        args:
          - "--config.file=/etc/alertmanager/config.yml"
          - "--storage.path=/alertmanager"
        ports:
        - name: alertmanager
          containerPort: 9093
        resources:
            requests:
              cpu: 500m
              memory: 500M
            limits:
              cpu: 1
              memory: 1Gi
        volumeMounts:
        - name: config-volume
          mountPath: /etc/alertmanager
        - name: templates-volume
          mountPath: /etc/alertmanager-templates
        - name: alertmanager
          mountPath: /alertmanager
      volumes:
      - name: config-volume
        configMap:
          name: alertmanager-config
      - name: templates-volume
        configMap:
          name: alertmanager-templates
      - name: alertmanager
        emptyDir: {}

使用 kubectl 创建 Deployment。

kubectl create -f Deployment.yaml

创建 Alertmanager 的服务端点

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

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

apiVersion: v1
kind: Service
metadata:
  name: alertmanager
  namespace: monitoring
  annotations:
      prometheus.io/scrape: 'true'
      prometheus.io/port:   '9093'
spec:
  selector: 
    app: alertmanager
  type: NodePort  
  ports:
    - port: 9093
      targetPort: 9093
      nodePort: 31000

使用 kubectl 创建服务。

kubectl create -f Service.yaml

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

http://35.114.150.153:31000

Alertmanager Web UI

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

标签:Alertmanager,name,Kubernetes,部署,yaml,alertmanager,警报,config
From: https://www.cnblogs.com/ulricqin/p/18345101

相关文章

  • 部署CPU与GPU通用的tensorflow:Anaconda环境
      本文介绍在Anaconda环境中,下载并配置Python中机器学习、深度学习常用的新版tensorflow库的方法。  在之前的两篇文章PythonTensorFlow深度学习回归代码:DNNRegressor与PythonTensorFlow深度神经网络回归:keras.Sequential中,我们介绍了利用Python中的tensorflow库,实现机器学......
  • kubernetes二进制安装 -- 1.30.3
    1、节点规划10.202.99.34master0110.202.99.35master0210.202.99.36master0310.202.99.37node0110.202.99.100vip2、环境准备2.1、关闭防火墙、selinux、swap和NetworkManager#关闭selinux##临时关闭setenforce0##永久关闭sed-i's/enforcing/disabl......
  • 基于uniapp微信小程序+SpringBoot+Vue的礼品商城小程序系统设计和实现(源码+论文+部署
    博主介绍:✌全网粉丝50W+,csdn特邀作者、博客专家、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和学生毕业项目实战,高校老师/讲师/同行前辈交流✌技术范围:SpringBoot、Vue、SSM、HLMT、Jsp、PHP、Nodejs、P......
  • 基于uniapp微信小程序+SpringBoot+Vue的生日福利管理系统设计和实现(源码+论文+部署讲
    博主介绍:✌全网粉丝50W+,csdn特邀作者、博客专家、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和学生毕业项目实战,高校老师/讲师/同行前辈交流✌技术范围:SpringBoot、Vue、SSM、HLMT、Jsp、PHP、Nodejs、P......
  • 使用Infinity部署Embedding和Reranking模型
    使用Infinity部署Embedding和Reranking模型说明:首次发表日期:2024-08-06InfinityGithub仓库:https://github.com/michaelfeil/infinityInfinity官方文档:https://michaelfeil.github.io/infinity/下载权重pipinstall-U"huggingface_hub[cli]"exportHF_ENDPOINT=ht......
  • .NET发布时选择【独立部署模式】引发的故事
    目录win-x64发布发布时选择发布后文件应用程序是怎么运行的linux-x64发布发布时选择发布后文件应用程序是怎么运行的 故事:用vs2019发布.netcore3.1项目时选择了独立部署模式,突然很好奇想扒一扒在不依赖框架的情况下程序是怎么运行的?进而又想到在Linux......
  • .NET6 独立模式部署应用程序(无需客户机安装指定版本.NET运行时)
    下图对于.NET开发人员一定不陌生,尤其是CS架构,客户电脑要运行基于.NET开发的程序,无论是使用C#,还是VB.NET、F#,发布后的程序的运行环境都需要有相应版本的.NET的运行时,否则应用程序将无法正常运行。BS架构下,在服务器上安装指定版本.NET运行时,工作量可以忽略不计。试想,如果是CS架构......
  • 抖音短视频矩阵系统源码部署/技术应用开发(流程全解析)
     应用场景:抖音矩阵系统源码开发搭建/短视频矩阵号系统源码开发搭建/ 抖音seo矩阵系统源码开发搭建等。抖音短视频矩阵系统源码开发对服务商有哪些要求?企业在选择服务商时,无论是考虑自用还是考虑加盟服务商,都要考评服务商是否有相关开发资质,能力证明等,除此之外,功能的......
  • kubernetes面试
    前言  此面经为企鹅侠自己面试遇到和收集其它朋友提供的信息整理而成,给予大家参考,希望能有所帮助。!!!文档有问题请大家及时指出做修改哈k8s是什么?请说出你的了解?  答:Kubenetes是一个针对容器应用,进行自动部署,弹性伸缩和管理的开源系统。主要功能是生产环境中的......
  • 【Kubernetes】应用的部署(一):金丝雀部署
    应用的部署(一):金丝雀部署在项目迭代开发过程中,经常需要对应用进行上线部署。上线部署策略主要有3种:金丝雀部署、蓝绿部署和滚动部署。金丝雀部署也被叫作灰度部署。金丝雀部署过程:先让一部分用户继续使用旧版本,而另一部分用户开始使用新版本;如果新版本没有......