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. 使用 bywithout 控制聚合维度,确保结果可读性。

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

相关推荐
奔波霸的伶俐虫14 分钟前
windows docker desktop 安装修改镜像学习
学习·docker·容器
原神启动117 分钟前
K8S(六)—— 企业级,Rancher安装配置与核心功能实操
容器·kubernetes·rancher
阿杰 AJie18 分钟前
安装 docker.io(不走外网 Docker 域名)
docker·容器·eureka
.hopeful.28 分钟前
Docker——镜像仓库和镜像
运维·docker·容器
m0_4856146733 分钟前
K8S项目生命周期管理
云原生·容器·kubernetes
CodeCaptain37 分钟前
Dify结合vllm-openai docker镜像出现docker: invalid reference format问题的解决方案
运维·docker·容器
LucidX44 分钟前
Kubernetes Pod 详解与Rancher 部署
容器·kubernetes·rancher
星环处相逢1 小时前
从 Pod 核心原理到 Rancher 实战:K8s 容器管理全解析
容器·kubernetes·rancher
伞啊伞1 小时前
k8s(四) Rancher 管理集群
容器·kubernetes·rancher
忍冬行者1 小时前
k8s的etcd的一键备份和故障恢复
docker·云原生·容器·kubernetes·云计算