Prometheus查询示例详解:从基础到高级应用

Prometheus查询示例详解:从基础到高级应用

prometheus Prometheus是一个开源的监控和警报工具,用于监控Kubernetes应用程序和云基础设施的性能和可用性。 - 功能:监控;警报;性能管理;可用性管理;Kubernetes应用程序管理。 - 特点:高可用性;高性能;灵活的数据采集;与Kubernetes集成。 prometheus 项目地址: https://gitcode.com/gh_mirrors/pr/prometheus

引言

Prometheus作为一款强大的监控系统,其查询语言PromQL是用户与监控数据交互的核心工具。本文将深入浅出地讲解PromQL的各种查询示例,帮助读者掌握从基础到高级的查询技巧。

基础时间序列选择

简单指标查询

最基本的查询是直接通过指标名称获取时间序列数据。例如,查询所有http_requests_total指标的时间序列:

http_requests_total

带标签过滤的查询

Prometheus的强大之处在于可以通过标签进行精细过滤。例如,查询特定job和handler的HTTP请求:

http_requests_total{job="apiserver", handler="/api/comments"}

范围向量查询

要获取一段时间内的数据而非瞬时值,可以使用范围向量选择器。例如获取过去5分钟的数据:

http_requests_total{job="apiserver", handler="/api/comments"}[5m]

注意:范围向量结果不能直接绘制成图形,但可以在控制台视图中查看。

正则表达式匹配

PromQL支持使用正则表达式进行灵活匹配。例如匹配所有job名称以"server"结尾的指标:

http_requests_total{job=~".*server"}

也可以排除特定模式,如排除所有4xx状态码:

http_requests_total{status!~"4.."}

子查询详解

子查询允许在指定时间范围内执行内部查询。例如计算过去30分钟内,每1分钟间隔的5分钟请求速率:

rate(http_requests_total[5m])[30m:1m]

更复杂的嵌套子查询示例(注意:不必要的子查询会影响性能):

max_over_time(deriv(rate(distance_covered_total[5s])[30s:5s])[10m:])

函数与运算符应用

速率计算

计算HTTP请求的每秒速率(基于最近5分钟数据):

rate(http_requests_total[5m])

聚合操作

按job维度聚合所有实例的请求速率:

sum by (job) (
  rate(http_requests_total[5m])
)

指标运算

假设有两个相关指标,可以执行数学运算。例如计算每个实例的未使用内存(MiB):

(instance_memory_limit_bytes - instance_memory_usage_bytes) / 1024 / 1024

按应用和进程聚合未使用内存:

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

TopK查询

找出CPU使用率最高的3个应用和进程组合:

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

计数统计

统计每个应用的运行实例数量:

count by (app) (instance_cpu_time_ns)

采样限制

当需要探索指标的标签时,可以使用限制返回样本数量的函数:

返回前10个时间序列:

limitk(10, app_foo_metric_bar)

或者按比例采样(约10%的时间序列):

limit_ratio(0.1, app_foo_metric_bar)

最佳实践建议

  1. 对于计数器指标,总是使用rate()irate()函数处理
  2. 避免不必要的子查询,它们会显著增加查询负载
  3. 在聚合前考虑指标的基数,避免生成过多时间序列
  4. 使用bywithout子句明确指定聚合维度
  5. 对于探索性查询,使用限制函数控制返回结果量

总结

PromQL提供了强大而灵活的数据查询能力,从简单的指标选择到复杂的聚合运算,能够满足各种监控场景的需求。掌握这些查询技巧,将帮助你更好地利用Prometheus进行系统监控和故障排查。

prometheus Prometheus是一个开源的监控和警报工具,用于监控Kubernetes应用程序和云基础设施的性能和可用性。 - 功能:监控;警报;性能管理;可用性管理;Kubernetes应用程序管理。 - 特点:高可用性;高性能;灵活的数据采集;与Kubernetes集成。 prometheus 项目地址: https://gitcode.com/gh_mirrors/pr/prometheus

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

沈昂钧

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值