Volcano调度指标采集及Grafana仪表盘搭建
应用场景
Volcano插件中提供了各种监控指标采集,能够全面监控volcano调度工作负载情况,具体请参见Volcano默认监控指标说明。您可以基于Volcano监控指标构建不同维度的监控看板,以便及时了解集群相关信息。
当前云原生监控插件暂不支持自动采集这些指标。若需在Grafana仪表盘中查看,需手动配置云原生监控插件采集相关数据,并构建相应的仪表盘。本文将介绍如何进行Volcano监控指标的采集以及相关仪表盘的搭建。
前提条件
- 集群中已安装Volcano插件,具体安装步骤请参见Volcano调度器。
- 集群中已安装云原生监控插件和Grafana插件,并且Grafana插件已启用“公网访问”,具体安装步骤请参见云原生监控插件和安装Grafana。
- 如果您需使用AOM数据源,请在云原生监控插件中启用“监控数据上报至AOM服务”,并在Grafana插件中启用“数据源对接AOM”,同时确保两者选择的AOM实例一致。
- 如果您需使用Prometheus数据源,请在云原生监控插件中开启“本地存储模式”。
步骤一:采集Volcano监控指标
当前云原生监控插件暂不支持自动采集Volcano监控指标。如果您需要通过监控中心查看Volcano监控指标,需要手动配置云原生监控插件以采集相关指标。
- 登录CCE控制台,单击集群名称进入集群。
- 在左侧导航栏中,单击“集群 > 配置中心”。在右侧页面中,切换至“监控运维配置”页签。在“监控配置 > 采集配置 > 系统预置采集 > PodMonitor”中,单击“管理”,并在出现的对话框中搜索“volcano-scheduler”,并启用此采集开关。
图1 启用采集开关
- 开启后,请在当前页面的“监控配置 > 指标配置”中单击“立即刷新”获取数据。刷新后,在“监控配置 > 采集配置 > 系统预置采集 > Targets”中,单击“查看详情”,能找到volcano-scheduler的采集记录为正常状态即可。
图2 查看采集记录
步骤二:配置Grafana数据源
Grafana支持配置AOM数据源或Prometheus数据源:
- 使用AOM数据源:Grafana将自动生成“prometheus-aom”数据源,需确保其与Grafana的连通性正常。
- 使用Prometheus数据源:可直接使用Grafana自带的“prometheus”数据源,此时也需确保该数据源与Grafana的连通性正常。
如果需要AOM数据源,请确保当前集群中的云原生监控插件已开启“监控数据上报至AOM服务”,Grafana插件已启用“数据源对接AOM”,并且两个插件对接同一个AOM实例。Grafana插件开启“数据源对接AOM”后,Grafana可视化界面将自动生成“prometheus-aom”数据源。请确保该数据源的连通性,连通测试通过即可正常使用AOM数据源。
- 在集群左侧导航栏中,单击“集群 > 插件”。在右侧插件列表中,在Grafana插件模块单击“访问”,进入Grafana可视化界面。
- 首次访问Grafana可视化界面,需要输入用户名和密码,默认用户名与密码均为admin。输入用户名和密码后,您需要根据界面提示重置密码。
- 在Grafana可视化界面左上角单击
,单击“Connections”左侧的
,单击“Data sources”,进入Data sources界面。 - 在数据源列表中,单击“prometheus-aom”。在“prometheus-aom”数据源页面底部单击“Save&test”,测试数据源是否连通。若提示“Successfully queried the Prometheus API”,则说明连通测试通过。
图3 连通测试通过
使用Prometheus数据源时,需确保已开启云原生监控插件的“本地存储模式”。Grafana自带的“prometheus”数据源可以直接对接本地存储模式的Prometheus数据源,请确保数据源的连通性,连通性测试通过后即可正常使用。
- 在集群左侧导航栏中,单击“集群 > 插件”。在右侧插件列表中,查找Grafana插件并在该插件模块中单击“访问”,进入Grafana可视化界面。
- 首次访问Grafana可视化界面,需要输入用户名和密码,默认用户名与密码均为admin。输入用户名和密码后,您需要根据界面提示重置密码。
- 在Grafana可视化界面左上角单击
,单击“Connections”左侧的
,单击“Data sources”,进入Data sources界面。 - 在数据源列表中,单击“prometheus”。在“prometheus”数据源页面底部单击“Save&test”,测试数据源是否连通。若提示“Successfully queried the Prometheus API”,则说明连通测试通过。
图4 连通测试通过
步骤三:配置Grafana Dashboard
Grafana Dashboard是一个用于集中监控和可视化数据的仪表盘工具,支持多种数据源,您可以通过图表、图形和告警功能实时掌握系统状态和业务指标。基于Volcano监控指标,Grafana可以搭建调度性能相关监控仪表盘。
Volcano根据一些常用场景提供了Grafana Dashboard配置JSON文件,您可以直接复制后导入,本文以“volcano-scheduler-internal-dashboard”为例向您介绍如何配置Grafana Dashboard,如需要其他JSON配置请参见https://github.com/volcano-sh/volcano/blob/8aba772412bed8bdd9c20b599f97ff7835e8f422/installer/volcano-monitoring.yaml#L499-L508。
- 导入Volcano的Grafana Dashboard,用于展示Volcano监控指标。
- 在Grafana可视化界面单击
,打开左侧菜单栏。单击“Dashboards”。在“Dashboards”页面右上角,单击“New”,下拉菜单中单击“Import”。
图5 创建New dashboard
- 将volcano-scheduler-internal-dashboard的JSON内容复制到dashboard框中,单击“Load”,然后再单击“Import”进行导入。
图6 复制JSON
- 在Grafana可视化界面单击
- 完成后跳转到Volcano监控面板页面,根据步骤二:配置Grafana数据源中配置的Grafana数据源选择对应的Prometheus或AOM数据源。
图7 选择数据源
观察到面板数据如下:
图8 观察面板
- 编辑具体的面板,调整普罗语句查询,这里以“E2E Job Scheduling Duration By JobName”示例,进入Edit Panel页面。
图9 编辑面板
可以查看到当前面板的PromQL,此语句可根据情况调整:
图10 查看PromQL语句
如修改为根据队列名称计算:avg by (queue) (volcano_e2e_job_scheduling_duration),然后单击“Run queries”。
图11 修改PromQL语句
若需要保存修改则单击面板右上角的“Save”和“Apply”。
图12 保存修改
- 在当前面板内新增可视化面板。
- 右侧单击“Add”,并在下拉菜单中单击“Visualization”,创建一个新面板。
图13 新增面板
- 在“Edit panel”页面左下方“Query”页签中,“Data source”选择步骤二:配置Grafana数据源中配置的数据源。单击“A”左侧
,在展开内容的右侧单击“Code”,并在“Metrics browser”中输入对应的PromQL语句,用于收集数据。
图14 编辑面板参数
- 在“Edit panel”页面右上方切换面板类型至“Table”,并在“Panel options > Title”中设置面板标题,本示例标题设置为“Task Latency P95”,您可以根据需求自定义。
图15 设置面板标题
- 在右上角单击“Save”,在弹出的“Save dashboard”页面中再次单击“Save”,保存面板配置。在右上角单击“Apply”,返回Dashboard页面,此时新面板已创建。
图16 保存面板
- 右侧单击“Add”,并在下拉菜单中单击“Visualization”,创建一个新面板。
Volcano默认监控指标说明
|
指标名 |
类型 |
说明 |
|---|---|---|
volcano_e2e_scheduling_latency_milliseconds |
Histogram |
端到端调度器总调度耗时(包含调度算法 + 绑定 Pod)单位 ms |
volcano_e2e_job_scheduling_latency_milliseconds |
Histogram |
每个 Job 的调度延迟,单位 ms |
volcano_e2e_job_scheduling_duration |
GaugeVec |
某 Job 的调度总耗时(单位:ms),含 job_name, queue, namespace 标签 |
volcano_e2e_job_scheduling_start_time |
GaugeVec |
Job 开始调度的时间(Unix 时间戳) |
volcano_e2e_job_scheduling_last_time |
GaugeVec |
Job 最后一次调度尝试的时间 |
volcano_plugin_scheduling_latency_milliseconds |
HistogramVec |
各个 Plugin 的调度耗时,标签:plugin, OnSession(阶段) |
volcano_action_scheduling_latency_milliseconds |
HistogramVec |
各个调度阶段 Action 的耗时,标签:action |
volcano_task_scheduling_latency_milliseconds |
Histogram |
单个 Task 的调度耗时(ms) |
volcano_pod_preemption_victims |
Gauge |
被抢占的 Pod 数量(调度器为了优先级抢占资源) |
volcano_total_preemption_attempts |
Counter |
累计的抢占尝试次数 |
volcano_unschedule_task_count |
GaugeVec |
当前无法调度的 task 数量(标签:job_id) |
volcano_unschedule_job_count |
Gauge |
当前无法调度的 job 总数 |
Volcano指标相关PromQL语句
性能相关指标
- 调度整体时延(E2E):
监控面板名称
PromQL 语句
指标说明
Scheduler E2E Scheduling Latency P95
histogram_quantile(0.95, sum(rate(volcano_e2e_scheduling_latency_milliseconds_bucket[5m])) by (le))
Volcano Scheduler从Job进入调度到完成一次完整调度决策的端到端调度耗时P95,反映整体调度性能是否出现长尾
Scheduler E2E Scheduling Latency Heatmap
sum(rate(volcano_e2e_scheduling_latency_milliseconds_bucket[5m])) by (le)
E2E调度延迟的直方图分布,用于观察延迟分布是否出现抖动或长尾扩散
- Job 级调度时延:
监控面板名称
PromQL 语句
指标说明
E2E Job Scheduling Duration By JobName (Latest)
avg by (job_name) (volcano_e2e_job_scheduling_duration)
按Job维度统计的平均调度耗时,用于定位具体慢Job,也可修改为其他维度如queue、job_namespace
E2E Job Scheduling Latency Heatmap (Latest)
sum(rate(volcano_e2e_job_scheduling_latency_milliseconds_bucket[5m])) by (le)
Job级调度延迟分布热力图,用于观察Job调度是否存在整体延迟上升
- 抢占(Preemption)相关指标:
监控面板名称
PromQL 语句
指标说明
Preemption Attempts Rate
rate(volcano_total_preemption_attempts[5m])
单位时间内Volcano触发的抢占尝试次数,数值升高通常意味着资源紧张或队列竞争激烈
Current Preemption Victims
volcano_pod_preemption_victims
当前被标记为抢占者(Victim) 的Pod数量,反映抢占影响面
- Plugin 级调度耗时:
监控面板名称
PromQL 语句
指标说明
Plugin Scheduling Latency P95 By Plugin / OnSession
histogram_quantile(0.95, sum(rate(volcano_plugin_scheduling_latency_milliseconds_bucket[5m])) by (le, plugin, OnSession))
按Plugin + OnSession维度统计的调度插件执行耗时P95,用于定位慢插件或Session阶段异常
- Action 级调度耗时:
监控面板名称
PromQL 语句
指标说明
Action Scheduling Latency P95 By Action
histogram_quantile(0.95, sum(rate(volcano_action_scheduling_latency_milliseconds_bucket[5m])) by (le, action))
各个调度Action(allocate/preempt/reclaim等) 的执行耗时P95,是定位调度慢因的核心指标
- 集群中作业调度情况:
监控面板名称
PromQL 语句
指标说明
-
volcano_unschedule_job_count
集群内未调度成功的vcjob数量
-
volcano_unschedule_task_count
集群内未调度的Pod数量
队列相关指标(开启capacity插件后才可采集到)
- Queue CPU:Request / Allocated / Deserved
监控面板名称
PromQL 语句
指标说明
Queue CPU Request
volcano_queue_request_milli_cpu
Queue中所有Pod申请的CPU总量(毫核)
Queue CPU Allocated
volcano_queue_allocated_milli_cpu
Queue当前已经分配并使用的CPU资源量
Queue CPU Deserved
volcano_queue_deserved_milli_cpu
Queue配置的CPU应得量
- Queue Memory:Request / Allocated / Deserved
监控面板名称
PromQL 语句
指标说明
Queue Memory Request
volcano_queue_request_memory_bytes
Queue中所有Pod申请的内存总量
Queue Memory Allocated
volcano_queue_allocated_memory_bytes
Queue已分配并使用的内存
Queue Memory Deserved
volcano_queue_deserved_memory_bytes
Queue配置的内存应得量
- Queue Scalar(扩展资源,以GPU为例):Request / Allocated / Deserved
监控面板名称
PromQL 语句
指标说明
Scalar Request
volcano_queue_request_scalar_resources{resource="nvidia.com/gpu"}Queue中所有Pod申请的GPU数
Scalar Allocated
volcano_queue_allocated_scalar_resources{resource="nvidia.com/gpu"}Queue已分配使用的GPU数量
Scalar Deserved
volcano_queue_deserved_scalar_resources{resource="nvidia.com/gpu"}Queue配置的GPU应得量
- Queue Capacity vs Real Capacity(CPU)
监控面板名称
PromQL 语句
指标说明
CPU Capacity
volcano_queue_capacity_milli_cpu
Queue理论上配置的CPU上限
CPU Real Capacity
volcano_queue_real_capacity_milli_cpu
实际可用的CPU上限
- Queue Capacity vs Real Capacity(Memory)
监控面板名称
PromQL 语句
指标说明
Memory Capacity
volcano_queue_capacity_memory_bytes
Queue理论上配置的内存上限
Memory Real Capacity
volcano_queue_real_capacity_memory_bytes
实际可用内存上限
- Queue Capacity vs Real Capacity(Scalar , 以GPU为例)
监控面板名称
PromQL 语句
指标说明
Scalar Capacity
volcano_queue_capacity_scalar_resources{resource="nvidia.com/gpu"}Queue理论上配置的GPU上限
Scalar Real Capacity
volcano_queue_real_capacity_scalar_resources{resource="nvidia.com/gpu"}实际可用GPU上限
- Queue Share
监控面板名称
PromQL 语句
指标说明
Queue Share
volcano_queue_share
Queue的实际使用率(allocated/deserved),未配置deserved的队列share值始终为1