系统指标#
Ray 导出了许多系统指标,这些指标提供了对 Ray 工作负载状态以及硬件利用率统计信息的内省能力。下表描述了官方支持的指标。
注意
所有指标都具有一些通用标签,例如 SessionName(唯一标识 Ray 集群实例)、instance(Prometheus 应用的每个节点标签)以及 JobId(Ray 作业 ID,如适用)。
从 Ray 2.53+ 开始,由于 WorkerId 标签的基数较高,因此默认不再导出该标签。Ray 团队预计这不会是一个破坏性更改,因为 Ray 的任何内置组件都不依赖于此标签。但是,如果您有依赖 WorkerId 标签的自定义工具,请注意此更改。
您可以使用环境变量 RAY_metric_cardinality_level 来恢复或调整标签行为。
legacy:保留所有标签。(这是 Ray 2.53 之前的默认行为。)recommended:删除高基数标签。Ray 内部确定特定标签;目前这仅包括WorkerId。(这是 Ray 2.53 之后的默认行为。)low:与recommended相同,但也会删除任务和 actor 的 Name 标签。
Prometheus 指标 |
标签 |
描述 |
|---|---|---|
|
|
当前任务(包括远程函数和 actor 调用)的数量,按状态分组。State 标签(例如 RUNNING、FINISHED、FAILED)描述了任务的状态。有关更多信息,请参见 rpc::TaskState。函数/方法名称可通过 Name 标签获取。如果任务因失败或重建而重试,IsRetry 标签将设置为“1”,否则为“0”。 |
|
|
当前 actor 的数量,按 |
|
|
集群中每个节点的逻辑资源使用情况。每种资源都有一定的数量,处于 USED 或 AVAILABLE 状态。Name 标签定义了资源名称(例如 CPU、GPU)。 |
|
|
对象存储内存使用量(字节),按逻辑 Location(SPILLED、MMAP_DISK、MMAP_SHM 和 WORKER_HEAP)细分。定义如下:SPILLED – 已溢出到磁盘或远程存储解决方案(例如 AWS S3)的对象。默认是磁盘。MMAP_DISK – 存储在磁盘上内存映射页面中的对象。此模式非常慢,并且仅在严重内存压力下发生。MMAP_SHM – 存储在共享内存中内存映射页面中的对象。在没有内存压力的情况下,此模式是默认模式。WORKER_HEAP – 通常较小的对象,存储在 Ray Worker 进程自身的内存中。小对象存储在 worker 堆中。 |
|
|
当前 Placement Group 的数量,按状态分组。State 标签(例如 PENDING、CREATED、REMOVED)描述了 Placement Group 的状态。有关更多信息,请参见 rpc::PlacementGroupTable。 |
|
|
Ray 内存不足(OOM)杀手(https://docs.rayai.org.cn/en/master/ray-core/scheduling/ray-oom-prevention.html)杀死任务和 actor 的数量,按类型(任务或 actor)和名称(任务和 actor 的名称)细分。 |
|
|
每个节点的 CPU 利用率,以百分比表示(0..100)。应乘以每个节点的 CPU 核心数来将单位转换为核心。 |
|
|
每个节点的 CPU 核心数。 |
|
|
每个 GPU 的 GPU 利用率,以百分比表示(0..NGPU*100)。 |
|
|
每个节点使用的磁盘空间量,以字节为单位。 |
|
|
每个节点可用的磁盘空间量,以字节为单位。 |
|
|
每个节点的每秒磁盘写入操作数。 |
|
|
每个节点的磁盘写入吞吐量,以字节/秒为单位。 |
|
|
每个节点的每秒磁盘读取操作数。 |
|
|
每个节点的磁盘读取吞吐量,以字节/秒为单位。 |
|
|
每个节点可用的物理内存量,以字节为单位。 |
|
|
每个节点的共享内存量,以字节为单位。 |
|
|
每个节点使用的物理内存量,以字节为单位。 |
|
|
每个节点可用的物理内存量,以字节为单位。 |
|
|
以兆字节为单位的已测量唯一集合大小,按逻辑 Ray 组件细分。Ray 组件包括系统组件(例如 raylet、gcs、dashboard 或 agent)以及正在运行的任务/actor 的方法名称。 |
|
|
以百分比表示的已测量 CPU 使用率,按逻辑 Ray 组件细分。Ray 组件包括系统组件(例如 raylet、gcs、dashboard 或 agent)以及正在运行的任务/actor 的方法名称。 |
|
|
每个 GPU 可用的 GPU 内存量,以兆字节为单位。 |
|
|
每个 GPU 使用的 GPU 内存量,以字节为单位。 |
|
|
每个节点接收的总网络流量,以字节为单位。 |
|
|
每个节点发送的总网络流量,以字节为单位。 |
|
|
每个节点的网络接收吞吐量,以字节/秒为单位。 |
|
|
每个节点的网络发送吞吐量,以字节/秒为单位。 |
|
|
集群中健康节点的数量,按自动扩缩器节点类型细分。 |
|
|
自动扩缩器报告的失败节点数量,按节点类型细分。 |
|
|
自动扩缩器报告的待定节点数量,按节点类型细分。 |
指标语义和一致性#
Ray 保证其所有内部状态指标即使在发生故障的情况下也是*最终*一致的——任何 worker 故障后,Prometheus 时间序列输出最终都会反映正确的状态。但是,不能保证任何特定指标查询都反映集群状态的精确快照。
对于 ray_tasks 和 ray_actors 指标,您应该使用 sum 查询来绘制其输出(例如 sum(ray_tasks) by (Name, State))。这是因为 Ray 的任务指标是从多个分布式组件发出的。因此,存在多个指标点(包括负指标点),这些指标点从不同的进程发出,必须进行求和才能生成分布式系统的正确逻辑视图。例如,对于一个已提交并执行的单个任务,Ray 可能会发出 (submitter) SUBMITTED_TO_WORKER: 1, (executor) SUBMITTED_TO_WORKER: -1, (executor) RUNNING: 1,求和后可以简化为 SUBMITTED_TO_WORKER: 0, RUNNING: 1。