prometheus告警时间如何改成北京时间

prometheus-2.36.0.linux-amd64
alertmanager-0.24.0.linux-amd64
blackbox_exporter-0.21.0.linux-amd64
grafana-8.5.4
centos 7.9
相关配置
cat alertmanager.yml

templates:

  • '/opt/prometheus/alertmanager/template/default.tmpl'

cat /opt/prometheus/alertmanager/template/default.tmpl
{{ define "email.html" }}
{{- if gt (len .Alerts.Firing) 0 -}}
{{- range $index, $alert = .Alerts -}}

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

告警级别:{{ .Labels.severity }}

告警机器:{{ .Labels.instance }} {{ .Labels.device }}

告警详情:{{ .Annotations.summary }}

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

{{- end }}
{{- end }}
{{- if gt (len .Alerts.Resolved) 0 -}}
{{- range $index, $alert = .Alerts -}}

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

告警级别:{{ .Labels.severity }}

告警机器:{{ .Labels.instance }}

告警详情:{{ .Annotations.summary }}

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

恢复时间:{{ (.EndsAt.Add 28800e9).Format "2006-01-02 15:04:05" }}

{{- end }}
{{- end }}
{{- end }}

cat alertmanager.yml
routes:

  • match:
    alarm_by: send_emails
    receiver: Email_alarm

receivers:

告警信息会发到 192.168.6.62 其中8080由PrometheusAlert 提供,并转发到微信的机器人去,参考资料https://www.modb.pro/db/392087
问题,故障发生时,邮件收到的告警信息是北京时间,通过微信机器人收到的告警信息,“192.168.6.62:8080/” 是UTC时间
但微信如果不用机器人接受告警,采用agent_id 和 corp_id 接受告警,告警信息显示的又是北京时间,配置类似如下:
wechat_configs:
- send_resolved: true
to_party: '1'
agent_id: '10002'
corp_id: 'ww5d92'
api_secret: 'mJxIIMDEKC8h6fnJ-Yw'
需要解决的问题,如何设置采用微信机器人接收告警,也显示是北京时间?通过UTC+8=北京时间的办法似乎行不通,上面的告警模板已经是“StartsAt.Add 28800e9”
或者怎么给微信机器人指定告警模板,然后在模板中转换告警时间(UTC+8=北京时间),指定模板问题可以试试,但没成功,求帮助

太痛苦了,好多词汇不给输入

img

原生的Prometheus查询指标时页面显示的指标趋势图是根据GMT时间显示的,与北京时间相差8小时,为此我们将源码中获取时间的方式修改成从本地系统时间获取。

注意:prometheus里面的时区是GMT,图形横轴显示的时间与后面的grafana显示时间不同,我们用的主机时区是CST,大家可以自己了解这个时区间的关系

现在我们本地电脑是北京时间和prometheus查询出来的时间如图所示

默认时间是GMT时间,在dashboard上有use local time选项,勾选后时间就会被转换成当地时间了。

但是在grafana上面显示的数据还是北京时间的时间

所以这里需要特别注意下~

修改预警模板文件,在获取的时间上转换时区

在预警模板中使用函数 GetCSTtime  解析时间
例如:<font color="#FF0000">开始时间</font>{{GetCSTtime  $v.startsAt }}   

如有帮助,请采纳,十分感谢!

prometheus的预警时间和北京时间不一致

1、使用linux的date命令查看时间

prometheus时间
/prometheus $ date
Thu Apr  7 08:11:39 UTC 2022

真正的时间

[root@cloudtest Asia]# date
20220407日 星期四 16:11:39 CST

2、修改预警模板文件,在获取的时间上转换时区

在预警模板中使用函数 GetCSTtime 解析时间
例如:

<font color="#FF0000">开始时间</font>{{GetCSTtime  $v.startsAt }}