标签: promql

如何使用 Prometheus 和collectd 导出器绘制grafana 中的CPU 使用情况图?

promql 新手,我正在尝试绘制随时间变化的 cpu 使用情况图表,我发现以下示例获得了静态使用百分比,但如何将其转换为 grafana 的速率?

100 * (1 - sum(collectd_cpu_total{type="idle"}) by (exported_instance) / sum(collectd_cpu_total) by (exported_instance))
Run Code Online (Sandbox Code Playgroud)

我从https://github.com/Naugrimm/promql-examples得到这个例子

collectd grafana prometheus promql

2
推荐指数
1
解决办法
2万
查看次数

普罗米修斯或使用 rate() 时

概括

我试图弄清楚如何|在 Prometheus 查询中正确使用 OR运算符,因为我导入的 Grafana 仪表板不起作用。

长版

我正在尝试根据从运行AppMetrics/Prometheus 的Kubernetes pod 中抓取的一些数据来调试 Grafana 仪表板;仪表板在这里。基本上发生的情况是,当在serverGrafana 仪表板上选择“全部”的值时(server在这种情况下是一个单独的 pod),没有数据出现。但是,当我选择一个单独的 pod 时,数据确实会出现。

以下是从两个 Pod 中抓取的相同指标的示例:

# HELP application_httprequests_transactions 
# TYPE application_httprequests_transactions summary
application_httprequests_transactions_sum{server="myapp-test-58d94bf78d-jdq78",app="MyApp",env="test"} 5.006965628
application_httprequests_transactions_count{server="myapp-test-58d94bf78d-jdq78",app="MyApp",env="test"} 1367
application_httprequests_transactions{server="myapp-test-58d94bf78d-jdq78",app="MyApp",env="test",quantile="0.5"} 0.000202825
application_httprequests_transactions{server="myapp-test-58d94bf78d-jdq78",app="MyApp",env="test",quantile="0.75"} 0.000279318
application_httprequests_transactions{server="myapp-test-58d94bf78d-jdq78",app="MyApp",env="test",quantile="0.95"} 0.000329862
application_httprequests_transactions{server="myapp-test-58d94bf78d-jdq78",app="MyApp",env="test",quantile="0.99"} 0.055584233

# HELP application_httprequests_transactions 
# TYPE application_httprequests_transactions summary
application_httprequests_transactions_sum{server="myapp-test-58d94bf78d-l9tdv",app="MyApp",env="test"} 6.10214788
application_httprequests_transactions_count{server="myapp-test-58d94bf78d-l9tdv",app="MyApp",env="test"} 1363
application_httprequests_transactions{server="myapp-test-58d94bf78d-l9tdv",app="MyApp",env="test",quantile="0.5"} 0.000218548
application_httprequests_transactions{server="myapp-test-58d94bf78d-l9tdv",app="MyApp",env="test",quantile="0.75"} 0.000277483
application_httprequests_transactions{server="myapp-test-58d94bf78d-l9tdv",app="MyApp",env="test",quantile="0.95"} 0.033821094
application_httprequests_transactions{server="myapp-test-58d94bf78d-l9tdv",app="MyApp",env="test",quantile="0.99"} 0.097113234
Run Code Online (Sandbox Code Playgroud)

我在 Grafana 中运行查询检查器以找出它正在调用哪个查询,然后在 Prometheus 本身中运行 PromQL 查询。基本上,当我单独执行以下 PromQL 查询时,它们会返回数据: …

grafana kubernetes prometheus promql

2
推荐指数
1
解决办法
1374
查看次数

非零值的 PromQL avg_over_time

我正在尝试从仪表指标中获取 avg_over_time 值,但我希望仅从指标的非零值(或者准确地说,大于零的值)中获取平均值。

例子:

avg_over_time(foo[2d] > 0)
Run Code Online (Sandbox Code Playgroud)

但我总是遇到解析错误: binary expression must contain only scalar and instant vector types

我尝试设置录音规则

expr: foo > 0
Run Code Online (Sandbox Code Playgroud)

但不幸的是,结果相同。

这在 PromQL 中可能吗?

prometheus promql

2
推荐指数
1
解决办法
5548
查看次数

何时使用 sum_over_time 与增加 Promql Grafana

我有点不清楚何时确切使用增加以及何时使用 sum_over_time 来计算 Grafana 中的定期数据收集。我想计算系统可用性的总百分比。谢谢。

grafana prometheus promql

2
推荐指数
1
解决办法
1088
查看次数

设置 PromQL 值的格式

我使用此查询规则进行警报:

- alert: HostOutOfMemory

    expr: (1 - node_memory_MemAvailable_bytes / node_memory_MemTotal_bytes) * 100 > 90

    for: 5m

    labels:

      severity: warning

    annotations:

      summary: "{{ $labels.name }} out of memory "

      description: "Host memory is {{ $value }}%"
Run Code Online (Sandbox Code Playgroud)

但是该值是float(PromQL的默认值),我想格式化它(如下图,我可以将其更改为仅显示90%),我该怎么办?

在此输入图像描述

谢谢您阅读此篇。

prometheus slack promql

2
推荐指数
1
解决办法
1982
查看次数

当值不存在时在二进制运算期间设置默认值

我有 2 个指标,第一个指标并不总是存在。如果它不存在,我想表现得像它有一个值0(或结果有一个值0

指标:

metric_1{label=1} 10
...
metric_2{label=1} 2
metric_2{label=2} 5
...
Run Code Online (Sandbox Code Playgroud)

手术:

metric_1 / metric_2
Run Code Online (Sandbox Code Playgroud)

结果:

{label=1} 5
Run Code Online (Sandbox Code Playgroud)

预期的:

{label=1} 5
{label=2} 0
Run Code Online (Sandbox Code Playgroud)

我的现实生活示例有很多标签,因此创建静态向量不起作用{label=2}

prometheus promql

2
推荐指数
1
解决办法
1770
查看次数

Prometheus 子字符串或拆分功能

是否可以将标签的值拆分为指标?

\n

rows_inserted_total{job_name="maejcc100-telemetry-vm-6c96c655c6", type="opentdb"}\nrows_inserted_total{job_name="vacocc100-telemetry-vm-5d49ff7d9b", type="graphite"}\nrows_inserted_total{pod_name="azaacc100-telemetry -vm-7475f44758", type="graphite"}\nrows_inserted_total{job_name="fl06cc200-telemetry-vm-6c99b4f4cb", type="opentsdbhttp"}

\n

标签 job_name 具有长文本值。我只想使用 \xe2\x80\x9cmaejcc100\xe2\x80\x9d 中的 \xe2\x80\x9cmaejcc100-telemetry-vm-6c96c655c6\xe2\x80\x9d 的初始部分。我怎样才能实现这个目标?有没有办法分割标签值或使用子字符串仅获取长文本的一部分?

\n

prometheus promql prometheus-operator

2
推荐指数
1
解决办法
6938
查看次数

在prometheus中找不到查询label_values

在Grafana文档中,我发现我应该能够在promtheus服务器上查询所有使用label_values查询提供监视数据的实例。

我正在使用的查询是:

label_values(up, instance)
Run Code Online (Sandbox Code Playgroud)

不幸的是普罗米修斯告诉我它不知道label_values

Error executing query: parse error at char 13: unknown function with name "label_values"
Run Code Online (Sandbox Code Playgroud)

我正在使用Prometheus 2.0.0和Grafana 5

我究竟做错了什么 ?

grafana prometheus promql

1
推荐指数
2
解决办法
8480
查看次数

标签替换普罗米修斯中的范围向量

我想找到 10 分钟内以“sendsms”开头的所有 pod 的警报总数。

我可以使用label_replace()在即时向量上执行此操作。但是当我想对超过 10 分钟的数据执行此操作时,它无法工作,因为 label_replace 仅适用于即时向量。

举例说明问题:

ALERTS{alertname="CPUThrottlingHigh",pod="sendsms-dbed"} 10
ALERTS{alertname="CPUThrottlingHigh",pod="sendsms-ebed"} 20
ALERTS{alertname="CPUThrottlingHigh",pod="sendsms-fbed"} 30
Run Code Online (Sandbox Code Playgroud)
ALERTS{alertname="CPUThrottlingHigh",pod="sendmail-gbed"} 60
ALERTS{alertname="CPUThrottlingHigh",pod="sendmail-hbed"} 70
ALERTS{alertname="CPUThrottlingHigh",pod="sendmail-ibed"} 80
Run Code Online (Sandbox Code Playgroud)

使用标签替换我可以使用正则表达式添加一个新标签,然后我可以将其分组并获得结果。

label_replace(ALERTS{alertname="CPUThrottlingHigh", "podname", "$1", "pod", "([a-z-A-Z]+)-.*")

ALERTS{alertname="CPUThrottlingHigh",pod="sendsms-dbed", podname="sendsms"} 10
ALERTS{alertname="CPUThrottlingHigh",pod="sendsms-dbed", podname="sendsms"} 10
Run Code Online (Sandbox Code Playgroud)

如何在 10 分钟内为 ALERTS 执行此操作并计算总和?

我想要在过去 10 分钟内得到这样的结果

ALERTS{alertname="CPUThrottlingHigh",podname="sendsms"} 60
ALERTS{alertname="CPUThrottlingHigh",podname="sendmail"} 210
Run Code Online (Sandbox Code Playgroud)

目标:找到过去 1 周内创建最多警报的 Pod。

kubernetes prometheus promql

1
推荐指数
1
解决办法
1273
查看次数

PromQL 查询以查找上周使用的 CPU 和内存

我正在尝试编写一个 Prometheus 查询,它可以告诉我每个命名空间在一个时间范围内(例如一周)使用了多少 CPU(以及另一个用于内存和网络的百分比)。

我尝试使用的指标是container_spec_cpu_sharescontainer_memory_working_set_bytes但我无法弄清楚随着时间的推移如何对它们求和。无论我尝试返回 0 还是错误。

任何有关如何为此编写查询的帮助将不胜感激。

kubernetes prometheus promql

1
推荐指数
1
解决办法
4631
查看次数