promQL基本使用
PromQL(Prometheus Query Language) 是 Prometheus 自己开发的数据查询 DSL 语言,语言表现力非常丰富,支持条件查询、操作符,并且内建了大量内置函数,供我们针对监控数据的各种维度进行查询。
- 瞬时向量与范围向量查询
- 查询指标最新样本(称为瞬时向量):
node_cpu_seconds_total
- 可以通过附加一组标签来进一步过来这些时间序列:
node_cpu_seconds_total{job="Linux Server"}
- 查询指标近5分钟内样本(称为范围向量,时间单位 s,m,h,d,w,y):
node_cpu_seconds_total{job="Linux Server"}[5m]
- 常用操作符
- 比较操作符
node_cpu_seconds_total{job="Linux Server",mode="iowait"}
node_cpu_seconds_total{job="Linux Server",mode=~"user|system"}
node_cpu_seconds_total{job="Linux Server",mode=~"user|system",cpu!="0"}
- 算术操作符
CPU使用率:
100 - (avg(irate(node_cpu_seconds_total{mode="idle"}[5m])) by (instance) * 100)
内存使用率:
100 - (node_memory_MemFree_bytes+node_memory_Cached_bytes+node_memory_Buffers_bytes) /
node_memory_MemTotal_bytes * 100
- 正则匹配操作符
磁盘使用率:
100 - (node_filesystem_free_bytes{mountpoint="/",fstype=~"ext4|xfs"} /
node_filesystem_size_bytes{mountpoint="/",fstype=~"ext4|xfs"} * 100)
- 聚合操作符
所有实例CPU system使用率总和:
sum(node_cpu_seconds_total{job="Linux Server",mode="system"})
所有实例CPU system变化速率平均值:
avg(irate(node_cpu_seconds_total{job="Linux Server",mode="system"}[5m])
统计CPU数量:
count(node_cpu_seconds_total{job="Linux Server",mode="system"})
- 逻辑操作符
大于10并且小于50:
prometheus_http_requests_total > 10 and prometheus_http_requests_total < 50
大于10或者小于50:
prometheus_http_requests_total > 10 or prometheus_http_requests_total < 50
- 常用函数
irate():计算指标在一定时间间隔内的变化速率
irate(node_cpu_seconds_total{job="Linux Server",mode="system"}[5m])
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?