Prometheus 钉钉告警配置

1、Prometheus使用钉钉告警需要安装插件,本文以docker部署方式演示
2、说明:本文使用钉钉安全设置中的放通ip段为例演示
在这里插入图片描述
3、docker启动钉钉告警插件

docker run -d --restart always -p 8060:8060 --name webhook-dingding -v /root/dingding.tmpl:/root/dingding.tmpl -v /etc/localtime:/etc/localtime timonwong/prometheus-webhook-dingtalk:v0.3.0 --template.file="/root/dingding.tmpl" --ding.profile="webhook1=https://oapi.dingtalk.com/robot/send?access_token=
自己的钉钉token"

--name webhook-dingding     # docker名称
-v /root/dingding.tmpl:/root/dingding.tmp     # 映射告警模板
-v /etc/localtime:/etc/localtime   # 修改时区
--template.file    # 指定模板路径
 --ding.profile  # 指定钉钉api链接

4、启动完成后可以使用如下命令进行测试钉钉是否正常

curl -H "Content-Type: application/json" -d '{"msgtype":"text","text":{"content":"prometheus alert test"}}' https://oapi.dingtalk.com/robot/send?access_token=b81384b8b0c751cbc8ff736e2c064fc1b68c63878128c4082663bf988a101b11

4.1、返回如下内容表示正常

{"errcode":0,"errmsg":"ok"}

在这里插入图片描述
5、自定义钉钉告警模板

[root@prometheus ~]# cat dingding.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 . }}
告警程序:prometheus_alert
告警级别:{{ .Labels.severity }}
告警类型:{{ .Labels.alertname }}
主机: {{ .Labels.instance }}
命名空间: {{ .Labels.namespace }}
Pod: {{ .Labels.pod }}
告警主题: {{ .Annotations.summary }}
告警描叙: {{ .Annotations.description }}
触发时间: {{ .StartsAt.Format "2006-01-02 15:04:05" }}
------------------------

{{ end }}{{ end }}

{{ define "__text_resolve_list" }}{{ range .  }}
恢复程序:{{ .Labels.alertname }}
主机: {{ .Labels.instance }}
恢复描叙: {{ .Annotations.description }}
触发时间: {{ .StartsAt.Format "2006-01-02 15:04:05" }}
------------------------
{{ end }}{{ end }}


{{ define "ding.link.title" }}{{ template "__subject" . }}{{ end }}
{{ define "ding.link.content" }}#### \[{{ .Status | toUpper }}{{ if eq .Status "firing" }}:{{ .Alerts.Firing | len }}{{ end }}\] **[{{ index .GroupLabels "alertname" }}]({{ template "__alertmanagerURL" . }})**
{{ if gt (len .Alerts.Firing) 0 -}}
![警报 图标](https://ss0.bdstatic.com/70cFuHSh_Q1YnxGkpoWK1HF6hhy/it/u=3626076420,1196179712&fm=15&gp=0.jpg)

**====侦测到故障====**

{{ template "__text_alert_list" .Alerts.Firing }}
{{- end }}
{{ if gt (len .Alerts.Resolved) 0 -}}
恢复列表:
{{ template "__text_resolve_list" .Alerts.Resolved }}
{{- end }}
{{- end }}

6、修改 alertmanager 配置文件

[root@prometheus alertmanager]# cat alertmanager.yml
global:
  resolve_timeout: 5m

route:
  group_by: ['alertname']
  group_wait: 30s
  group_interval: 1m
  repeat_interval: 2m
  receiver: 'web.hook'
receivers:
- name: 'web.hook'
  webhook_configs:
  - url: 'http://localhost:8060/dingtalk/webhook1/send'
    send_resolved: true     # 表示服务恢复后会收到恢复告警
inhibit_rules:
  - source_match:
      alertname: 'ApplicationDown'
      severity: 'critical'
    target_match:
      severity: 'warning'
    equal: ['alertname',"target","job","instance"]

6.1、重启 alertmanager 服务

[root@prometheus alertmanager]# systemctl restart alertmanager

7、修改 prometheus 配置

[root@k8s-node1 prometheus]# cat prometheus.yml
# my global config
global:
  scrape_interval:     15s # Set the scrape interval to every 15 seconds. Default is every 1 minute.
  evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute.
  # scrape_timeout is set to the global default (10s).

# Alertmanager configuration
alerting:
  alertmanagers:
  - static_configs:
    - targets:
       - 192.168.33.145:9093

# Load rules once and periodically evaluate them according to the global 'evaluation_interval'.
rule_files:
  - "rules/*.yml"        # 修改此处的配置即可。此处表示当前prometheus目录下的rules目录下的所有yml文件全部匹配
  # - "second_rules.yml"

# A scrape configuration containing exactly one endpoint to scrape:
# Here it's Prometheus itself.
scrape_configs:
  # The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.
  - job_name: 'prometheus'

    # metrics_path defaults to '/metrics'
    # scheme defaults to 'http'.

    static_configs:
    - targets: ['localhost:9090']

8、重新加载prometheus即可

[root@k8s-node1 prometheus]# kill -HUP 64254

9、钉钉告警示例如下:
在这里插入图片描述
10、服务恢复告警示例如下:
在这里插入图片描述

### 回答1: 要在Kubernetes 1.26上部署Prometheus钉钉告警,可以遵循以下步骤: 1. 首先,您需要创建一个Prometheus配置文件,其中包含Prometheus服务器的相关配置信息。您可以通过使用Prometheus Operator或手动创建一个配置文件。 2. 在该配置文件中,您需要定义钉钉告警的接收者。您可以添加一个名为"dingtalk"的接收者,并提供钉钉机器人的Webhook地址。这将允许Prometheus发送告警通知到钉钉机器人。 3. 接下来,您需要将该配置文件应用到Kubernetes集群中。您可以使用kubectl命令应用一个YAML文件,其中定义了Prometheus服务器的Deployment和Service。 4. 在Prometheus服务器运行后,您可以使用kubectl port-forward命令将Prometheus的端口映射到本地,以便可以访问Prometheus的Web界面。 5. 在Prometheus的Web界面中,您可以配置和监控各种指标,并设置相应的报警规则。您可以通过PromQL查询语言定义报警规则,并指定钉钉接收者。 6. 当报警规则触发时,Prometheus将发送告警通知到钉钉机器人。您可以在钉钉中收到告警通知,并进行相应的处理。 总结:以上是在Kubernetes 1.26上部署Prometheus钉钉告警的大致步骤。具体的实施方式可能会根据您的环境和需求而有所不同。需要注意的是,配置和使用Prometheus钉钉告警需要一定的技术知识和经验。 ### 回答2: 部署k8s 1.26版本中的Prometheus配置钉钉告警需要以下步骤: 1. 安装Prometheus:根据k8s版本选择适当的Prometheus版本,并将其部署到kubernetes集群中。可以使用Helm进行安装:`helm install prometheus stable/prometheus` 2. 配置告警规则:在Prometheus中创建告警规则,以定义要监控的指标和阈值。可以通过编辑Prometheus配置文件或使用Prometheus的API来创建规则。 3. 设置钉钉告警:首先,需要在钉钉开发者平台上创建一个机器人,并获取其Webhook地址。然后,在Prometheus配置文件中添加相应的钉钉告警配置,包括Webhook地址和其他相关参数。 4. 测试告警:修改某些指标或触发条件,以便使Prometheus触发告警规则。可以使用下面的命令手动触发告警:`kubectl -n <prometheus-namespace> delete po -l <label-selector>` 5. 验证告警:检查钉钉群组中是否收到Prometheus告警通知。如果一切配置正确,钉钉机器人将发送告警消息到指定的群组中。 需要注意的是,部署Prometheus配置钉钉告警可能会因k8s版本和Prometheus版本的不同而有所差异。以上步骤仅提供了一个大致的实现方案,在实际操作中可能需要根据具体版本和需求进行一些调整和修改。 ### 回答3: 在k8s 1.26版本中部署Prometheus配置钉钉告警的过程如下: 1. 在k8s集群中创建一个命名空间,用于部署和管理Prometheus及相关组件。 2. 在k8s集群中创建一个ConfigMap,用于存储Prometheus配置文件。配置文件包含了需要监控的目标(例如,Pod、Service等)和具体的告警规则。 3. 创建一个ServiceAccount,并为其授权访问钉钉的权限。这是为了Prometheus能够发送告警通知到钉钉。 4. 部署Prometheus Operator。Prometheus Operator是一个用于管理Prometheus实例的部署程序。 5. 创建Prometheus资源。使用Prometheus Operator创建一个Prometheus资源,并关联之前创建的ConfigMap。 6. 配置Prometheus钉钉告警规则。在ConfigMap内部,添加相应的告警规则配置,用于定义在何种情况下触发告警,并发送通知到钉钉。 7. 部署Alertmanager。Alertmanager是Prometheus的一个组件,用于接收来自Prometheus告警通知,并将其发送到相应的接收者。 8. 配置Alertmanager的钉钉通知方式。在Alertmanager的配置文件中,添加钉钉的通知方式,并填写相应的钉钉机器人Webhook地址。 9. 部署钉钉机器人。在钉钉中创建一个机器人,并获取其Webhook地址。 10. 部署完成后,Prometheus会开始监控集群中的目标,并根据配置告警规则发送告警通知到Alertmanager。Alertmanager会将告警通知通过钉钉机器人的Webhook地址发送到钉钉。 通过以上步骤,我们成功在k8s 1.26版本中部署了Prometheus,并配置钉钉告警。这样就能及时获取到集群中的异常情况,并通过钉钉进行告警通知,便于及时处理和监控运维。
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

运维那些事~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值