Grafan报警通知至钉钉

416 阅读3分钟

一、创建报警模版

image.png

{{/* 定义消息体片段 */}}
{{ define "my_text_alert_list" }}{{ range . }}

**告警名称**:{{ index .Labels.alertname }}

**告警机器**:
{{- if index .Labels.instance }}
  {{ index .Labels.instance }} {{ index .Labels.device }}
{{- else }}
  实例信息不可用 {{ index .Labels.device }}
{{- end }}

**告警概要**:{{ index .Annotations.summary }}

**告警详情**:{{ index .Annotations.description }}

**触发时间**: {{ (.StartsAt.Add 28800e9).Format "2006-01-02 15:04:05" }} 

{{ if eq .Status "resolved" }}
**恢复时间**: {{ (.EndsAt.Add 28800e9).Format "2006-01-02 15:04:05" }}
{{ end }}
======= = end = ======{{ printf "\n" }}
{{ end }}{{ end }}

{{/* 定义消息体 */}}
{{ define "my.message2" }}
{{ if gt (len .Alerts.Firing) 0 }}--------**<font color='#FF0000'>发生告警</font>**---------
{{ template "my_text_alert_list" .Alerts.Firing }}
{{ end }}
{{ if gt (len .Alerts.Resolved) 0 }}-------**<font color='#00FF00'>恢复告警</font>**-------
{{ template "my_text_alert_list" .Alerts.Resolved }}
{{ end }}
{{ end }}

二、创建报警模版title

{{ define "my.title" }}[监控报警]: [{{ .Status | toUpper }}{{ if eq .Status "firing" }}:{{ .Alerts.Firing | len }}{{ if gt (.Alerts.Resolved | len) 0 }}, RESOLVED:{{ .Alerts.Resolved | len }}{{ end }}{{ end }}]{{ end }}

三、创建通知联络点(当前文章忽略钉钉群聊创建机器人,自行百度如果不会)

image.png 选择上述步骤中创建报警模版的title以及报警消息体

1).Edit Title

image.png

2). Edit Message

image.png

四、设置通知策略(当前选择编辑默认通知策略)

image.png

image.png

五、创建报警规则

方法一、

选择已有的监控仪表盘选择则一个监控项;更多--->新建报警规则

采用方法一可能会有多个查询条件保留一个即可 image.png

方法二、

1). 警报--->警报规则--->New alter rule image.png

2). 定义规则跟名称,cpu大于95%时则会发生告警

image.png 查询语句(摘抄于grafana配置告警规则(二)_grafana 告警规则详解-CSDN博客)

**linux告警规则**
CPU大于90%规则
100 - (avg by (instance,job)(irate(node_cpu_seconds_total{mode="idle"}[5m])) * 100) > 90
内存大于90%规则
(1 - (node_memory_MemAvailable_bytes)/node_memory_MemTotal_bytes)* 100 >90
磁盘大于90%规则
100-(node_filesystem_free_bytes{fstype=~"ext4|xfs"}/node_filesystem_size_bytes {fstype=~"ext4|xfs"}*100) > 90
网络上传大于50mb/s规则
((sum(rate (node_network_transmit_bytes_total{device!~'tap.*|veth.*|br.*|docker.*|virbr*|lo*'}[2m])) by (instance,job)) / 100) > 51200
网络下载大于50mb/s规则
((sum(rate (node_network_receive_bytes_total{device!~'tap.*|veth.*|br.*|docker.*|virbr*|lo*'}[2m])) by (instance,job)) / 100) > 51200
ssl证书小于10天规则
probe_ssl_earliest_cert_expiry - time() < 86400 * 10

**windows告警规则**
CPU大于90%规则
100 - (avg by (instance,job,env) (rate(windows_cpu_time_total{mode="idle"}[2m])) * 100) > 90
磁盘大于90%规则
100 - 100 * ((windows_logical_disk_free_bytes / 1024 / 1024 ) / (windows_logical_disk_size_bytes / 1024 / 1024)) > 90
内存大于90%规则
100 - ((windows_os_physical_memory_free_bytes / windows_cs_physical_memory_bytes) * 100) > 90
网络上传大于50mb/s规则
((sum(irate(windows_net_bytes_sent_total{nic!~'isatap.*|VPN.*'}[2m])) by (instance,job,env)) / 100) > 51200
网络下载大于80mb/s规则
((sum(irate(windows_net_bytes_received_total{nic!~'isatap.*|VPN.*'}[2m])) by (instance,job,env)) / 100) > 81920

3). 查询数据设置细节(测试时可以范围设置小些方便观察效果)

image.png

4). 设置报警规则组

image.png

5). 设置报警规则组的报警评估频率

image.png

6). 设置评估失败或查询未返回任何数据时的警报行为(当前设置为正常什么也不做,可自定义行为。)

image.png

7). 设置使用的通知的联络点

image.png

8). 设置报警要发送的描述信息

image.png

9). 最终钉钉效果

image.png

image.png