我需要在Grafana中显示一个面板,其中包含在右上角选择的时间段内的请求数.
为此,我需要在这里解决2个问题,我将在这里问prometheus问题和另一个链接中的Grafana问题.
如果我有一个计数器http_requests_total,我如何构建一个查询来获取一个整数,其中包含一段时间内的请求总数(例如:24小时)?
假设我编写一个像这样的基本 PromQL 查询
询问:
kube_deployment_spec_replicas{}
结果:
kube_deployment_spec_replicas{deployment="mydeployment",endpoint="myendpoint",instance="myinstance",job="myjob",namespace="default",pod="mypod",service="myservice"}
Run Code Online (Sandbox Code Playgroud)
有没有一种干净的方法可以从结果时间序列中省略instance和?pod
期望:
kube_deployment_spec_replicas{deployment="mydeployment",endpoint="myendpoint",job="myjob",namespace="default",service="myservice"}
Run Code Online (Sandbox Code Playgroud) 我很好奇普罗米修斯的工作原理。使用 Prometheus 界面,我可以看到一个下拉列表,我认为其中包含所有可用的指标。但是,我无法访问列出所有抓取的指标的指标端点。该http://targethost:9090/metrics端点只显示有关普罗米修斯服务器本身的指标。是否可以访问列出所有可用指标的类似端点。我可以基于以下执行查询,{__name__=~".+"}但我更愿意避免使用此选项。也许我还应该补充一点,访问目标部分中列出的端点对我不起作用,因为“无法建立连接”。
我正在使用flexlm_exporter将许可证使用情况导出到 Prometheus,并从 Prometheus 导出到自定义服务(不是 Grafana)。
如您所知,普罗米修斯隐藏了缺失的值。
但是,我的指标值中需要这些缺失值,因此我将其添加到我的舞会查询中or vector(0)
例如:
flexlm_feature_used_users{app="vendor_lic-server01",name="Temp"} or vector(0)
Run Code Online (Sandbox Code Playgroud)
此查询添加一个值为零的空指标。
我的问题是是否有办法将零向量与每个度量值合并?
编辑:
我需要分组,至少对于用户和名称标签,所以向量(0)可能不是这里的最佳选择?

我在不同的 StackOverflow 线程中尝试了多种解决方案,但是没有任何效果。
请协助。
我正在尝试使用高斯的复活节算法在 PromQL 中计算复活节(我需要忽略公共假期的一些警报规则)。
我可以计算日期,但我在月份方面遇到问题,因为我需要类似 if/else 表达式的东西。如果东部是四月,我的记录规则 easter_sunday_in_april 返回 1;如果东部是三月,则返回 0。
(如何)我可以用 PromQL 表达以下内容吗?
if(easter_sunday_in_april > 0)
return 4
else
return 3
Run Code Online (Sandbox Code Playgroud)
为了完整起见,我在这里附上我的录音规则:
- record: a
expr: year(europe_time) % 4
- record: b
expr: year(europe_time) % 7
- record: c
expr: year(europe_time) % 19
- record: d
expr: (19*c + 24) % 30
- record: e
expr: (2*a + 4*b + 6*d + 5) % 7
- record: f
expr: floor((c + 11*d + 22*e)/451)
- record: easter_sunday_day_of_month_temp
expr: 22 …Run Code Online (Sandbox Code Playgroud) 如果我有一个包含以下标签的指标:
my_metric{group="group a"} 100
my_metric{group="group b"} 100
my_metric{group="group c"} 100
my_metric{group="misc group a"} 1
my_metric{group="misc group b"} 2
my_metric{group="misc group c"} 1
my_metric{group="misc group d"} 1
Run Code Online (Sandbox Code Playgroud)
有可能进行查询,甚至label_replace将"misc"组合在一起吗?
(我意识到公制基数需要改进,我已经更新了应用程序来修复它.但是如果我想通过稍后的查询来修复指标,我就会留下这个问题)
我有一个应用程序,当它收到一个特定的 HTTP 请求时,它会增加一个 Prometheus 计数器。该应用程序在 Kubernetes 中运行,具有多个实例并且每天重新部署多次。使用查询http_requests_total{method="POST",path="/resource/aaa",statusClass="2XX"}生成一个图表,按预期显示每个实例的累积请求计数。
我想创建一个 Grafana 图,显示过去 7 天内收到的请求的累积频率。
我的第一个想法是increase(...[7d])为了考虑 7 天窗口之外的任何指标(如图所示),然后sum是这些值。
我已经意识到sum(increase(http_requests_total{method="POST",path="/resource/aaa",statusClass="2XX"}[7d]))事实上确实给出了时间点的正确答案。然而,生成的图表并不完全符合要求,因为组件increase(...) 值会随着一周而增加/减少。
我将如何创建一个图表来显示过去 7 天内这些指标增加的累积总和?例如,给定以下简化数据
| Day | # Requests |
|-----|------------|
| 1 | 10 |
| 2 | 5 |
| 3 | 15 |
| 4 | 10 |
| 5 | 20 |
| 6 | 5 |
| 7 | 5 |
| …Run Code Online (Sandbox Code Playgroud) 我想计算两个指标的比率,但我没有得到任何数据...
我有一些指标,例如:
fs_bytes{filesystem="/var",instance="localhost:9108",job="graphite",metric="Used"} 50.0
fs_bytes{filesystem="/var",instance="localhost:9108",job="graphite",metric="Total"} 100.0
Run Code Online (Sandbox Code Playgroud)
当我尝试执行任何操作(设备、乘法、加法、减法)时,例如:
fs_bytes{instance="localhost:9108",metric="Used"} / fs_bytes{instance="localhost:9108",metric="Total"}
Run Code Online (Sandbox Code Playgroud)
普罗米修斯返回:
no data
Run Code Online (Sandbox Code Playgroud)
当我在 Prometheus 表达式浏览器中单独查询每个指标时,我确实得到了指标值。
怎么了?
我试图将系统正常运行时间显示为 DD-HH-MM-SS 格式,使用通用代码执行此操作不会有问题,但我仅使用 Prometheus (PromQL) 和 Grafana 执行此操作,这是 PromQL 查询:
time()-process_start_time_seconds{instance="INSTANCE",job="JOB"}
我实现了我想要的基本输出,它向我显示了进程的生命周期。上面查询的输出给出了以秒为单位的时间(例如68003),并将其转换为更大的时间单位(分钟、小时等),但采用十进制形式:
小数点后的89指的是一个小时的89%,约53分钟。这并不是一种真正“直观”的显示时间的方式,我希望它能显示该时间的正常 DD:HH:MM:SS 演示,如以下来自一个简单在线工具的屏幕截图,该工具将秒转换为时间:
有没有办法仅使用 PromQL 和 Grafana 配置来实现它?