AlertManager 之微信告警模板,UTC时间错8个小时的解决办法
注意事項(xiàng):
alertmanager中的web頁面顯示的報(bào)警時間是UTC時間,錯8個小時,企業(yè)微信報(bào)警模板中已經(jīng)修改過來了
下面配置可以作為參考:
1.prometheus操作
1.1 配置告警規(guī)則,參考地址:https://www.cnblogs.com/sanduzxcvbnm/p/13589792.html,https://www.cnblogs.com/sanduzxcvbnm/p/14759693.html
1.2 修改告警通知發(fā)送的alertmanager地址
# 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).
#external_labels:
# origin_prometheus: prometheus
# Alertmanager configuration
alerting:
alertmanagers:
- static_configs:
- targets: ['localhost:9093']
# Load rules once and periodically evaluate them according to the global 'evaluation_interval'.
rule_files:
- "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']
- job_name: 'node'
static_configs:
- targets: ['localhost:9100']
- job_name: 'mysql'
static_configs:
- targets: ['localhost:9104']
labels:
instance: park_single_db
2.配置alertmanager
2.1 修改配置文件,設(shè)置告警參數(shù)
# vim /etc/alertmanager/alertmanager.yml
global:
resolve_timeout: 10m
templates:
- 'config/*.tmpl'
route:
group_by: ['alertname']
group_wait: 30s
group_interval: 5m
repeat_interval: 12h
receiver: 'wechat'
receivers:
- name: 'wechat'
wechat_configs:
- send_resolved: true
wechat_api_url: 'https://qyapi.weixin.qq.com/cgi-bin/'
wechat_api_corp_id: '企業(yè)id,在企業(yè)的配置頁面可以看到'
agent_id: '應(yīng)用的AgentId,在應(yīng)用的配置頁面可以看到'
api_secret: '應(yīng)用的secret,在應(yīng)用的配置頁面可以看到'
# 接收者或者是用戶或者是部門,選一個就行
to_user: '@all'
#to_party: ' PartyID1 | PartyID2 '
# 抑制作用可以不要
#inhibit_rules:
# - source_match:
# severity: 'critical'
# target_match:
# severity: 'warning'
# equal: ['alertname', 'instance','job']
2.2 設(shè)置企業(yè)微信告警模板
如果不配置自定義模板,發(fā)出的消息會非常雜亂,我們自定義的配置模板示例如下:
vim /usr/local/alertmanager/config/wechat.tmpl
{{ define "wechat.default.message" }}
{{- if gt (len .Alerts.Firing) 0 -}}
{{- range $index, $alert := .Alerts -}}
{{- if eq $index 0 -}}
**********告警通知**********
告警類型: {{ $alert.Labels.alertname }}
告警級別: {{ $alert.Labels.severity }}
{{- end }}
=====================
告警主題: {{ $alert.Annotations.summary }}
告警詳情: {{ $alert.Annotations.description }}
故障時間: {{ ($alert.StartsAt.Add 28800e9).Format "2006-01-02 15:04:05" }} # 注意這行,時間默認(rèn)UTC 所以后邊加入28800e9 也就是多了8個小時
{{ if gt (len $alert.Labels.instance) 0 -}}故障實(shí)例: {{ $alert.Labels.instance }}{{- end -}}
{{- end }}
{{- end }}
{{- if gt (len .Alerts.Resolved) 0 -}}
{{- range $index, $alert := .Alerts -}}
{{- if eq $index 0 -}}
**********恢復(fù)通知**********
告警類型: {{ $alert.Labels.alertname }}
告警級別: {{ $alert.Labels.severity }}
{{- end }}
=====================
告警主題: {{ $alert.Annotations.summary }}
告警詳情: {{ $alert.Annotations.description }}
故障時間: {{ ($alert.StartsAt.Add 28800e9).Format "2006-01-02 15:04:05" }} # 注意這行
恢復(fù)時間: {{ ($alert.EndsAt.Add 28800e9).Format "2006-01-02 15:04:05" }} # 注意這行
{{ if gt (len $alert.Labels.instance) 0 -}}故障實(shí)例: {{ $alert.Labels.instance }}{{- end -}}
{{- end }}
{{- end }}
{{- end }}
另一種解決UTC時間的辦法
{{ define "wechat.default.message" }}
{{- if gt (len .Alerts.Firing) 0 -}}
{{- range $index, $alert := .Alerts -}}
{{- if eq $index 0 -}}
**********告警通知**********
告警類型: {{ $alert.Labels.alertname }}
告警級別: {{ $alert.Labels.severity }}
{{- end }}
=====================
告警主題: {{ $alert.Annotations.summary }}
告警詳情: {{ $alert.Annotations.description }}
故障時間: {{ $alert.StartsAt.Local.Format "2006-01-02 15:04:05" }} # 注意這行
{{ if gt (len $alert.Labels.instance) 0 -}}故障實(shí)例: {{ $alert.Labels.instance }}{{- end -}}
{{- end }}
{{- end }}
{{- if gt (len .Alerts.Resolved) 0 -}}
{{- range $index, $alert := .Alerts -}}
{{- if eq $index 0 -}}
**********恢復(fù)通知**********
告警類型: {{ $alert.Labels.alertname }}
告警級別: {{ $alert.Labels.severity }}
{{- end }}
=====================
告警主題: {{ $alert.Annotations.summary }}
告警詳情: {{ $alert.Annotations.description }}
故障時間: {{ $alert.StartsAt.Local.Format "2006-01-02 15:04:05" }}
恢復(fù)時間: {{ $alert.EndsAt.Local.Format "2006-01-02 15:04:05" }}
{{ if gt (len $alert.Labels.instance) 0 -}}故障實(shí)例: {{ $alert.Labels.instance }}{{- end -}}
{{- end }}
{{- end }}
{{- end }}
兩者比較
重啟應(yīng)用
分析:
1.報(bào)警分組
根據(jù)告警規(guī)則中設(shè)置的規(guī)則,進(jìn)行告警,相同的告警進(jìn)行分組
group_by: ['alertname']
group_wait: 30s
group_interval: 5m
repeat_interval: 12h
2.默認(rèn)接收告警
receiver: 'wechat'
接收告警的可以根據(jù)告警來源,告警嚴(yán)重程度等進(jìn)行分別發(fā)送告警,這個屬于路由分組功能,具體參考:https://www.cnblogs.com/sanduzxcvbnm/p/14247590.html
3.receivers
這個是實(shí)際執(zhí)行告警的,名稱要跟上一步的保持一致
4.抑制器
# 抑制器配置
inhibit_rules: # 抑制規(guī)則
- source_match: # 源標(biāo)簽警報(bào)觸發(fā)時抑制含有目標(biāo)標(biāo)簽的警報(bào)
severity: 'critical' # 此處的抑制匹配一定在最上面的route中配置不然,會提示找不key。
target_match:
everity: 'warning' # 目標(biāo)標(biāo)簽值正則匹配,可以是正則表達(dá)式如: ".*MySQL.*"
equal: ['alertname', 'instance',"job"] # 確保這個配置下的標(biāo)簽內(nèi)容相同才會抑制,也就是說警報(bào)中必須有這三個標(biāo)簽值才會被抑制。
效果
1.單獨(dú)的一個告警通知
2.有多條告警通知,但是分組合并在一個通知里發(fā)送
總結(jié)
以上是生活随笔為你收集整理的AlertManager 之微信告警模板,UTC时间错8个小时的解决办法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 腾讯开放世界游戏《黎明觉醒:生机》2 月
- 下一篇: 客户机操作系统已禁用 cpu。请关闭或重