系统指标#

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 标签。

Ray 系统指标#

Prometheus 指标

标签

描述

ray_tasks

NameStateIsRetry

当前任务(包括远程函数和 actor 调用)的数量,按状态分组。State 标签(例如 RUNNING、FINISHED、FAILED)描述了任务的状态。有关更多信息,请参见 rpc::TaskState。函数/方法名称可通过 Name 标签获取。如果任务因失败或重建而重试,IsRetry 标签将设置为“1”,否则为“0”。

ray_actors

NameState

当前 actor 的数量,按 rpc::ActorTableData::ActorState <https://github.com/ray-project/ray/blob/b3799a53dcabd8d1a4d20f22faa98e781b0059c7/src/ray/protobuf/gcs.proto#L79> 中描述的每个状态分组。ALIVE 有两个子状态:ALIVE_IDLE 和 ALIVE_RUNNING_TASKS。如果 actor 未运行任何任务,则认为其处于 ALIVE_IDLE 状态。

ray_resources

NameStateinstance

集群中每个节点的逻辑资源使用情况。每种资源都有一定的数量,处于 USED 或 AVAILABLE 状态。Name 标签定义了资源名称(例如 CPU、GPU)。

ray_object_store_memory

LocationObjectStateinstance

对象存储内存使用量(字节),按逻辑 Location(SPILLED、MMAP_DISK、MMAP_SHM 和 WORKER_HEAP)细分。定义如下:SPILLED – 已溢出到磁盘或远程存储解决方案(例如 AWS S3)的对象。默认是磁盘。MMAP_DISK – 存储在磁盘上内存映射页面中的对象。此模式非常慢,并且仅在严重内存压力下发生。MMAP_SHM – 存储在共享内存中内存映射页面中的对象。在没有内存压力的情况下,此模式是默认模式。WORKER_HEAP – 通常较小的对象,存储在 Ray Worker 进程自身的内存中。小对象存储在 worker 堆中。

ray_placement_groups

State

当前 Placement Group 的数量,按状态分组。State 标签(例如 PENDING、CREATED、REMOVED)描述了 Placement Group 的状态。有关更多信息,请参见 rpc::PlacementGroupTable

ray_memory_manager_worker_eviction_total

TypeName

Ray 内存不足(OOM)杀手(https://docs.rayai.org.cn/en/master/ray-core/scheduling/ray-oom-prevention.html)杀死任务和 actor 的数量,按类型(任务或 actor)和名称(任务和 actor 的名称)细分。

ray_node_cpu_utilization

instance

每个节点的 CPU 利用率,以百分比表示(0..100)。应乘以每个节点的 CPU 核心数来将单位转换为核心。

ray_node_cpu_count

instance

每个节点的 CPU 核心数。

ray_node_gpus_utilization

instanceGpuDeviceNameGpuIndex

每个 GPU 的 GPU 利用率,以百分比表示(0..NGPU*100)。GpuDeviceName 是 GPU 设备的名称(例如 NVIDIA A10G),GpuIndex 是 GPU 的索引。

ray_node_disk_usage

instance

每个节点使用的磁盘空间量,以字节为单位。

ray_node_disk_free

instance

每个节点可用的磁盘空间量,以字节为单位。

ray_node_disk_write_iops

instancenode_type

每个节点的每秒磁盘写入操作数。

ray_node_disk_io_write_speed

instance

每个节点的磁盘写入吞吐量,以字节/秒为单位。

ray_node_disk_read_iops

instancenode_type

每个节点的每秒磁盘读取操作数。

ray_node_disk_io_read_speed

instance

每个节点的磁盘读取吞吐量,以字节/秒为单位。

ray_node_mem_available

instancenode_type

每个节点可用的物理内存量,以字节为单位。

ray_node_mem_shared_bytes

instancenode_type

每个节点的共享内存量,以字节为单位。

ray_node_mem_used

instance

每个节点使用的物理内存量,以字节为单位。

ray_node_mem_total

instance

每个节点可用的物理内存量,以字节为单位。

ray_component_uss_mb

Componentinstance

以兆字节为单位的已测量唯一集合大小,按逻辑 Ray 组件细分。Ray 组件包括系统组件(例如 raylet、gcs、dashboard 或 agent)以及正在运行的任务/actor 的方法名称。

ray_component_cpu_percentage

Componentinstance

以百分比表示的已测量 CPU 使用率,按逻辑 Ray 组件细分。Ray 组件包括系统组件(例如 raylet、gcs、dashboard 或 agent)以及正在运行的任务/actor 的方法名称。

ray_node_gram_available

instancenode_typeGpuIndexGpuDeviceName

每个 GPU 可用的 GPU 内存量,以兆字节为单位。

ray_node_gram_used

instanceGpuDeviceNameGpuIndex

每个 GPU 使用的 GPU 内存量,以字节为单位。

ray_node_network_received

instancenode_type

每个节点接收的总网络流量,以字节为单位。

ray_node_network_sent

instancenode_type

每个节点发送的总网络流量,以字节为单位。

ray_node_network_receive_speed

instance

每个节点的网络接收吞吐量,以字节/秒为单位。

ray_node_network_send_speed

instance

每个节点的网络发送吞吐量,以字节/秒为单位。

ray_cluster_active_nodes

node_type

集群中健康节点的数量,按自动扩缩器节点类型细分。

ray_cluster_failed_nodes

node_type

自动扩缩器报告的失败节点数量,按节点类型细分。

ray_cluster_pending_nodes

node_type

自动扩缩器报告的待定节点数量,按节点类型细分。

指标语义和一致性#

Ray 保证其所有内部状态指标即使在发生故障的情况下也是*最终*一致的——任何 worker 故障后,Prometheus 时间序列输出最终都会反映正确的状态。但是,不能保证任何特定指标查询都反映集群状态的精确快照。

对于 ray_tasksray_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