k8s基础监控promql

PromQL 基础语法

PromQL(Prometheus Query Language)是 Prometheus 的时间序列数据查询语言,用于监控 Kubernetes 集群中的资源指标。以下是核心语法和示例:

即时向量查询

直接查询时间序列的当前值:

promql 复制代码
node_memory_MemTotal_bytes  # 查询节点内存总量
container_cpu_usage_seconds_total  # 查询容器CPU使用时间
范围向量查询

查询指定时间范围内的数据:

promql 复制代码
node_cpu_seconds_total[5m]  # 过去5分钟的CPU时间
kube_pod_container_resource_limits_cpu_cores[1h]  # 过去1小时的CPU限制
运算符

支持算术、比较和逻辑运算:

promql 复制代码
node_memory_MemFree_bytes / node_memory_MemTotal_bytes * 100  # 计算内存空闲百分比
kube_pod_status_phase{phase="Running"} == 1  # 筛选运行中的Pod
聚合函数

对数据进行聚合计算:

promql 复制代码
sum(rate(container_cpu_usage_seconds_total[5m])) by (pod)  # 按Pod聚合CPU使用率
avg(kube_node_status_allocatable_memory_bytes)  # 计算节点平均可分配内存

常用 Kubernetes 监控指标

节点资源监控
promql 复制代码
# CPU使用率
100 - (avg(rate(node_cpu_seconds_total{mode="idle"}[5m])) by (instance) * 100)

# 内存使用率
(node_memory_MemTotal_bytes - node_memory_MemFree_bytes - node_memory_Buffers_bytes - node_memory_Cached_bytes) / node_memory_MemTotal_bytes * 100

# 磁盘使用率
100 - (node_filesystem_free_bytes{mountpoint="/"} / node_filesystem_size_bytes{mountpoint="/"} * 100)
Pod 和容器监控
promql 复制代码
# Pod CPU使用量
sum(rate(container_cpu_usage_seconds_total{image!=""}[5m])) by (pod)

# Pod 内存使用量
sum(container_memory_working_set_bytes{image!=""}) by (pod)

# 容器重启次数
sum(kube_pod_container_status_restarts_total) by (container)
服务监控
promql 复制代码
# HTTP请求成功率
sum(rate(http_requests_total{status=~"2.."}[5m])) / sum(rate(http_requests_total[5m])) * 100

# 请求延迟百分位
histogram_quantile(0.95, sum(rate(http_request_duration_seconds_bucket[5m])) by (le))

实用技巧

标签过滤

使用 {} 筛选特定标签:

promql 复制代码
kube_pod_info{namespace="default"}  # 查询default命名空间的Pod信息
container_memory_usage_bytes{pod="nginx-xyz"}  # 查询特定Pod的内存使用
动态标签匹配

正则匹配标签值:

promql 复制代码
kube_pod_info{namespace=~"dev|test"}  # 匹配dev或test命名空间
kube_service_labels{label_env!="production"}  # 排除生产环境标签
预测与告警

基于趋势预测资源不足:

promql 复制代码
# 预测24小时内磁盘写满
predict_linear(node_filesystem_free_bytes{mountpoint="/"}[6h], 3600*24) < 0

注意事项

  1. 范围向量需搭配函数(如 rate())使用,否则返回空数据。
  2. 避免高频查询,长时间范围查询可能消耗大量资源。
  3. 使用 by 或 without 控制聚合维度,确保结果可读性。

通过以上 PromQL 查询,可以全面监控 Kubernetes 集群的节点、Pod、服务等核心组件的状态和性能。

相关推荐
无言听风雨丶2 小时前
Kubernetes Service Mesh 与 mTLS 实战:从网络可达走向零信任服务通信
网络·kubernetes·service_mesh
weirong4 小时前
跟原生 HPA 做对照压测:五轮里前四轮全废,最后一个结论也被我自己降级
kubernetes
无人生还别怕6 小时前
如何搭建docker仓库(轻量级)registry
linux·运维·docker·云原生·容器·registry·openanolisos
分布式存储与RustFS6 小时前
Hudi 表想摆脱 HDFS 绑定?用 Spark + Hudi 直接写进 RustFS
运维·云原生·开源·对象存储·分布式存储·s3·性能基准
逐流人7 小时前
DevOps 入门实战(一):从 CI/CD 概念到 Jenkins 自动构建部署
运维·云原生·云计算·jenkins·devops
阿里云云原生21 小时前
让复杂任务由团队完成:阿里云 AgentCore 多 Agent 协作架构及实践
云原生
YYYing.21 小时前
【K8s系列 (一) 】Docker与容器(上篇)
docker·云原生·容器·kubernetes
csdn_aspnet1 天前
使用 Docker 和 RedisInsight 设置 Redis 以进行本地开发
redis·docker·容器·redisinsight
阿里云云原生1 天前
阿里云可观测 2026 年 10 月产品动态
云原生
阿里云云原生1 天前
用 Nacos 3.3.0 ARD 让 Agent 按任务发现工具和 Skill
云原生