在 Kubernetes 中部署 Alertmanager

打印 上一主题 下一主题

主题 212|帖子 212|积分 636


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 地址,如下所示,以便将警报发送到警报管理器。
  1. alerting:
  2.    alertmanagers:
  3.       - scheme: http
  4.         static_configs:
  5.         - targets:
  6.           - "alertmanager.monitoring.svc:9093"
复制代码
为了可以或许接收邮件告警,您必要在 Alertmanager 的 config.yaml 中设置合法的 SMTP 信息。您也可以根据自己的需求自定义邮件告警模板。我们在本指南中给出了通用模板。让我们开始吧。
Alertmanager Kubernetes 清单

本教程中使用的所有 Kubernetes 清单都可以在此 Github 链接中找到。使用以下下令克隆 Github 仓库。
  1. git clone https://github.com/bibinwilson/kubernetes-alert-manager.git
复制代码
用于 Alertmanager 设置的 ConfigMap

Alert Manager 从 config.yaml 文件中读取其设置。它包含警报模板路径、电子邮件和其他警报接收设置的设置。
在此次部署演示中,我们使用电子邮件和 Slack webhook 接收器。您可以从此处查看所有受支持的警报接收器。
创建名为 AlertManagerConfigmap.yaml 的文件,并复制以下内容。
  1. kind: ConfigMap
  2. apiVersion: v1
  3. metadata:
  4.   name: alertmanager-config
  5.   namespace: monitoring
  6. data:
  7.   config.yml: |-
  8.     global:
  9.     templates:
  10.     - '/etc/alertmanager/*.tmpl'
  11.     route:
  12.       receiver: alert-emailer
  13.       group_by: ['alertname', 'priority']
  14.       group_wait: 10s
  15.       repeat_interval: 30m
  16.       routes:
  17.         - receiver: slack_demo
  18.         # Send severity=slack alerts to slack.
  19.           match:
  20.             severity: slack
  21.           group_wait: 10s
  22.           repeat_interval: 1m   
  23.     receivers:
  24.     - name: alert-emailer
  25.       email_configs:
  26.       - to: demo@devopscube.com
  27.         send_resolved: false
  28.         from: from-email@email.com
  29.         smarthost: smtp.eample.com:25
  30.         require_tls: false
  31.     - name: slack_demo
  32.       slack_configs:
  33.       - api_url: https://hooks.slack.com/services/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sz4Qk
  34.         channel: '#devopscube-demo'
复制代码
让我们使用 kubectl 创建 ConfigMap。
  1. kubectl create -f AlertManagerConfigmap.yaml
复制代码
用于 Alertmanager 警报模板的 ConfigMap

我们必要为我们使用的所有接收器(电子邮件、Slack 等)提供警报模板。Alertmanager 将动态替换这些值,并根据模板向接收者发送警报。您可以根据必要自定义这些模板。
创建一个名为 AlertTemplateConfigMap.yaml 的文件,并从此文件链接 ==> 警报管理器模板 YAML 中复制内容
使用 kubectl 创建 configmap。
  1. kubectl create -f AlertTemplateConfigMap.yaml
复制代码
创建 Deployment

在此 Deployment 中,我们将挂载我们创建的两个 ConfigMap。
使用以下内容创建名为 Deployment.yaml 的文件。
  1. apiVersion: apps/v1
  2. kind: Deployment
  3. metadata:
  4.   name: alertmanager
  5.   namespace: monitoring
  6. spec:
  7.   replicas: 1
  8.   selector:
  9.     matchLabels:
  10.       app: alertmanager
  11.   template:
  12.     metadata:
  13.       name: alertmanager
  14.       labels:
  15.         app: alertmanager
  16.     spec:
  17.       containers:
  18.       - name: alertmanager
  19.         image: prom/alertmanager:latest
  20.         args:
  21.           - "--config.file=/etc/alertmanager/config.yml"
  22.           - "--storage.path=/alertmanager"
  23.         ports:
  24.         - name: alertmanager
  25.           containerPort: 9093
  26.         resources:
  27.             requests:
  28.               cpu: 500m
  29.               memory: 500M
  30.             limits:
  31.               cpu: 1
  32.               memory: 1Gi
  33.         volumeMounts:
  34.         - name: config-volume
  35.           mountPath: /etc/alertmanager
  36.         - name: templates-volume
  37.           mountPath: /etc/alertmanager-templates
  38.         - name: alertmanager
  39.           mountPath: /alertmanager
  40.       volumes:
  41.       - name: config-volume
  42.         configMap:
  43.           name: alertmanager-config
  44.       - name: templates-volume
  45.         configMap:
  46.           name: alertmanager-templates
  47.       - name: alertmanager
  48.         emptyDir: {}
复制代码
使用 kubectl 创建 Deployment。
  1. kubectl create -f Deployment.yaml
复制代码
创建 Alertmanager 的服务端点

我们必要使用 NodePort 或 Load Balancer 公开警报管理器,以便访问 Web UI。Prometheus 将使用内部服务端点与警报管理器进行通信。
创建包含以下内容的 Service.yaml 文件。
  1. apiVersion: v1
  2. kind: Service
  3. metadata:
  4.   name: alertmanager
  5.   namespace: monitoring
  6.   annotations:
  7.       prometheus.io/scrape: 'true'
  8.       prometheus.io/port:   '9093'
  9. spec:
  10.   selector:
  11.     app: alertmanager
  12.   type: NodePort  
  13.   ports:
  14.     - port: 9093
  15.       targetPort: 9093
  16.       nodePort: 31000
复制代码
使用 kubectl 创建服务。
  1. kubectl create -f Service.yaml
复制代码
现在,您将可以或许在节点端口 31000 上访问警报管理器。例如
  1. http://35.114.150.153:31000
复制代码


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

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

正序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

张裕

高级会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表