关于计划任务的一个小需求-优化篇

关于计划任务的一个小需求-优化

一、优化篇

(下篇写个问题篇,我也不知道怎么解决。。。是完成这个需求过程中遇到的)

 优化主要体现在:报警内容输出,grafana展示图

1、钉钉报警输出内容优化

原报警输出如下:

优化主要包含以下几点:
(1)主题添加链接到报警页面
(2)简化报警内容,去掉干扰信息(summary,alertname这些冒号:左边的文字)
(3)优化事件信息,报警信息输出主机名,不是ip+端口(process-exporter的监听端口)
(4)颜色标记并输出状态,划分告警中/已处理
 

改良版本如下图:

     

优化具体实现(大家对着上面的优化点去看)

(1)(2)(4)点都需要在dingtalk读取的go模板改,我直接贴代码

(1)超链接:   {{ define "__alertmanagerURL" }} http://alertmanager机器的公网ip:9090/alerts{{ end }}

(2)去掉模板上的    {{ .Name }}:

(3)粗体颜色标记对应:   <font color=#008000 size=3 face="黑体"><strong>状态:已解决</strong></font>

 1 {{ define "__subject" }}[告警中] {{ .GroupLabels.SortedPairs.Values | join " " }} {{ if gt (len .CommonLabels) (len .GroupLabels) }}({{ with .CommonLabels.Remove .GroupLabels.Names }}{{ .Values | join " " }}{{ end }}){{ end }}{{ end }}
 2 
 3 {{ define "__alertmanagerURL" }}  http://alertmanager机器的公网ip:9090/alerts{{ end }}
 4 
 5 {{ define "__text_alert_list" }}{{ range . }}
 6 **Labels**
 7 {{ range .Labels.SortedPairs }}> - {{ .Name }}: {{ .Value | markdown | html }}
 8 {{ end }}
 9 **Annotations**
10 {{ range .Annotations.SortedPairs }}> - {{ .Name }}: {{ .Value | markdown | html }}
11 {{ end }}
12 **Source:** [{{ .GeneratorURL }}]({{ .GeneratorURL }})
13 {{ end }}{{ end }}
14 
15 {{ define "default.__text_alert_list" }}{{ range . }}
16 ---
17 <font color=#FF0000 size=3 face="黑体"><strong>状态: 告警中</strong></font>
18 
19 **告警主机:  {{ .Labels.nodename }}**
20 
21 **告警级别:** {{ .Labels.severity | upper }} 
22 
23 **告警触发时间:** {{ dateInZone "2006-01-02 15:04:05" (.StartsAt) "Asia/Shanghai" }}
24 
25 **事件信息:** 
26 {{ range .Annotations.SortedPairs }}> -  {{ .Value | markdown | html }}
27 
28 
29 {{ end }}
30 
31 {{ end }}
32 {{ end }}
33 {{ define "default.__text_alertresovle_list" }}{{ range . }}
34 ---
35 
36 <font color=#008000 size=3 face="黑体"><strong>状态:已解决</strong></font>
37 
38 **告警主机:  {{ .Labels.nodename }}** 
39 
40 **告警级别:** {{ .Labels.severity | upper }} 
41 
42 **告警触发时间:** {{ dateInZone "2006-01-02 15:04:05" (.StartsAt) "Asia/Shanghai" }}
43 
44 **告警结束时间:** {{ dateInZone "2006-01-02 15:04:05" (.EndsAt) "Asia/Shanghai" }}
45 
46 **事件信息:**
47 {{ range .Annotations.SortedPairs }}> -  {{ .Value | markdown | html }}
48 
49 {{ end }}
50 
51 {{ end }}
52 {{ end }}
53 
54 {{/* Default */}}
55 {{ define "default.title" }}{{ template "__subject" . }}{{ end }}
56 {{ define "default.content" }}#### \[ 主题 \] **[{{ index .GroupLabels "alertname" }}]({{ template "__alertmanagerURL" . }})**
57 {{ if gt (len .Alerts.Firing) 0 -}}
58 {{ template "default.__text_alert_list" .Alerts.Firing }}
59 
60 
61 {{- end }}
62 
63 {{ if gt (len .Alerts.Resolved) 0 -}}
64 {{ template "default.__text_alertresovle_list" .Alerts.Resolved }}
65 
66 
67 {{- end }}
68 {{- end }}
69 
70 {{/* Legacy */}}
71 {{ define "legacy.title" }}{{ template "__subject" . }}{{ end }}
72 {{ define "legacy.content" }}#### \[{{ .Status | toUpper }}{{ if eq .Status "firing" }}:{{ .Alerts.Firing | len }}{{ end }}\] **[{{ index .GroupLabels "alertname" }}]({{ template "__alertmanagerURL" . }})**
73 {{ template "__text_alert_list" .Alerts.Firing }}
74 {{- end }}
75 
76 {{/* Following names for compatibility */}}
77 {{ define "ding.link.title" }}{{ template "default.title" . }}{{ end }}
78 {{ define "ding.link.content" }}{{ template "default.content" . }}{{ end }}

其中报警信息输出主机名需要在prometheus定义labels变量,然后报警规则上引用这个变量,如下:

 

 

 

 

2、grafana展示图优化

原显示图:

优化主要包含以下几点:

(1)改成gauge图,一目了然知道当前进程状态(颜色区分healthy和unhealthy)

(2)添加table图,展示30s内最近3条数据,表格头文字表示

优化具体实现

(1)颜色区分健康状态

 用映射的range范围去设置

 

 

(2)table图显示最近3条探测数据:

 

表格头文字表示

transform设置Organize fields,写上具体代表的中文表示

 

 时间按降序排序,点击时间字样,然后应用保存这个表格,下次打开就一直是降序排序了

 

posted @ 2021-03-02 22:37  windysai  阅读(135)  评论(0编辑  收藏  举报