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)
概括
我试图弄清楚如何|在 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 查询时,它们会返回数据: …
我正在尝试从仪表指标中获取 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 中可能吗?
我有点不清楚何时确切使用增加以及何时使用 sum_over_time 来计算 Grafana 中的定期数据收集。我想计算系统可用性的总百分比。谢谢。
我使用此查询规则进行警报:
- 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%),我该怎么办?
谢谢您阅读此篇。
我有 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}。
是否可以将标签的值拆分为指标?
\nrows_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在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
我究竟做错了什么 ?
我想找到 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。
我正在尝试编写一个 Prometheus 查询,它可以告诉我每个命名空间在一个时间范围内(例如一周)使用了多少 CPU(以及另一个用于内存和网络的百分比)。
我尝试使用的指标是container_spec_cpu_shares,container_memory_working_set_bytes但我无法弄清楚随着时间的推移如何对它们求和。无论我尝试返回 0 还是错误。
任何有关如何为此编写查询的帮助将不胜感激。