Ray integration metrics

The official Datadog integration for monitoring Ray. It collects 146 metrics.

Official summary

Monitor the health and performance of Ray

Metric types

  • gauge (value at a point in time): 100
  • count (occurrences in the interval): 46

Metrics

Descriptions are the official definitions, unedited.

MetricTypeUnit
ray.actorsCurrent number of actors currently in a particular state.gauge-
ray.cluster.active_nodesActive nodes on the clustergaugenode
ray.cluster.failed_nodesFailed nodes on the clustergaugenode
ray.cluster.pending_nodesPending nodes on the clustergaugenode
ray.component.cpu_percentageTotal CPU usage of the components on a node.gaugepercent
ray.component.mem_sharedSHM usage of all components of the node. It is equivalent to the top command's SHR column.gaugebyte
ray.component.rssRSS usage of all components on the node.gaugemegabyte
ray.component.ussUSS usage of all components on the node.gaugemegabyte
ray.gcs.actorsNumber of actors per state {Created, Destroyed, Unresolved, Pending}gauge-
ray.gcs.placement_groupNumber of placement groups broken down by state in {Registered, Pending, Infeasible}gauge-
ray.gcs.storage_operation.countNumber of operations invoked on Gcs storagecount-
ray.gcs.storage_operation.latency.bucketTime to invoke an operation on Gcs storagecountmillisecond
ray.gcs.storage_operation.latency.countTime to invoke an operation on Gcs storagecount-
ray.gcs.storage_operation.latency.sumTime to invoke an operation on Gcs storagecountmillisecond
ray.gcs.task_manager.task_events.droppedNumber of task events dropped per type {PROFILE_EVENT, STATUS_EVENT}gaugeevent
ray.gcs.task_manager.task_events.reportedNumber of all task events reported to gcs.gaugeevent
ray.gcs.task_manager.task_events.storedNumber of task events stored in GCS.gaugeevent
ray.gcs.task_manager.task_events.stored_bytesNumber of bytes of all task events stored in GCS.gaugebyte
ray.grpc_server.req.finished.countFinished request number in grpc servercountrequest
ray.grpc_server.req.handling.countRequest number are handling in grpc servercountrequest
ray.grpc_server.req.new.countNew request number in grpc servercountrequest
ray.grpc_server.req.process_timeRequest latency in grpc servergaugemillisecond
ray.health_check.rpc_latency.bucketLatency of rpc request for health check.countmillisecond
ray.health_check.rpc_latency.countLatency of rpc request for health check.count-
ray.health_check.rpc_latency.sumLatency of rpc request for health check.countmillisecond
ray.internal_num.infeasible_scheduling_classesThe number of unique scheduling classes that are infeasible.gauge-
ray.internal_num.processes.skipped.job_mismatchThe total number of cached workers skipped due to job mismatch.gaugeprocess
ray.internal_num.processes.skipped.runtime_environment_mismatchThe total number of cached workers skipped due to runtime environment mismatch.gaugeprocess
ray.internal_num.processes.startedThe total number of worker processes the worker pool has created.gaugeprocess
ray.internal_num.processes.started.from_cacheThe total number of workers started from a cached worker process.gaugeprocess
ray.internal_num.spilled_tasksThe cumulative number of lease requests that this raylet has spilled to other raylets.gaugerequest
ray.memory_manager.worker_evictionThe number of tasks and actors killed by the Ray Out of Memory killer broken down by types (whether it is tasks or actors) and names (name of tasks and actors).count-
ray.node.cpuTotal CPUs available on a ray nodegauge-
ray.node.cpu_utilizationTotal CPU usage on a ray nodegauge-
ray.node.disk.freeTotal disk free (bytes) on a ray nodegaugebyte
ray.node.disk.io.readTotal read from diskgauge-
ray.node.disk.io.read.countTotal read ops from diskgaugeoperation
ray.node.disk.io.read.speedDisk read speedgauge-
ray.node.disk.io.writeTotal written to diskgauge-
ray.node.disk.io.write.countTotal write ops to diskgauge-
ray.node.disk.io.write.speedDisk write speedgauge-
ray.node.disk.read.iopsDisk read iopsgauge-
ray.node.disk.usageTotal disk usage (bytes) on a ray nodegaugebyte
ray.node.disk.utilizationTotal disk utilization (percentage) on a ray nodegaugepercent
ray.node.disk.write.iopsDisk write iopsgauge-
ray.node.gpus_utilizationThe GPU utilization per GPU as a percentage quantity (0..NGPU*100). GpuDeviceName is a name of a GPU device (e.g., Nvidia A10G) and GpuIndex is the index of the GPU.gaugepercent
ray.node.gram_usedThe amount of GPU memory used per GPU, in bytes.gaugebyte
ray.node.mem.availableMemory available on a ray nodegaugebyte
ray.node.mem.sharedTotal shared memory usage on a ray nodegaugebyte
ray.node.mem.totalTotal memory on a ray nodegaugebyte
ray.node.mem.usedMemory usage on a ray nodegaugebyte
ray.node.network.receive.speedNetwork receive speedgauge-
ray.node.network.receivedTotal network receivedgauge-
ray.node.network.send.speedNetwork send speedgauge-
ray.node.network.sentTotal network sentgauge-
ray.object_directory.added_locationsNumber of object locations added per second., If this is high, a lot of objects have been added on this node.gauge-
ray.object_directory.lookupsNumber of object location lookups per second. If this is high, the raylet is waiting on a lot of objects.gauge-
ray.object_directory.removed_locationsNumber of object locations removed per second. If this is high, a lot of objects have been removed from this node.gauge-
ray.object_directory.subscriptionsNumber of object location subscriptions. If this is high, the raylet is attempting to pull a lot of objects.gauge-
ray.object_directory.updatesNumber of object location updates per second., If this is high, the raylet is attempting to pull a lot of objects and/or the locations for objects are frequently changing (e.g. due to many object copies or evictions).gaugeupdate/second
ray.object_manager.bytesNumber of bytes pushed or received by type {PushedFromLocalPlasma, PushedFromLocalDisk, Received}.gaugebyte
ray.object_manager.num_pull_requestsNumber of active pull requests for objects.gauge-
ray.object_manager.received_chunksNumber object chunks received broken per type {Total, FailedTotal, FailedCancelled, FailedPlasmaFull}.gauge-
ray.object_store.available_memoryAmount of memory currently available in the object store.gaugebyte
ray.object_store.fallback_memoryAmount of memory in fallback allocations in the filesystem.gaugebyte
ray.object_store.memoryObject store memory by various sub-kinds on this nodegaugebyte
ray.object_store.num_local_objectsNumber of objects currently in the object store.gaugeobject
ray.object_store.size.bucketThe distribution of object size in bytescountbyte
ray.object_store.size.countThe distribution of object size in bytescount-
ray.object_store.size.sumThe distribution of object size in bytescountbyte
ray.object_store.used_memoryAmount of memory currently occupied in the object store.gaugebyte
ray.placement_groupsCurrent number of placement groups by state. The State label (e.g., PENDING, CREATED, REMOVED) describes the state of the placement group.gauge-
ray.process.cpu_seconds.countTotal user and system CPU time spent in seconds.countsecond
ray.process.max_fdsMaximum number of open file descriptors.gaugefile
ray.process.open_fdsNumber of open file descriptors.gaugefile
ray.process.resident_memoryResident memory size in bytes.gaugebyte
ray.process.start_timeStart time of the process since unix epoch in seconds.gaugesecond
ray.process.virtual_memoryVirtual memory size in bytes.gaugebyte
ray.pull_manager.active_bundlesNumber of active bundle requestsgaugerequest
ray.pull_manager.num_object_pinsNumber of object pin attempts by the pull manager, can be {Success, Failure}.gaugeattempt
ray.pull_manager.object_request_time.bucketTime between initial object pull request and local pinning of the object.countmillisecond
ray.pull_manager.object_request_time.countTime between initial object pull request and local pinning of the object.count-
ray.pull_manager.object_request_time.sumTime between initial object pull request and local pinning of the object.countmillisecond
ray.pull_manager.requested_bundlesNumber of requested bundles broken per type {Get, Wait, TaskArgs}.gauge-
ray.pull_manager.requestsNumber of pull requests broken per type {Queued, Active, Pinned}.gaugerequest
ray.pull_manager.retries_totalNumber of cumulative pull retries.gauge-
ray.pull_manager.usageThe total number of bytes usage broken per type {Available, BeingPulled, Pinned}gaugebyte
ray.push_manager.chunksNumber of object chunks transfer broken per type {InFlight, Remaining}.gauge-
ray.push_manager.in_flight_pushesNumber of in flight object push requests.gaugerequest
ray.python.gc.collections.countNumber of times this generation was collectedcount-
ray.python.gc.objects_collected.countObjects collected during gccountobject
ray.python.gc.objects_uncollectable.countUncollectable objects found during GCcountobject
ray.resourcesLogical Ray resources broken per state {AVAILABLE, USED}gaugeresource
ray.scheduler.failed_worker_startupNumber of tasks that fail to be scheduled because workers were not available. Labels are broken per reason {JobConfigMissing, RegistrationTimedOut, RateLimited}gaugetask
ray.scheduler.placement_time.bucketThe time it takes for a workload (task, actor, placement group) to be placed. This is the time from when the tasks dependencies are resolved to when it actually reserves resources on a node to run.countsecond
ray.scheduler.placement_time.countThe time it takes for a workload (task, actor, placement group) to be placed. This is the time from when the tasks dependencies are resolved to when it actually reserves resources on a node to run.count-
ray.scheduler.placement_time.sumThe time it takes for a workload (task, actor, placement group) to be placed. This is the time from when the tasks dependencies are resolved to when it actually reserves resources on a node to run.countsecond
ray.scheduler.tasksNumber of tasks waiting for scheduling broken per state {Cancelled, Executing, Waiting, Dispatched, Received}.gaugetask
ray.scheduler.unscheduleable_tasksNumber of pending tasks (not scheduleable tasks) broken per reason {Infeasible, WaitingForResources, WaitingForPlasmaMemory, WaitingForRemoteResources, WaitingForWorkers}.gaugetask
ray.serve.deployment.errorThe number of exceptions that have occurred in this replica.gaugeexception
ray.serve.deployment.processing_latency.bucketThe latency for queries to be processed.countmillisecond
ray.serve.deployment.processing_latency.countThe latency for queries to be processed.count-
ray.serve.deployment.processing_latency.sumThe latency for queries to be processed.countmillisecond
ray.serve.deployment.queued_queriesThe current number of queries to this deployment waiting to be assigned to a replica.gaugequery
ray.serve.deployment.replica.healthyTracks whether this deployment replica is healthy. 1 means healthy, 0 means unhealthy.gauge-
ray.serve.deployment.replica.startsThe number of times this replica has been restarted due to failure.gauge-
ray.serve.deployment.request.counterThe number of queries that have been processed in this replica.gaugequery
ray.serve.grpc_request_latency.bucketThe end-to-end latency of GRPC requests (measured from the Serve GRPC proxy).count-
ray.serve.grpc_request_latency.countThe end-to-end latency of GRPC requests (measured from the Serve GRPC proxy).count-
ray.serve.grpc_request_latency.sumThe end-to-end latency of GRPC requests (measured from the Serve GRPC proxy).count-
ray.serve.handle_requestThe number of handle.remote() calls that have been made on this handle.gaugerequest
ray.serve.http_request_latency.bucketThe end-to-end latency of HTTP requests (measured from the Serve HTTP proxy).countmillisecond
ray.serve.http_request_latency.countThe end-to-end latency of HTTP requests (measured from the Serve HTTP proxy).count-
ray.serve.http_request_latency.sumThe end-to-end latency of HTTP requests (measured from the Serve HTTP proxy).countmillisecond
ray.serve.multiplexed_get_model_requests.countThe counter for get model requests on the current replica.count-
ray.serve.multiplexed_model_load_latency.bucketThe time it takes to load a model.countmillisecond
ray.serve.multiplexed_model_load_latency.countThe time it takes to load a model.count-
ray.serve.multiplexed_model_load_latency.sumThe time it takes to load a model.countmillisecond
ray.serve.multiplexed_model_unload_latency.bucketThe time it takes to unload a model.countmillisecond
ray.serve.multiplexed_model_unload_latency.countThe time it takes to unload a model.count-
ray.serve.multiplexed_model_unload_latency.sumThe time it takes to unload a model.countmillisecond
ray.serve.multiplexed_models_load.countThe counter for loaded models on the current replica.count-
ray.serve.multiplexed_models_unload.countThe counter for unloaded models on the current replica.count-
ray.serve.num_deployment_grpc_error_requestsThe number of errored GRPC responses returned by each deployment.gauge-
ray.serve.num_deployment_http_error_requestsThe number of non-200 HTTP responses returned by each deployment.gaugeresponse
ray.serve.num_grpc_error_requestsThe number of errored GRPC responses.gauge-
ray.serve.num_grpc_requestsThe number of GRPC responses.gauge-
ray.serve.num_http_error_requestsThe number of non-200 HTTP responses.gaugeresponse
ray.serve.num_http_requestsThe number of HTTP requests processed.gaugerequest
ray.serve.num_multiplexed_modelsThe number of models loaded on the current replica.gauge-
ray.serve.num_router_requestsThe number of requests processed by the router.gaugerequest
ray.serve.registered_multiplexed_model_idThe model id registered on the current replica.gauge-
ray.serve.replica.pending_queriesThe current number of pending queries.gaugequery
ray.serve.replica.processing_queriesThe current number of queries being processed.gaugequery
ray.server.num_ongoing_grpc_requestsThe number of ongoing requests in this GRPC proxy.gauge-
ray.server.num_ongoing_http_requestsThe number of ongoing requests in this HTTP proxy.gauge-
ray.server.num_scheduling_tasksThe number of request scheduling tasks in the router.gauge-
ray.server.num_scheduling_tasks_in_backoffThe number of request scheduling tasks in the router that are undergoing backoff.gauge-
ray.spill_manager.objectsNumber of local objects broken per state {Pinned, PendingRestore, PendingSpill}.gaugeobject
ray.spill_manager.objects_sizeByte size of local objects broken per state {Pinned, PendingSpill}.gaugebyte
ray.spill_manager.request_totalNumber of {spill, restore} requests.gaugerequest
ray.tasksCurrent number of tasks currently in a particular state.gaugetask
ray.unintentional_worker_failures.countNumber of worker failures that are not intentional. For example, worker failures due to system related errors.counterror
ray.worker.register_time.bucketEnd to end latency of register a worker process.countmillisecond
ray.worker.register_time.countEnd to end latency of register a worker process.count-
ray.worker.register_time.sumEnd to end latency of register a worker process.countmillisecond

Official documentation

Official documentation for the Ray integration

Metric names and descriptions are the official Datadog integration definitions (Copyright Datadog, Inc., BSD-3-Clause), reproduced unedited. The full license terms are on the About page.