首页 > 其他分享 >kube-promethues配置钉钉告警

kube-promethues配置钉钉告警

时间:2023-10-31 09:22:30浏览次数:41  
标签:name dingtalk webhook alert yaml promethues 告警 kube

kube-promethues配置钉钉告警

前置:k8s部署kube-promethues

一.配置钉钉机器人

  • 打开钉钉的智能群助手,点击添加机器人

    image-20231030172418058
  • 选择自定义机器人

    image-20230227175058364 image-20210210143832145
  • 勾选加签,复制后保存

    image-20231030173003069

  • 复制webhook地址后点击保存

    image-20231030172538392

二.编写dingtalk的yaml部署文件

vi dingtalk.yaml
apiVersion: v1
kind: Service
metadata:
  name: dingtalk
  namespace: monitoring
spec:
  selector:
    app: dingtalk
  ports:
    - name: http
      protocol: TCP
      port: 8060
      targetPort: 8060
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: dingtalk
  namespace: monitoring
  labels:
    app: dingtalk
spec:
  replicas: 1
  strategy:
    rollingUpdate:
      maxSurge: 25%
      maxUnavailable: 25%
    type: RollingUpdate
  selector:
    matchLabels:
      app: dingtalk
  template:
    metadata:
      labels:
        app: dingtalk
    spec:
      restartPolicy: "Always"
      containers:
        - name: dingtalk
          image: timonwong/prometheus-webhook-dingtalk:v2.1.0
          imagePullPolicy: "IfNotPresent"
          volumeMounts:
            - name: dingtalk-conf
              mountPath: /etc/prometheus-webhook-dingtalk/
          resources:
            limits:
              cpu: "400m"
              memory: "500Mi"
            requests:
              cpu: "100m"
              memory: "100Mi"
          ports:
            - containerPort: 8060
              name: http
              protocol: TCP
          readinessProbe:
            failureThreshold: 3
            periodSeconds: 5
            initialDelaySeconds: 30
            successThreshold: 1
            tcpSocket:
              port: 8060
          livenessProbe:
            tcpSocket:
              port: 8060
            initialDelaySeconds: 30
            periodSeconds: 10
      volumes:
        - name: dingtalk-conf
          configMap:
            name: dingtalk-cm

prometheus-webhook-dingtalk是一个开源的钉钉告警的插件,目前最新版停留于v2.1.0

三.编写钉钉告警模板dingtalk-configmap.yaml

vi dingtalk-configmap.yaml
apiVersion: v1
kind: ConfigMap
metadata:
  name: dingtalk-cm
  namespace: monitoring
data:
  config.yml: |-
    templates:
      - /etc/prometheus-webhook-dingtalk/dingding.tmpl
    targets:
      webhook:
        url: https://oapi.dingtalk.com/robot/send?access_token=<复制的webhook地址>
        secret: "<加签的时候复制的secret>"
        message:
          text: '{{ template "dingtalk.to.message" . }}'
  dingding.tmpl: |-
    {{ define "dingtalk.to.message" }}
    {{- if gt (len .Alerts.Firing) 0 -}}
    {{- range $index, $alert := .Alerts -}}

    =========  **监控告警** =========

    **告警集群:**     k8s
    **告警类型:**    {{ $alert.Labels.alertname }}
    **告警级别:**    {{ $alert.Labels.severity }}
    **告警状态:**    {{ .Status }}
    **故障主机:**    {{ $alert.Labels.instance }} {{ $alert.Labels.device }}
    **告警主题:**    {{ .Annotations.summary }}
    **告警详情:**    {{ $alert.Annotations.message }}{{ $alert.Annotations.description}}
    **主机标签:**    {{ range .Labels.SortedPairs  }}  </br> [{{ .Name }}: {{ .Value | markdown | html }} ]
    {{- end }} </br>

    **故障时间:**    {{ ($alert.StartsAt.Add 28800e9).Format "2006-01-02 15:04:05" }}
    ========= = **end** =  =========
    {{- end }}
    {{- end }}

    {{- if gt (len .Alerts.Resolved) 0 -}}
    {{- range $index, $alert := .Alerts -}}

    ========= **故障恢复** =========
    **告警集群:**     k8s
    **告警主题:**    {{ $alert.Annotations.summary }}
    **告警主机:**    {{ .Labels.instance }}
    **告警类型:**    {{ .Labels.alertname }}
    **告警级别:**    {{ $alert.Labels.severity }}
    **告警状态:**    {{ .Status }}
    **告警详情:**    {{ $alert.Annotations.message }}{{ $alert.Annotations.description}}
    **故障时间:**    {{ ($alert.StartsAt.Add 28800e9).Format "2006-01-02 15:04:05" }}
    **恢复时间:**    {{ ($alert.EndsAt.Add 28800e9).Format "2006-01-02 15:04:05" }}

    ========= = **end** =  =========
    {{- end }}
    {{- end }}
    {{- end }}

四.编写文件alertmanager-secret.yaml

该文件是 用来顶替原本kube-promethues部署时的,alertmanager的配置文件

vi alertmanager-secret.yaml
apiVersion: v1
data: { }
kind: Secret
metadata:
  name: alertmanager-main
  namespace: monitoring
stringData:
  alertmanager.yaml: |-
    global:
      resolve_timeout: 5m
    route:
      group_by: ['alertname']
      group_wait: 30s
      group_interval: 5m
      repeat_interval: 30m
      receiver: 'webhook'
      routes:
      - match:
          severity: 'info'
        continue: true
        receiver: 'null'
      - match:
          severity: 'none'
        continue: true
        receiver: 'null'
    receivers:
    - name: 'null'
    - name: 'webhook'
      webhook_configs:
      - send_resolved: true
        url: 'http://dingtalk:8060/dingtalk/webhook/send'

五.部署并检查是否运行成功

kubectl apply -f alertmanager-secret.yaml
kubectl apply -f dingtalk-configmap.yaml
kubectl apply -f dingtalk.yaml
#查看是否部署成功
kubectl get pods -n  monitoring | grep dingtalk

image-20231030224702208

dingtalk部署成功后,重新部署alertmanager就行了。

image-20231030224835517

标签:name,dingtalk,webhook,alert,yaml,promethues,告警,kube
From: https://www.cnblogs.com/blogof-fusu/p/17799518.html

相关文章

  • 使用 Sealos 一键部署 Kubernetes 集群
    Sealos是一款以Kubernetes为内核的云操作系统发行版,使用户能够像使用个人电脑一样简单地使用云。与此同时,Sealos还提供一套强大的工具,可以便利地管理整个Kubernetes集群的生命周期。Sealos不仅可以一键安装一个单节点的Kubernetes开发环境,还能构建数千节点的生产高可......
  • 智慧供水管网漏损控制管理系统,实现故障告警及快速控制
    行业背景随着城市的快速发展和供水管网的延伸补全,供水管网漏损及水资源管理问题愈来愈引起重视。造成管网真实漏损的原因有很多,例如管体接口、阀门、管道等漏水,供压不平衡等,若不及时查出真实漏损并快速修复,就会造成严重的水资源浪费与路面塌陷等次生灾害,是水资源管理的重要内容。 ......
  • 解决kubernetes flannel部署的具体操作步骤
    原文:https://blog.51cto.com/u_16175446/6683522KubernetesFlannel部署教程作为一名经验丰富的开发者,我将向你介绍在Kubernetes中部署Flannel网络插件的步骤和所需的代码。Flannel是一个用于Kubernetes集群的网络解决方案,它负责为Pod提供网络互通。整体流程以下是部署Kubernete......
  • kubernetes拉取私有Harbor仓库镜像
    场景描述私有镜像仓库:http://172.16.30.56kubernete集群使用的是containerdkubernete集群中部署服务时,报错:Error:ImagePullBackOffkubernetes拉取私有Harbor仓库镜像配置说明harbor检查确保私有harbor能正常访问,能正常推送镜像:页面访问正常docker获取镜像正常......
  • 云原生架构实战04 kubeSphere 平台安装
    一、Kubernetes上安装KubeSpherehttps://kubesphere.com.cn/安装步骤选择4核8G(master)、8核16G(node1)、8核16G(node2)三台机器,按量付费进行实验,CentOS7.9安装Docker安装Kubernetes安装KubeSphere前置环境安装KubeSphere1、安装Dockersudoyumremovedocker*sudoyuminstall-yyum......
  • 本地k8s部署kubesphere及踩坑记录
    什么是KubeSphere首先介绍一下kubesphere是什么,是从官网上摘抄的。KubeSphere 是在 Kubernetes 之上构建的面向云原生应用的分布式操作系统,完全开源,支持多云与多集群管理,提供全栈的IT自动化运维能力,简化企业的DevOps工作流。它的架构可以非常方便地使第三方应用与云原生生......
  • kubelet pleg is not healthy
    k8s1.19.0PLEG全称是PodLifecycleEventGenerator即Pod生命周期事件生成器,定时检查Pod状态,上报PodEvent事件。PLEGStart启动一个协程,每隔1s调用一次relist,根据最新的PodStatus生成PodLiftCycleEvent,通过eventChannel送到syncLoop消费,由syncPod来触发Pod同步处理,达到期望......
  • 这是我在51CTO博客的第一篇博文Loki 实现 Kubernetes1.24 容器日志监控
    使用Loki实现Kubernetes1.24容器日志监控一、基本介绍1.Loki架构2.Loki工作原理二、使用Loki实现容器日志监控1.安装Loki2.安装Promtail3.安装Grafana4.验证一、基本介绍Loki是由GrafanaLabs团队开发的,基于Go语言实现,是一个水平可扩展,高可用性,多租户的日志聚合系......
  • 物联网告警功能设计
    物联网告警功能设计物联网中的数据告警设计1.需求平台需要具有当某个指标达到某个设定的阀值时进行通知或进行下一步操作,类似于Prometheus监控系统,但是操作要简单化,也就是说在设计触发规则时要支持图形化配置,方便用户配置.1.1数据源数据源为设备数据上传后清洗后放入K......
  • Kubernetes 中使用consul-template渲染配置
    Kubernetes中使用consul-template渲染配置当前公司使用consul来实现服务发现,如Prometheue配置中的target和alertmanager注册都采用了consul服务发现的方式,以此来灵活应对服务的变更。但对于其他服务,是否也有一个通用的方式来使用consul管理配置文件?本文中描述如何使用consul-tem......