Time 在普罗米修斯警报管理器电子邮件中填充日期/时间

Time 在普罗米修斯警报管理器电子邮件中填充日期/时间,time,alert,prometheus,Time,Alert,Prometheus,因此,我有一个警报规则,当队列长度长了一段时间后,普罗米修斯会触发该规则 通过alert Manager,我可以创建和接收电子邮件 我现在的问题是,作为电子邮件正文的一部分,我想知道警报管理器触发电子邮件的日期和时间,或者警报何时触发 我不知道怎么做。我是否可以在警报中创建一个标签,并以某种方式用当前日期/时间填充它,或者做些什么?有什么想法吗?Alertmanager模板中的警报具有您可以使用的属性 - alert: Alert for: 5m expr: ... annotati

因此,我有一个警报规则,当队列长度长了一段时间后,普罗米修斯会触发该规则

通过alert Manager,我可以创建和接收电子邮件

我现在的问题是,作为电子邮件正文的一部分,我想知道警报管理器触发电子邮件的日期和时间,或者警报何时触发


我不知道怎么做。我是否可以在警报中创建一个标签,并以某种方式用当前日期/时间填充它,或者做些什么?有什么想法吗?

Alertmanager模板中的警报具有您可以使用的属性

- alert: Alert
  for: 5m
  expr: ...
  annotations:
    timestamp: >
      time: {{ with query "time()" }}{{ . | first | value | humanizeTimestamp }}{{ end }}

我仍然觉得迭代警报和在警报文本中获取timeseries或timestamp的值非常困难。所以我用上面的方法解决了这个问题。它可以工作,并且我能够在电子邮件正文中获得警报的时间戳/时间序列。干杯

嗨,布莱恩,谢谢!但目前我似乎无法增加StartsAt属性。我可能只是不知道如何正确地引用警报数组:我可以得到{.alerts | len}},这给了我1,但是如果我不确定如何获得StartsAt属性,它目前告诉我:“不能在类型中计算字段StartsAt…”迭代警报,然后从元素中获取StartsAt。亲爱的@brian brazil,如何在alertmanager模板中获取当前时间?我想获取仍然触发警报的持续时间,但{(.EndsAt.Sub.StartsAt).Truncate 100000000}不起作用,因为.EndsAt为null,这是一个get负结果。所以我需要用当前时间替换.EndsAt,我尝试了time.Now。但是,我得到了错误“函数”时间“未定义”。是否可以在电子邮件中获取触发警报的持续时间,而无需通过向警报规则添加时间戳来修改每个警报规则?
{.StartsAt |因为}}
也可用于获取警报持续时间。对您的代码的描述没有提供有用的信息,您可以对您的代码进行评论吗?嗨,Andronicus,我已经更新了规则文件。括号中的代码包含普罗米修斯执行的查询,并将其转换为人类可读的格式。1). 注释部分应该有此代码来收集时间戳。2). 在rule.yaml文件中的-alert details下,在注释中添加摘要和说明,并使用此部分“timestamp”。3). 注释部分应该有此代码来收集时间戳。4). 重新启动Prometheus服务器。现在,Alertmanager将具有带有时间戳详细信息的警报。我需要收集的是电子邮件。它可以在另一个配置中收集,因为它是警报注释的一部分。