Kubernetes / Prometheus / 云计算 / 监控平台

K8S中配置Prometheus监控告警

温馨提示:本文最后更新于2021-07-04 19:52:32,某些文章具有时效性,若有错误或已失效,请在下方留言或提交工单提交工单
浅时光 · 1月3日 · 2021年 · 本文4371个字,预计阅读11分钟 44756次已读

一、前提说明


我们在前面二进制部署多Master高可用K8S集群系列文章中,已经部署好了Prometheus监控体系,但是没有配置Alertmanager;接下来我们就继续完善整个K8S集群的监控,包括告警配置,这里我将通过邮件和企业微信的形式进行演示。如果你还没有在K8S集群中部署Prometheus,那可以点击下方的文章链接,参考这篇文章进行部署。

二进制部署多Master高可用K8S集群-v1.18(五)

2020-7-26 0 文章来源(Source):浅时光博客
文章来源(Source):https://www.dqzboy.com

二、邮件告警配置


  • 进入到kube-prometheus目录下的manifests目录里,备份源文件alertmanager-secret.yaml,然后将以下配置信息全部黏贴进去即可;
  • 注意:修改成自己的邮箱地址

1、修改配置

[root@k8s-master1 ~]# cd /opt/k8s/work/kube-prometheus/manifests/
[root@k8s-master1 manifests]# vim alertmanager-secret.yaml
apiVersion: v1
data: {}
kind: Secret
metadata:
  name: alertmanager-main
  namespace: monitoring
stringData:
  alertmanager.yaml: |-
    global:
      resolve_timeout: 1m # 处理超时时间
      smtp_smarthost: 'smtp.qq.com:465' # 邮箱smtp服务器代理
      smtp_from: 'xx@qq.com' # 发送邮箱名称
      smtp_auth_username: 'xxxx@qq.com' # 邮箱名称
      smtp_auth_password: 'xxx' # 授权密码
      smtp_require_tls: false # 不开启tls 默认开启
 
    receivers:
    - name: Default
      email_configs: # 邮箱配置
      - to: "xxx@qq.com" # 接收警报的email配置,# 如果想发送多个人就以 ','做分割,写多个邮件人即可。
 
    route:
      group_interval: 1m # 在发送新警报前的等待时间
      group_wait: 10s # 最初即第一次等待多久时间发送一组警报的通知 
      receiver: Default
      repeat_interval: 10m # 发送重复警报的周期

2、重载配置

[root@k8s-master1 manifests]# kubectl apply -f alertmanager-secret.yaml
[root@k8s-master1 manifests]# kubectl get po -n monitoring

3、查看邮件

  • 因为Alertmanager默认有一个Watchdog是报警状态的,所以10m后即可收到告警邮件
K8S中配置Prometheus监控告警-浅时光博客
  • 邮件内容信息如下:
K8S中配置Prometheus监控告警-浅时光博客

三、企业微信告警


首先你需要通过企业微信后台(管理员身份登入),创建应用程序,获取Appid、企业ID等关键信息;

  • corp_id  企业微信账号唯一 ID, 可以在”我的企业”中查看。
  • to_party  需要发送的组(部门ID)
  • agent_id&n文章来源(Source):浅时光博客bsp; 第三方企业应用的&nbs文章来源(Source):浅时光博客p;ID,可以在自己创建的第三方企业应用详情页面查看。
  • api_secret 第三方企业应用的密钥,可以在自己创建的第三方企业应用详情页面查看。

1、创建模板

[root@k8s-master1 ~]# cd /opt/k8s/work/kube-prometheus/manifests/
模板1:
[root@k8s-master1 manifests]# vim alertmanager-templates.yaml
apiVersion: v1
kind: ConfigMap
metadata:
  name: alertmanager-temp
  namespace: monitoring
data: 
  temp.tmpl: |
    {{ define "wechat.default.message" }}
    {{ if gt (len .Alerts.Firing) 0 -}}
    Alerts Firing:
    {{ range .Alerts }}
    警报级别:{{ .Labels.status }}
    警报类型:{{ .Labels.alertname }}
    故障主机: {{ .Labels.instance }}
    警报主题: {{ .Annotations.summary }}
    警报详情: {{ .Annotations.description }}
    触发时间: {{ (.StartsAt.Add 28800e9).Format "2006-01-02 15:04:05" }}
    {{- end }}
    {{- end }}

    {{ if gt (len .Alerts.Resolved) 0 -}}
    Alerts Resolved:
    {{ range .Alerts }}
    警报级别:{{ .Labels.status }}
    警报类型:{{ .Labels.alertname }}
    故障主机: {{ .Labels.instance }}
    警报主题: {{ .Annotations.summary }}
    警报详情: {{ .Annotations.description }}
    触发时间: {{ (.StartsAt.Add 28800e9).Format "2006-01-02 15:04:05" }}
    恢复时间: {{ (.EndsAt.Add 28800e9).Format "2006-01-02 15:04:05" }}
    {{- end }}
    {{- end }}
    {{- end }}
模板2:
[root@k8s-master1 manifests]# vim alertmanager-templates.yaml
apiVersion: v1
kind: ConfigMap
metadata:
  name: alertmanager-temp
  namespace: monitoring
data: 
  temp.tmpl: |
    Alerts Firing:
    {{ range .Alerts }}
    告警级别:{{ .Labels.severity }}
    告警类型:{{ .Labels.alertname }}
    故障主机: {{ .Labels.instance }}
    告警主题: {{ .Annotations.summary }}
    告警详情: {{ .Annotations.description }}
    触发时间: {{ (.StartsAt.Add 28800e9).Format "2006-01-02 15:04:05" }}
    {{- end }}
    {{- end }}
    {{ if gt (len .Alerts.Resolved) 0 -}}
    Alerts Resolved:
    {{ range .Alerts }}
    告警级别:{{ .Labels.severity }}
    告警类型:{{ .Labels.alertname }}
    故障主机: {{ .Labels.instance }}
    告警主题: {{ .Annotations.summary }}
    触发时间: {{ (.StartsAt.Add 28800e9).Format "2006-01-02 15:04:05" }}
    恢复时间: {{ (.EndsAt.Add 28800e9).Format "2006-01-02 15:04:05" }}
    {{- end }}
    {{- end }}
    告警链接:
    {{ template "__alertmanagerURL" . }}
{{- end }}

[root@k8s-master1 manifests]# kubectl apply -f alertmanager-templates.yaml

2、挂载模板

原文链接:https://www.dqzboy.com
[root@k8s-master1 manifests]# vim alertmanager-alertmanager.yaml
apiVersion: monitoring.coreos.com/v1
kind: Alertmanager
metadata:
  labels:
    alertmanager: main
  name: main
  namespace: monitoring
spec:
  image: quay.mirrors.ustc.edu.cn/prometheus/alertmanager:v0.21.0
  nodeSelector:
    kubernetes.io/os: linux
  replicas: 3
  securityContext:
    fsGroup: 2000
    runAsNonRoot: true
    runAsUser: 1000
  serviceAccountName: alertmanager-main
  version: v0.21.0
  configMaps:
  - "alertmanager-temp"   #模板配置文件,上面创建的cm资源的name对应的值


[root@k8s-master1 manifests]# kubectl apply -f alertmanager-alertmanager.yaml

3、修改消息源

  • 把默认的内容删除,复制下面的信息进去
[root@k8s-master1 manifests]# vim alertmanager-secret.yaml

apiVersion: v1
data: {}
kind: Secret
metadata:
  name: alertmanager-main
  namespace: monitoring
stringData:
  alertmanager.yaml: |-
    global:
      resolve_timeout: 1m # 处理超时时间
      wechat_api_corp_id: '企业微信账号唯一 ID'
      wechat_api_url: 'https://qyapi.weixin.qq.com/cgi-bin/'
      wechat_api_secret: '第三方企业应用的密钥'
    #指定wechar告警模板
    templates:
      - '/etc/alertmanager/configmaps/alertmanager-temp/*.tmpl'
 
    receivers:
    - name: 'wechat' #企业微信配置路由
      wechat_configs:
      #是否发送恢复信息
      - send_resolved: true
        corp_id: '企业ID'
        to_user: '@all'  #表示在当前此app应用可见的人都会收到消息
        agent_id: '应用ID'
        api_secret: '应用密钥'

    route:
      group_interval: 1m # 在发送新警报前的等待时间
      group_wait: 10s # 最初即第一次等待多久时间发送一组警报的通知 
      receiver: wechat #选择推送消息的路由,这里我选择企业微信
      repeat_interval: 10m # 发送重复警报的周期

#创建资源
[root@k8s-master1 manifests]# kubectl apply -f alertmanager-secret.yaml

#查看资源
[root@k8s-master1 manifests]# kubectl get secret -n monitoring

4、检查消息

K8S中配置Prometheus监控告警-浅时光博客



本文作者:浅时光
原文链接:https://www.dqzboy.com/5266.html
版权声明:知识共享署名-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0)协议进行许可
转载时请以超链接形式标明文章原始出处和作者信息

4 条回应

必须 注册 为本站用户, 登录 后才可以发表评论!

  1. blackman广东·东莞2021-6-30 · 16:46

    尝试各种格式,还是报错,研究好久了

    • 浅时光
      浅时光上海2021-6-30 · 16:51

      看日志,日志里面会有提现的。再说格式不是让你随便尝试的,你可以把你的配置放到一些json格式验证的网站上验证下格式是不是正确

  2. blackman广东·东莞2021-6-30 · 15:58

    configMaps:
    – “alertmanager-temp”
    增加配置后报错:CrashLoopBackOff

    • 浅时光
      浅时光上海2021-6-30 · 16:09

      看配置格式对不对,不要无脑复制黏贴

本站已稳定运行: | 耗时 0.255 秒 | 查询 23 次 | 内存 9.98 MB