最近更新时间:2026-03-13 13:15:00
本文档以创建任务和子用户维度的监控看板为例,介绍星流通过 Grafana 看板对监控数据指标进行可视化展示的实践案例。
资源组已关联托管Prometheus
托管Prometheus已开通Grafana服务或将托管Prometheus的监控指标导入本地Grafana
在Grafana中点击Create -> Import,点击Upload JSON file
保存JSON看板至本地,上传刚才保存的JSON看板
看板整体分为用户和任务两个维度,分别展示了GPU利用率、GPU显存、CPU利用率、内存利用率,每项指标展示last、mean、max三项指标。可根据三项指标进行排序,也可在最上方对用户进行筛选,单独查看某用户/某几个用户的信息,帮助识别资源利用率低的任务和这些任务归属于哪些用户下,以便及时进行清理、提高资源利用的效率。看板效果如下:
表格
折线图
下面以CPU利用率-用户指标为例,说明每个面板的配置方法和PromQL详解
1.点击add panel | 3.输入PromQL语句 |
2.创建一个新的面板 |
CPU利用率-用户指标的PromQL如下:
avg by (label_kaic_com_kaic_creator) (
(sum by (namespace, pod) (
irate(container_cpu_usage_seconds_total{job="kubelet", metrics_path="/metrics/cadvisor", image!="", namespace="kaic-job"}[5m])
) * 100 / on(namespace, pod) group_left()
sum by (namespace, pod) (
kube_pod_container_resource_requests{job="kube-state-metrics", namespace="kaic-job", resource="cpu"}
))
* on(pod) group_left(label_kaic_com_kaic_creator)
kube_pod_labels{namespace="kaic-job"}
)计算实际CPU使用量 → A
获取CPU请求量 → B
计算使用率 → A*100/B
关联创建者标签 → 添加创建者信息
按创建者聚合 → 求每个创建者的平均值
输出正确结果
关联按用户筛选
sum by (namespace, pod) (
irate(
container_cpu_usage_seconds_total{
job="kubelet",
metrics_path="/metrics/cadvisor",
image!="",
namespace="kaic-job"
}[5m]
)
) * 100分析:
irate(container_cpu_usage_seconds_total...[5m]):计算过去5分钟内CPU使用时间的瞬时增长率
sum by (namespace, pod):按命名空间和Pod聚合所有容器的CPU使用量
*100:将结果转换为百分比形式
/ on(namespace, pod) group_left()
sum by (namespace, pod) (
kube_pod_container_resource_requests{
job="kube-state-metrics",
namespace="kaic-job",
resource="cpu"
}
)分析:
kube_pod_container_resource_requests:获取Pod的CPU请求资源量
sum by (namespace, pod):聚合每个Pod的总CPU请求
/ on(namespace, pod) group_left():按namespace和pod进行除法运算
* on(pod) group_left(label_kaic_com_kaic_creator)
kube_pod_labels{
namespace="kaic-job",
label_kaic_com_kaic_creator=~"$creator"
}分析:
*on(pod):通过pod名称进行关联(这里用乘法但实际是标签关联)
group_left(label_kaic_com_kaic_creator):将创建者标签添加到结果中
kube_pod_labels:获取Pod的标签信息
label_kaic_com_kaic_creator=~"$creator":过滤特定的创建者(使用变量)
avg by (label_kaic_com_kaic_creator) ( ... )分析:
avg by (label_kaic_com_kaic_creator):按创建者标签对结果求平均值
点击settings,找到Variables,点击New,新增一行变量。
此处的需求是整个页面的图表支持按照用户进行筛选,故添加creator变量,qurey为:
label_values(kube_pod_labels, label_kaic_com_kaic_creator)作用为:从kube_pod_labels指标中,提取所有不同的label_kaic_com_kaic_creator 标签值。
添加完变量后,需修改所有图表中的PromQL,将creator以参数形式添加。后续所有针对变量的操作都会与图表联动。
avg by (label_kaic_com_kaic_creator) (
(sum by (namespace, pod) (
irate(container_cpu_usage_seconds_total{job="kubelet", metrics_path="/metrics/cadvisor", image!="", namespace="kaic-job"}[5m])
) * 100 / on(namespace, pod) group_left()
sum by (namespace, pod) (
kube_pod_container_resource_requests{job="kube-state-metrics", namespace="kaic-job", resource="cpu"}
))
* on(pod) group_left(label_kaic_com_kaic_creator)
kube_pod_labels{namespace="kaic-job",label_kaic_com_kaic_creator=~"$creator"} # 增加 label_kaic_com_kaic_creator=~"$creator" ,针对creator进行筛选
)图表编辑界面,右上方可以根据规划的方案,选择合适的图表类型
折线图
表格
左下角Legend,双括号内添加需要的数据名称,可以在图表中作为图例展示
{{label_kaic_com_kaic_creator}}效果:
右侧Legend菜单,可以选择模式、位置、指标采集。以Table、Right、Mean+Last+Max为例:
Standard options菜单的Unit选项,可以选择数据的展示模式。修改为百分比格式,保留2位小数:
纯净模式
