momo's Blog.

alertmanager告警时区问题

字数统计: 334阅读时长: 1 min
2021/02/24 Share

前言

默认的时区告警是UTC的, 所以我们需要做一些调整

修改时区

我们可以通过官方文档了解到, StartsAt 的 数据类型是 time.Time

Time 初始化以后, 时区已经是写死了. 只能通过其他方法去更改时区,但是我们在template下不能用time模块,我们只能另辟蹊径。

我们可以通过Time对象的Add方法来进行时区的增加操作

Add 方式需要一个参数, 类型是Duration,返回的数据类型还是Time

  • Duration类型
    这个类型表示持续的时间,以int64 纳秒 计数,最大持续可以到290年

    1
    type Duration int64
  • 实例

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    package main

    import (
    "fmt"
    "time"
    )

    func main() {
    start := time.Date(2009, 1, 1, 12, 0, 0, 0, time.UTC)
    afterTime := start.Add(time.Hour * 8)
    afterEightHours := start.Add(28800e9)

    fmt.Printf("start = %v\n", start)
    fmt.Printf("start.Add(time.Hour * 8) = %v\n", afterTime)
    fmt.Printf("start.Add(28800e9) = %v\n", afterEightHours)

    }



    # out
    start = 2009-01-01 12:00:00 +0000 UTC
    start.Add(time.Hour * 8) = 2009-01-01 20:00:00 +0000 UTC
    start.Add(28800e9) = 2009-01-01 20:00:00 +0000 UTC

28800e9 是科学计数法的纳秒数
虽然本身时区并没有变,但是我们还是另辟蹊径通过 +8 小时来达到我们的目的。

alertmanager中应用

1
{{ (.StartsAt.Add 28800e9).Format "2006-01-02 15:04:05" }}

注意.StartsAt 只能在 .Alerts 循环下使用

CATALOG
  1. 1. 前言
  2. 2. 修改时区
    1. 2.1. alertmanager中应用