prometheus - 如何在 Prometheus 中使用时间单位创建警报?比如“最近 2 分钟平均响应时间超过 5 秒”
问题描述
- name: app
rules:
- alert: ServerHighLatency
expr: sum by(applicationName) (rate(http_server_requests_seconds_sum{status!~"4..|5.."}[1m]))/sum by(applicationName) (rate(http_server_requests_seconds_count{status!~"4..|5.."}[1m])) >= 5s
for: 5s
labels:
severity: critical
annotations:
summary: "{{ $labels.applicationName }} is responding with high latency(5s+)"
description: "*Host*: {{ $labels.node }}\n*Datacenter*: {{ $labels.datacenter }}\n*Value*: {{ humanize $value }}\n"
但是我s
在表达式的最后一个解析错误,所以我想这是不允许的。当我删除s
它时,它可以工作,但永远不会被触发。我找不到任何警报示例来检查某个范围内的平均响应时间,而只能按值进行比较,例如“某个百分位数 > 0.8”,而不是时间单位。是否有意义?
旁注:我无法获得{{ $labels.datacenter }}
和{{ $labels.node }}
工作,但{{ $labels.applicationName }}
正在工作,为什么?我在哪里可以找到 Prometheus 中警报语法的一些好的示例和文档?
解决方案
您不需要(实际上不能)将单位添加到表达式中,只需添加数字即可。如果您的警报从未触发,则可能是表达式有问题,或者结果总是小于 5。您是否在 Prometheus 控制台中测试过表达式?
推荐阅读
- prolog - 在 prolog 中向函数添加任意数量的参数
- python - 如何训练不包含对象的 TensorFlow 对象检测图像?
- c - 首先为makefile创建哪个文件是否重要?
- python - Python从满足给定条件的列表中删除元组
- python - 如何添加多个悬停工具而不在工具栏中显示多个图标?
- dart - 一行中的多个带有填充的文本字段
- c - C 复利递归函数
- mysql - 在 MySQL 中为两组不同的相关 ID 引用一个字段
- spring-kafka - 访问消费者当前偏移量的状态?
- kotlin - 错误:使用@OptionalExpectation 注释的声明只能在通用模块源中使用