Prometheus 配置钉钉报警

配置钉钉机器人


获取token
https://oapi.dingtalk.com/robot/send?access_token=a85f438fa00c451c0b32ed0fc799609093436f07e93e518bde59dd6d26f930e9

配置钉钉告警插件

vim dingtalk-webhook.yaml
---
apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app: prometheus-webhook-dingtalk
  name: prometheus-webhook-dingtalk
  namespace: monitoring
spec:
  replicas: 1
  selector:
    matchLabels:
      app: prometheus-webhook-dingtalk
  template:
    metadata:
      labels:
        app: prometheus-webhook-dingtalk
    spec:
      containers:
      - name: prometheus-webhook-dingtalk
        image: timonwong/prometheus-webhook-dingtalk:v0.3.0
        imagePullPolicy: IfNotPresent
        args:
          - --ding.profile=webhook1=获取的钉钉token
          - --template.file=/usr/share/prometheus-webhook-dingtalk/template/webhook-dingtalk.tmpl
        volumeMounts:
        - mountPath: /usr/share/prometheus-webhook-dingtalk/template/
          name: webhook-dingtalk-template
        ports:
        - containerPort: 8060
          protocol: TCP
        resources:
          requests:
            cpu: 100m
            memory: 100Mi
          limits:
            cpu: 200m
            memory: 1000Mi
      volumes:
      - name: webhook-dingtalk-template
        configMap:
          name: webhook-dingtalk-template
          defaultMode: 420

---
apiVersion: v1
kind: Service
metadata:
  labels:
    app: prometheus-webhook-dingtalk
  name: prometheus-webhook-dingtalk
  namespace: monitoring
spec:
  ports:
  - port: 8060
    protocol: TCP
    targetPort: 8060
  selector:
    app: prometheus-webhook-dingtalk
  sessionAffinity: None

配置报警模板

mkdir -p /usr/share/prometheus-webhook-dingtalk/template/
vim /usr/share/prometheus-webhook-dingtalk/template/webhook-dingtalk.tmpl 
{{ define "__subject" }}[{{ .Status | toUpper }}{{ if eq .Status "firing" }}:{{ .Alerts.Firing | len }}{{ end }}] {{ .GroupLabels.SortedPairs.Values | join " " }} {{ if gt (len .CommonLabels) (len .GroupLabels) }}({{ with .CommonLabels.Remove .GroupLabels.Names }}{{ .Values | join " " }}{{ end }}){{ end }}{{ end }}
{{ define "__alertmanagerURL" }}{{ .ExternalURL }}/#/alerts?receiver={{ .Receiver }}{{ end }}

{{ define "__text_alert_list" }}{{ range . }}

**报警内容**
{{ range .Labels.SortedPairs }}> - {{ .Name }}: {{ .Value | markdown | html }}
{{ end }}

**报警信息**
{{ range .Annotations.SortedPairs }}> - {{ .Name }}: {{ .Value | markdown | html }}
{{ end }}


{{ end }}{{ end }}

{{ define "ding.link.title" }}{{ template "__subject" . }}{{ end }}
{{ define "ding.link.content" }}

### k8s集群测试环境监控报警

---

{{ index .GroupLabels "alertname" }}
{{ template "__text_alert_list" .Alerts.Firing }}
{{ end }}


{{ if gt (len .Alerts.Resolved) 0 -}}

**恢复内容**
{{ template "__text_resolve_list" .Alerts.Resolved }}
{{ end }}

创建configmap 报警模板生成

kubectl create configmap webhook-dingtalk-template --from-file=webhook-dingtalk.tmpl -n monitoring

应用dingtalk-webhook.yaml

kubectl apply -f dingtalk-webhook.yaml

添加告警接受器

vim kube-prometheus-0.9.0/manifests/alertmanager.yaml
global:
  resolve_timeout: 5m
route:
  group_by: ['job']
  group_wait: 0s
  group_interval: 5m
  repeat_interval: 2h
  receiver: webhook
receivers:
- name: 'webhook'
  webhook_configs:
  - url: 'http://prometheus-webhook-dingtalk:8060/dingtalk/webhook1/send'
    send_resolved: true

注:上述配置url: 'http://webhook-dingtalk.monitoring.svc.cluster.local:8060/dingtalk/webhook1/send' 是dingtalk-webhook.yaml文件中svc的地址。

替换原有secret

cd kube-prometheus-0.9.0/manifests/
kubectl delete  secret alertmanager-main -n monitoring
kubectl create  secret generic alertmanager-main --from-file=alertmanager.yaml -n monitoring

测试

#! /bin/bash

alert_payload='[
  {
    "labels": {
       "alertname": "报警通道测试",
       "dev": "sda1",
       "instance": "127.0.0.1",
       "severity": "critical"
     },
     "annotations": {
        "info": "报警通道测试",
        "summary": "报警通道测试"
      }
  }
]'

alertmanager_0_ip=`kubectl describe po alertmanager-main-0 -n monitoring | grep "IP:     " |  awk 'END{print $2}'`

curl -XPOST -H "Content-Type: application/json" -d"${alert_payload}" http://${alertmanager_0_ip}:9093/api/v1/alerts
  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在Prometheus中设置钉钉报警,你需要进行以下步骤: 1. 首先,你需要在Prometheus配置文件`prometheus.yml`中定义告警规则(AlertRule)。你可以使用Prometheus的查询语言(PromQL)来定义告警规则,以监测指标并触发告警。具体的告警规则配置可以参考\[1\]。 2. 接下来,你需要安装和配置Alertmanager。Alertmanager是Prometheus的一个报警通知组件,负责接收来自Prometheus的告警信息,并发送通知到不同的目标,比如钉钉。你可以从Alertmanager的官方GitHub页面下载并安装Alertmanager\[2\]。 3. 在Alertmanager的配置文件中,你需要添加钉钉配置信息。具体的配置可以参考Alertmanager的文档,其中包括钉钉webhook地址、消息模板等信息。你可以根据需要自定义告警通知的内容和格式。 4. 最后,重新启动Prometheus和Alertmanager,使配置生效。 通过以上步骤,你就可以在Prometheus中设置钉钉报警了。当Prometheus监测到满足告警规则的条件时,会将告警信息发送给Alertmanager,然后Alertmanager会将告警通知发送到钉钉。这样,你就能及时收到钉钉上的告警通知了。 #### 引用[.reference_title] - *1* [Prometheus集成钉钉报警](https://blog.csdn.net/weixin_45203131/article/details/118545413)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [prometheus自定义钉钉报警](https://blog.csdn.net/qq_41892421/article/details/116761373)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值