Prometheus 将普罗米修斯警报中的自定义字段发送到pagerduty
我有一个场景,需要将当前时间戳从普罗米修斯发送到Pagerduty。我需要从Pagerduty中的自定义详细信息访问当前时间戳,以基于当前时间写入事件规则 目前,我可以在页面的自定义详细信息中看到三个字段。所有与警报相关的详细信息都在“触发”字段中,但作为单个字符串 我曾想过将时间戳添加到普罗米修斯事件规则中的标签中,但问题是我无法从“触发”字段中检索该值,因为它不是结构化格式 从普罗米修斯处收到的页面上的事件详情:Prometheus 将普罗米修斯警报中的自定义字段发送到pagerduty,prometheus,prometheus-alertmanager,pagerduty,Prometheus,Prometheus Alertmanager,Pagerduty,我有一个场景,需要将当前时间戳从普罗米修斯发送到Pagerduty。我需要从Pagerduty中的自定义详细信息访问当前时间戳,以基于当前时间写入事件规则 目前,我可以在页面的自定义详细信息中看到三个字段。所有与警报相关的详细信息都在“触发”字段中,但作为单个字符串 我曾想过将时间戳添加到普罗米修斯事件规则中的标签中,但问题是我无法从“触发”字段中检索该值,因为它不是结构化格式 从普罗米修斯处收到的页面上的事件详情: { "client": "AlertManager", "client_u
{
"client": "AlertManager",
"client_url": "http://********/",
"description": "[FIRING:1] **************",
"event_type": "trigger",
"incident_key": "********",
"service_key": "********",
"details": {
"firing": "Labels:\n - alertname = ******\n - datacenter = *****\n - instance = ******\n - instance_id = ******\n - instance_type = ******\n - job = ******\n - metrics = ******\n - node = ******\n - pod = ******\n - private_ip = ******\n - public_ip = ******\n - service = ******\n - severity = critical\nAnnotations:\n - description = ******\n - summary = ******\nSource: ******\n",
"num_firing": "1",
"num_resolved": "0",
"resolved": ""
}
}
我需要将当前时间戳添加到与“触发”字段相同的级别。有没有办法通过普罗米修斯警报管理器配置或警报规则来实现这一点 普罗米修斯向警报添加额外元数据的标准方法是通过注释
- alert: Alert
for: 5m
expr: ...
annotations:
timestamp: >
time: {{ query "time()" }}
这会将时间戳注释添加到正在触发的警报中。普罗米修斯向警报添加额外元数据的标准方法是通过注释
- alert: Alert
for: 5m
expr: ...
annotations:
timestamp: >
time: {{ query "time()" }}
- alert: Alert
for: 5m
expr: ...
annotations:
timestamp: >
time: {{ with query "time()" }}{{ . | first | value | humanizeTimestamp }} {{ end }}
这会将时间戳注释添加到正在触发的警报中
- alert: Alert
for: 5m
expr: ...
annotations:
timestamp: >
time: {{ with query "time()" }}{{ . | first | value | humanizeTimestamp }} {{ end }}
我已经解决了同样的问题,如上所述。
干杯
我已经解决了同样的问题,如上所述。
干杯 您可以直接将其作为自定义详细信息添加到alertmanager.yaml中
details:
time: {{ query "time()" }}
请注意,这会从alertmanager的角度增加时间,因此可能会有一点延迟。您可以直接将此作为自定义详细信息添加到alertmanager.yaml中
details:
time: {{ query "time()" }}
请注意,这会从alertmanager的角度增加时间,因此可能会有一点延迟。您好,谢谢您的回复。我尝试了这个(时间戳:{{time()}}}),我得到了一个类似“无法解组!!映射到字符串”的错误。我用双引号括起来,如(timestamp:{time()}}),但仍然得到一个错误,如“function”time“not defined”@SujaiSivasamy updated answer,它缺少在注释中计算PromQL表达式所需的
query
函数。我仍然得到与“cannot unmarshal!!map into string”相同的错误运行promtool检查规则命令时。是否与我们使用的版本有关?它现在通过了promtool验证。但是我为查询得到的值是“timestamp=time:[0xc46b3c7ec0]”。知道哪里出了问题吗?嘿,我发现是十六进制值。当我通过历元转换器将它转换成十进制和人类可读的时间时,它给我的时间是“GMT:Sunday,May 15,1996 5:51:24.928 PM”,这是错误的。我不知道我错过了什么。嗨,谢谢你的回复。我尝试了这个(时间戳:{{time()}}}),我得到了一个类似“无法解组!!映射到字符串”的错误。我用双引号括起来,如(timestamp:{time()}}),但仍然得到一个错误,如“function”time“not defined”@SujaiSivasamy updated answer,它缺少在注释中计算PromQL表达式所需的query
函数。我仍然得到与“cannot unmarshal!!map into string”相同的错误运行promtool检查规则命令时。是否与我们使用的版本有关?它现在通过了promtool验证。但是我为查询得到的值是“timestamp=time:[0xc46b3c7ec0]”。知道哪里出了问题吗?嘿,我发现是十六进制值。当我通过历元转换器将它转换成十进制和人类可读的时间时,它给我的时间是“GMT:Sunday,May 15,1996 5:51:24.928 PM”,这是错误的。我不确定我错过了什么。