在 PromQL 中将尖峰检测为滚动百分比
Detect spikes as a rolling percentage in PromQL
我有一个用例,我希望能够将给定指标随时间的变化率绘制为滚动总和的百分比,但我不知道如何在 PromQL 中表达它。
例如,如果当前总和为 100,而前 5 分钟前的总和为 50,则最后 5 分钟增加了 200%。我想以百分比的形式绘制该比率随时间变化的图表,以便我可以对此发出警报。
这是我试过的方法:
delta(firehose_counter_event_gorouter_total_requests_total{bosh_job_name="router"}[5m])
irate(firehose_counter_event_gorouter_total_requests_total{bosh_job_name="router"}[5m]) >= 50
不过,我不太确定这些查询是否符合我的要求。我试图确保能够查询随时间推移的速率峰值,以便我可以了解何时出现流量突发超过平均流量的正常起伏。我关心滚动平均值的百分比,因为在一天中的特定时间和一年中的特定时间,流量通常可能会更高或更低,因此绝对值可能会产生很多误报,而凌晨 3 点的峰值和下午 3 点的峰值正在发生由于不同的流量而看起来不同。
PromQL 为这种情况提供了 offset 修饰符。与前 5 分钟相比,以下查询将 return 过去 5 分钟内每秒速率的相对变化:
rate(firehose_counter_event_gorouter_total_requests_total{bosh_job_name="router"}[5m]) /
rate(firehose_counter_event_gorouter_total_requests_total{bosh_job_name="router"}[5m] offset 5m)
我有一个用例,我希望能够将给定指标随时间的变化率绘制为滚动总和的百分比,但我不知道如何在 PromQL 中表达它。
例如,如果当前总和为 100,而前 5 分钟前的总和为 50,则最后 5 分钟增加了 200%。我想以百分比的形式绘制该比率随时间变化的图表,以便我可以对此发出警报。
这是我试过的方法:
delta(firehose_counter_event_gorouter_total_requests_total{bosh_job_name="router"}[5m])
irate(firehose_counter_event_gorouter_total_requests_total{bosh_job_name="router"}[5m]) >= 50
不过,我不太确定这些查询是否符合我的要求。我试图确保能够查询随时间推移的速率峰值,以便我可以了解何时出现流量突发超过平均流量的正常起伏。我关心滚动平均值的百分比,因为在一天中的特定时间和一年中的特定时间,流量通常可能会更高或更低,因此绝对值可能会产生很多误报,而凌晨 3 点的峰值和下午 3 点的峰值正在发生由于不同的流量而看起来不同。
PromQL 为这种情况提供了 offset 修饰符。与前 5 分钟相比,以下查询将 return 过去 5 分钟内每秒速率的相对变化:
rate(firehose_counter_event_gorouter_total_requests_total{bosh_job_name="router"}[5m]) /
rate(firehose_counter_event_gorouter_total_requests_total{bosh_job_name="router"}[5m] offset 5m)