Prometheus监控学习笔记之PromQL简单示例

网友投稿 244 2022-11-01

Prometheus监控学习笔记之PromQL简单示例

0x00 简单的时间序列选择

返回度量指标 ​​的所有时间序列样本数据:

​​​​job="apiserver"​​, ​​handler="/api/comments"​​ 的所有时间序列样本数据:

handler="/api/comments"}

返回度量指标名称为 ​​​​job="apiserver"​​, ​​handler="/api/comments"​​,且是 5 分钟内的所有时间序列样本数据:

handler="/api/comments"}[5m]

[info] 注意一个区间向量表达式不能直接展示在 ​​Graph​​ 图表中,但是可以展示在 ​​Console​​ 视图中。

使用正则表达式,你可以通过特定模式匹配标签为 ​​job​​ 的特定任务名,获取这些任务的时间序列。在下面这个例子中, 所有任务名称以 ​​server​​ 结尾。

​​RE2 语法​​

返回度量指标名称是 ​​且 返回码不以 ​​4​​ 开头的所有时间序列数据:

使用函数,操作符等

返回度量指标 ​​过去 5 分钟内的 请求数的平均增长速率:

rate(​​过去 5 分钟内的 请求数的平均增长速率总和,维度是 ​​job​​:

sum(rate(by (job)

结果:

{job="apiserver"} 0.16666666666666666{job="kubelet"} 0.49999876544124355

如果两个指标具有相同维度的标签,我们可以使用二元操作符计算样本数据,返回值:key: value=标签列表:计算样本值。例如,以下表达式返回每一个实例的空闲内存,单位是 MiB。

(instance_memory_limit_bytes - instance_memory_usage_bytes) / 1024 / 1024

如果想知道每个应用的剩余内存,可以使用如下表达式:

sum(instance_memory_limit_bytes - instance_memory_usage_bytes) by (app, proc) / 1024 / 1024

如果相同的集群调度群显示如下的每个实例的 CPU 使用率:

instance_cpu_time_ns{app="lion", proc="web", rev="34d0f99", env="prod", job="cluster-manager"}instance_cpu_time_ns{app="elephant", proc="worker", rev="34d0f99", env="prod", job="cluster-manager"}instance_cpu_time_ns{app="turtle", proc="api", rev="4d3a513", env="prod", job="cluster-manager"}instance_cpu_time_ns{app="fox", proc="widget", rev="4d3a513", env="prod", job="cluster-manager"}...

我们可以按照应用和进程类型来获取 CPU 利用率最高的 3 个样本数据:

topk(3, sum(rate(instance_cpu_time_ns[5m])) by (app, proc))

假设一个服务实例只有一个时间序列数据,那么我们可以通过下面表达式统计出每个应用的实例数量:

count(instance_cpu_time_ns) by (app)

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Prometheus监控学习笔记之在 HTTP API 中使用 PromQL
下一篇:LT86101SX-龙迅-HDMI/DVI高清晰度接口的介绍
相关文章

 发表评论

暂时没有评论,来抢沙发吧~