全部文档
当前文档

暂无内容

如果没有找到您期望的内容,请尝试其他搜索词

文档中心

训推任务Grafana看板配置实践

最近更新时间:2026-03-13 13:15:00

背景

本文档以创建任务和子用户维度的监控看板为例,介绍星流通过 Grafana 看板对监控数据指标进行可视化展示的实践案例。

前提条件

  1. 资源组已关联托管Prometheus

  2. 托管Prometheus已开通Grafana服务或将托管Prometheus的监控指标导入本地Grafana

导入看板

  1. 在Grafana中点击Create -> Import,点击Upload JSON file

  2. 保存JSON看板至本地,上传刚才保存的JSON看板

效果展示

看板整体分为用户任务两个维度,分别展示了GPU利用率、GPU显存、CPU利用率、内存利用率,每项指标展示last、mean、max三项指标。可根据三项指标进行排序,也可在最上方对用户进行筛选,单独查看某用户/某几个用户的信息,帮助识别资源利用率低的任务和这些任务归属于哪些用户下,以便及时进行清理、提高资源利用的效率。看板效果如下:

表格

折线图

配置示例

下面以CPU利用率-用户指标为例,说明每个面板的配置方法和PromQL详解

创建面板

1.点击add panel

3.输入PromQL语句

2.创建一个新的面板

PromQL详解

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"}
)
步骤分解
  1. 计算实际CPU使用量 → A

  2. 获取CPU请求量 → B

  3. 计算使用率 → A*100/B

  4. 关联创建者标签 → 添加创建者信息

  5. 按创建者聚合 → 求每个创建者的平均值

  6. 输出正确结果

  7. 关联按用户筛选

代码段 1:计算 CPU 使用率
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:将结果转换为百分比形式

代码段 2:计算 CPU 请求量
/ 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进行除法运算

代码段 3:关联创建者标签
* 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":过滤特定的创建者(使用变量)

代码段 4:按创建者求平均值
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、数据展示配置

左下角Legend,双括号内添加需要的数据名称,可以在图表中作为图例展示

{{label_kaic_com_kaic_creator}}

效果:

右侧Legend菜单,可以选择模式、位置、指标采集。以Table、Right、Mean+Last+Max为例:

Standard options菜单的Unit选项,可以选择数据的展示模式。修改为百分比格式,保留2位小数:

文档导读
纯净模式常规模式

纯净模式

点击可全屏预览文档内容
文档反馈