如何查询 Prometheus 中所有具有特定标签值的时间序列?
Posted
技术标签:
【中文标题】如何查询 Prometheus 中所有具有特定标签值的时间序列?【英文标题】:How to query all time series that have certain label value in Prometheus? 【发布时间】:2021-11-12 04:28:44 【问题描述】:我将指标存储在 Prometheus 中,并且一些指标属于某些事件并具有 event_id
标签。每个事件都是独一无二的,并且只发生一次,因此它会有一些开始时间、结束时间和持续时间。
我需要查询所选指标的值(让我们将它们命名为 metric1
和 metric2
)以获取所选的 event_id
,而不知道事件何时开始和结束,但知道它发生了。我还需要设置样本的时间步长(或频率)。假设我只需要知道每 10 秒的指标值,而不是记录的每个值。
什么 PromQL 查询可以让我完成这个?
【问题讨论】:
【参考方案1】:如果您查看this answer,您会发现您面临的问题是相似的。在普罗米修斯你可以使用:
event_id="ID", __name__=~"metric.*" [1d]
也许您可以使用alert manager,并设置规则(找到正确的触发器)以在 eventID 发生时发出警报:
name: Event
expr: node_load5 > 2 #find the right trigger
for: 2m
labels:
eventID: eventID #use static or generate from time or sth
startTime: startTime
endTime: endTime
severity: minor
annotations:
summary: High load
【讨论】:
据我所知,[1d]
表示法表示将获取每个样本的持续时间。但是我怎样才能指定频率,以便不是每个样本都被提取,而是每分钟或每 5 分钟或每 30 分钟等一个样本?
可能使用一些aggregattion-over-time 或aggregation operators
尝试将以下查询发送到/api/v1query:metric[1d:5m]
- 它会在最后一天每 5 分钟返回一个样本。以上是关于如何查询 Prometheus 中所有具有特定标签值的时间序列?的主要内容,如果未能解决你的问题,请参考以下文章
启动 zipkin 服务器时出错:Prometheus 要求所有具有相同名称的仪表具有相同的标签键集