Prometheus 如何配置Grafana以捕捉普罗米修斯的公制急剧下降?

Prometheus 如何配置Grafana以捕捉普罗米修斯的公制急剧下降?,prometheus,grafana,Prometheus,Grafana,我们用Grafana监控某些事件和火警。数据存储在Prometheus中(但我们没有使用Prometheus警报管理器) 昨晚,我们的一个指标出现了问题,目前我们还没有警报。我想添加一个,但我正在努力确定最好的方法 在本例中,该度量的Y轴非常低,隔夜(图左侧的02:00-07:00)您可以看到该度量下降到接近零的位置 我们想在晚上8点检测右侧的急剧下降。我们在晚上9点左右(水平线)检测到下降到完全为零,但我想确定一下突然下降的原因 我们的普罗米修斯问题是: sum(rate({__name__

我们用Grafana监控某些事件和火警。数据存储在Prometheus中(但我们没有使用Prometheus警报管理器)

昨晚,我们的一个指标出现了问题,目前我们还没有警报。我想添加一个,但我正在努力确定最好的方法

在本例中,该度量的Y轴非常低,隔夜(图左侧的02:00-07:00)您可以看到该度量下降到接近零的位置

我们想在晚上8点检测右侧的急剧下降。我们在晚上9点左右(水平线)检测到下降到完全为零,但我想确定一下突然下降的原因

我们的普罗米修斯问题是:

sum(rate({__name__=~"metric_name_.+"}[1m])) by (grouping)
我试过看一些东西,比如:

sum(increase({__name__=~"metric_name_.+"}[1m])) by (grouping)
但它们最终的图形大致与下面的图形相似,但在Y轴尺度上存在差异,因此很难区分“接近零&安静”和“接近零,因为这些指标已经跌入悬崖”


我们可以使用什么样的Grafana和Prometheus设置组合来有效识别这种变化?

您使用了错误的功能:对于仪表,您应该使用。它将在一分钟内露出水滴:

sum(delta(rate({__name__=~"metric_name_.+"}[1m])[1m:])) by (grouping)
下一步是定义触发错误的下降百分比-下降80%(注意:为了清楚起见,省略
sum by(grouping)
):

然后,您可能希望在检测到下降后有一个警报持续时间。在这种情况下,您必须使用子查询或记录规则(此处命名为
drop\u rate\u percent
):


谢谢@michael doubez。我不确定我是否做对了,我道歉。如果我过滤到单个主机以避免求和问题,我最终会得到这样一个图:。它与
速率
函数的形状相同,但轴要小得多。切换到仪表仅显示
0.00031
的值。你能再详细解释一下你的问题吗?例如,为什么是100?为什么要把三角洲除以总面积?另外,
>80%
也会导致一个错误(“char 189处的解析错误:找不到有效的表达式”,如果相关的话,我在prometheus 1.6.3上)。谢谢你的帮助!下面是我的完整查询,以提供图像中的一些附加上下文:
100*(delta({uuuuu name{uuuuu=~“[[env]].\u pubsub\u mm\u events\u live\u ref.+”,host=“ip-172-20-4-73”}[1m])/{uuuuuu name\uuuuuuu=~“[[env].\u pubsub mm\u events\u live\u ref.+”,host=“ip-172-20-4-73”}1m)
。它应该是80%而不是80%——我被这个逻辑迷住了。这个逻辑是计算一分钟(或更长时间)的下降百分比
delta(foo[1m])
给出范围内的值差,
foo offset 1m
给出delta开头的值。这些值乘以-100的比率提供了下降比例的信息。是。如果我认为实际指标的“陡降”是另一个表达式(如速率),那么您应该将我的答案中的元素应用于您的表达式。请注意,它需要子查询,这可能会很昂贵。录制规则可以节省您的周期和键入时间。
(-100 * delta(rate({__name__=~"metric_name_.+"}[1m])[1m:]) / rate({__name__=~"metric_name_.+"}[1m] offset 1m)) > 80
rules:
- record: metric_name_rate
  expr: sum(rate({__name__=~"metric_name_.+"}[1m])) by(grouping)

- record: drop_rate_percent
  expr: -100 * delta(metric_name_rate[1m]) / (metric_name_rate offset 1m)

- alert: SteepDrop
  expr: max_over_time(drop_rate_percent[15m]) > 80