问题标签 [promql]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
prometheus - 如何比较指标名称中具有相同数字的一系列指标
假设我们有以下 6 个指标:
我们想创建一个表达式来根据名称的数量来比较这些指标,如下:
像这样的东西:
但我收到以下错误:
执行查询时出错:不允许多对多匹配:匹配的标签在一侧必须是唯一的
Prometheus 规则文件中有没有办法做到这一点?
grafana - 按度量值对重复的面板进行排序
我有一个带有重复面板的仪表板,该面板是一个单值面板,使用probe_ssl_earliest_cert_expiry
Blackbox Exporter 的指标显示 SSL 证书到期的时间。
probe_ssl_earliest_cert_expiry{instance=~"$instance"} - time()
它有效,但面板没有上升,也没有下降。我想要的是这些面板按升序排列,以便首先列出最早过期的 SSL 证书。
我试图用sort_desc(-(probe_ssl_earliest_cert_expiry{instance=~"$instance"} - time()))
它来让它工作,但它没有,面板仍然未分类。
更新
我意识到 Grafana 按$instance
模板变量所在的顺序对重复面板进行排序,该面板被重复。
我使用了probe_success
这个模板变量的度量,但我现在probe_ssl_earliest_cert_expiry
也使用这个度量。
我觉得我更近了一步,但是在这个模板变量上使用数字排序似乎并没有根据度量值正确排序。
有没有办法在 Grafana 中做到这一点,或者面板是根据完全不同的东西订购的?
kubernetes - 在哪里可以找到 Prometheus 指标的描述?
我正在使用 Prometheus 中的数据在 Grafana 中构建仪表板,以监控 Kubernetes 集群中的命名空间。我需要所有这些来查看负载测试期间会发生什么。
现在我花了半天时间寻找有关 Prometheus 中不同指标的信息。我已经阅读了Prometheus 文档和kube 状态指标文档(从我们的集群中获取数据),但我没有找到任何关于哪个指标做什么的描述。我只能根据在这里和那里找到的查询结果和示例进行猜测,但这比我想要的慢而且更不安全。
但是,我遇到了这个SO 答案,所以我认为引用必须是从某个地方复制的。请问有人吗?
prometheus - PromQL 是否有三元运算符或如何按条件查询?
如果以上返回 true,我想执行 topk(10, process_open_fds)。我们如何在一个查询中同时拥有这两者。
尝试如下 - 但没有运气
grafana - 不要使用 promQL 在 Grafana 中显示来自重新部署的 pod 的数据
我有一个 PromQL 查询,它查看每个分位数的最大延迟并在 Grafana 中显示数据,但它显示来自重新部署且不再存在的 pod 的数据。豆荚比 15 天的陈旧期更年轻。
这是查询:max(latency{quantile="..."})
发现的最大延迟是从它被限制的时候开始的,在它重新部署并恢复正常后不久,现在我只想查看当前活动的最大延迟。
到目前为止,我发现的所有关于过时的信息都表明它应该在幕后进行过滤,但看起来它并没有在当前设置中发生,我无法弄清楚我应该改变什么。
在查询中手动添加特定实例 ID 时 - 它运行良好,但 ID 会在重新部署后更改:max(latency{quantile="...", exported_instance="ID"})
这是我发现的一长串类似问题,有些没有回答,有些没有要求相同。我确实发现有些相关但不能以可持续方式解决问题的想法是:
以下链接中没有帮助的建议
- 更改陈旧期,不会起作用,因为它会影响整个系统
- 重启普罗米修斯,不会工作,因为每次重新部署一个pod时都不能这样做
- 列出每台机器的每个图表,不适用于
max
查询
类似问题的链接
- 如何处理 Prometheus 中收集的旧指标? 切换 prom->elk:基于日志的监控
- 仅从最后一次抓取迭代中从 prometheus 获取数据 过时是一个相关概念,在 Singlestat 中它显示了如何仅使用当前值
- Grafana 仪表板显示从 prometheus 删除的信息 默认保留期为 15 天,使用复选框隐藏机器
- 如何从 Prometheus 中删除旧作业? 手动查询/重启
- grafana 变量仍然捕获旧的指标信息 更新普罗米修斯目标
- 使用 prometheus 设置清除 Grafana Delete 中的旧数据
- https://community.grafana.com/t/prometheus-push-gateway/18835 未回答
- https://www.robustperception.io/staleness-and-promql 在没有示例的情况下解释新的陈旧性如何工作
最终目标
正在显示当前所有源之间的最大延迟,从不再存在的源中删除数据。
prometheus - Prometheus 查询以计算时间范围内的唯一标签
我需要计算给定时间范围内普罗米修斯指标的唯一标签集的数量。例如,“在过去 7 天的某个时间点,有多少唯一标签集的值为 1。”
我已经研究过使用count
并且count_over_time
只count
对即时向量进行操作,这意味着我可以及时获得一个实例的唯一标签集的数量,但不能在一个时间范围内汇总。count_over_time
返回无用的值的数量,因为我需要知道标签集的数量而不是每个标签集有多少值。
基本上我想要类似的东西count((metric_name >= 1)[7d])
。这是一个非常容易在 PromQL 之外解决的问题,只需metric_name >= 1
在 7 天内进行范围查询,然后计算响应的结果字段中的系列数,但如果可能的话,我想在 PromQL 中执行此查询。
prometheus - 普罗米修斯“负”偏移
我正在尝试使用普罗米修斯数据源在 Grafana 中绘制条形图。我的简单查询如下所示:
max_over_time(energy_monitor_watthour_today[1d])
我将 Grafana 设置为 1d 的间隔(这工作正常,并且给了我每天的最高点)。但是使用这个,我所有的结果都在未来 1 天太远了。我想基本上给我的结果一个偏移量,将它们推到过去 1 天。
我尝试使用 Prometheus 的 Offset 函数进行查询:
max_over_time(energy_monitor_watthour_today[1d] offset 1d)
但这会产生完全相反的效果,并将我的所有结果移到未来 1 天。使用负偏移量,如下所示:
max_over_time(energy_monitor_watthour_today[1d] offset -1d)
导致以下错误:
char 57 处的解析错误:偏移量意外,预期持续时间
我也尝试使用 Grafana 的时移功能,但这只会移动我的图表的时间范围,而不是更改实际日期。
如何将查询的所有结果移到过去一天?
prometheus - 获取指标有多久没有改变?
我有一个名为 workqueue_depth 的指标。例如,workqueue_depth 现在是 3,我想在表格中显示 workqueue_depth 保持在 3 的时间(例如 5 分钟)。所以,我想通过写promql来获取时间。promql怎么写???
prometheus - Prometheus:检测指标的创建(同名,不同标签)
假设我们有created
具有以下时间纪元值的度量(每个值在前一个值之后收集,因此实例x
和y
不能同时可用)
标签的值instance
是动态的。
如何使用 PromQL 查询数据以检测在 epoch 值 1567000047 时创建了一个实例,而在 1567000050 时创建了另一个实例?
之后我想绘制 Grafana 中的值以查看何时创建新实例。或者至少我如何总结过去 3 小时内创建的实例数量(使用现有值)?
我不能sum
数值,因为我会得到一条直线。据我所见,您无法检测到从缺失到某物的变化,只能从诸如 之类的值中检测到0
。
prometheus - Prometheus 标签与向量时间戳的比较
我有一个像 T@V(label="UTCtimestamp") 和标签 = UTC 时间戳字符串的向量。我想找到所有具有标签的向量的计数
T() - 1 天 <= 标签 <= T()
其中 T() 是向量被推送的时间戳。
我正在寻找一些查询,例如
V(T() - 1 天 <= label <= T())[7d] 其中 T() 表示向量被推送的时间