Prometheus 监控

Prometheus 是一个广泛流行的工具,用于监控和警报各种系统。如果安装了 prometheus_client 包,分布式集群会提供一些 Prometheus 指标。这些指标以 Prometheus 的文本格式在调度器和工作节点的 /metrics 端点上暴露出来。

可用指标

除了 prometheus_client 默认暴露的指标外,调度器和工作节点还暴露了一些 Dask 特定的指标。

调度器指标

调度器暴露了以下关于自身的指标:

dask_scheduler_clients

连接的客户端数量

dask_scheduler_client_connections_added_total

添加到调度器的客户端连接总数

注意

此指标计算独立客户端。如果一个客户端断开连接后又重新连接,它将被计数两次。

dask_scheduler_client_connections_removed_total

从调度器移除的客户端连接总数

注意

此指标计算独立客户端。如果一个客户端断开连接,然后重新连接并再次断开,它将被计数两次。

dask_scheduler_desired_workers

调度器任务图所需的工作节点数量

dask_scheduler_gil_contention_seconds_total

表示潜在 GIL 竞争累积总数的值,形式为任意线程持有 GIL 锁定的累积秒数。同时,其他线程可能正在或可能未实际尝试获取 GIL。

注意

需要安装 gilknocker,并且设置 distributed.admin.system-monitor.gil.enabled 配置项。

dask_scheduler_gc_collection_seconds_total

垃圾回收总耗时

注意

由于测量开销,此指标仅测量 generation=2 的垃圾回收耗时

dask_scheduler_workers

调度器已知的工作节点数量

dask_scheduler_workers_added_total

添加到调度器的工作节点总数

dask_scheduler_workers_removed_total

从调度器移除的工作节点总数

dask_scheduler_last_time_total

SystemMonitor 累计耗时

dask_scheduler_tasks

调度器已知的任务数量

dask_scheduler_tasks_suspicious_total

任务被标记为可疑的总次数

dask_scheduler_tasks_forgotten_total

已处理且不再驻留内存并已从调度器作业队列中移除的任务总数。

注意

调度器上所有任务处于 forgotten 状态的任务组不包括在内。

dask_scheduler_tasks_compute_seconds_total

计算任务总耗时(按前缀)

dask_scheduler_tasks_transfer_seconds_total

传输总耗时(按前缀)

dask_scheduler_tasks_output_bytes

当前驻留内存任务的大小,按任务前缀划分,不包含重复项。请注意,当任务输出在工作节点之间传输时,通常会产生重复项,因此此测量值会低于实际的集群范围的托管内存。另请参阅计算重复项的 dask_worker_memory_bytes

dask_scheduler_task_groups

调度器已知的任务组数量

dask_scheduler_prefix_state_totals_total

每个状态下任务前缀的累计计数

dask_scheduler_tick_count_total

服务器启动以来观测到的 tick 总数

dask_scheduler_tick_duration_maximum_seconds

自 Prometheus 最后一次采集指标以来观测到的最大 tick 持续时间。如果此值显著高于 distributed.admin.tick.interval 中配置的值(默认为 20ms),则表明事件循环被阻塞,这反过来会阻碍及时任务执行和网络通信。

信号量指标

调度器上提供了以下关于 Semaphore 对象的指标:

dask_semaphore_max_leases

每个信号量允许的最大租约数。

注意

每个信号量在其生命周期内此值将是恒定的。

dask_semaphore_active_leases

每个信号量当前活动的租约数量

dask_semaphore_pending_leases

每个信号量当前待处理的租约数量

dask_semaphore_acquire_total

每个信号量获取的租约总数

dask_semaphore_release_total

每个信号量释放的租约总数

注意

如果在仍有活跃租约时关闭信号量,此计数在执行后将不等于 dask_semaphore_acquire_total

dask_semaphore_average_pending_lease_time_s

每个信号量获取租约耗时的指数移动平均值

注意

这仅包含调度器端的耗时,不包含通信耗时。

注意

此平均值基于租约顺序计算,而非租约获取时间。

工作窃取指标

如果启用 工作窃取,调度器会暴露这些指标:

dask_stealing_request_count_total

窃取请求总数

dask_stealing_request_cost_total

窃取请求总成本

工作节点指标

工作节点暴露了以下关于自身的指标:

dask_worker_tasks

工作节点上的任务数量

dask_worker_threads

工作节点线程数

dask_worker_gil_contention_seconds_total

表示潜在 GIL 竞争累积总数的值,形式为任意线程持有 GIL 锁定的累积秒数。同时,其他线程可能正在或可能未实际尝试获取 GIL。

注意

需要安装 gilknocker,并且设置 distributed.admin.system-monitor.gil.enabled 配置项。

dask_worker_gc_collection_seconds_total

垃圾回收总耗时

注意

由于测量开销,此指标仅测量 generation=2 的垃圾回收耗时

dask_worker_latency_seconds

工作节点连接延迟

dask_worker_memory_bytes

内存使用细分

dask_worker_transfer_incoming_bytes

从其他工作节点传入的开放数据传输总大小

dask_worker_transfer_incoming_count

从其他工作节点传入的开放数据传输数量

dask_worker_transfer_incoming_count_total

工作节点启动以来从其他工作节点传入的数据传输总数

dask_worker_transfer_outgoing_bytes

传出到其他工作节点的开放数据传输大小

dask_worker_transfer_outgoing_bytes_total

工作节点启动以来传出到其他工作节点的开放数据传输总大小

dask_worker_transfer_outgoing_count

传出到其他工作节点的开放数据传输数量

dask_worker_transfer_outgoing_count_total

工作节点启动以来传出到其他工作节点的数据传输总数

dask_worker_concurrent_fetch_requests

已弃用: 此指标已更名为 dask_worker_transfer_incoming_count

dask_worker_tick_count_total

服务器启动以来观测到的 tick 总数

dask_worker_tick_duration_maximum_seconds

自 Prometheus 最后一次采集指标以来观测到的最大 tick 持续时间。如果此值显著高于 distributed.admin.tick.interval 中配置的值(默认为 20ms),则表明事件循环被阻塞,这反过来会阻碍及时任务执行和网络通信。

dask_worker_spill_bytes_total

工作节点启动以来溢出/非溢出数据的总大小;换句话说,这是归因于溢出活动的累计磁盘 I/O。这包含一个 memory_read 指标,可以用来计算缓存命中率。

cache hit ratio = memory_read / (memory_read + disk_read)
dask_worker_spill_count_total

工作节点启动以来溢出/非溢出键的总数;换句话说,这是归因于溢出活动的累计磁盘访问次数。这包含一个 memory_read 指标,可以用来计算缓存命中率。

cache hit ratio = memory_read / (memory_read + disk_read)
dask_worker_spill_time_seconds_total

工作节点启动以来溢出/非溢出的总耗时,按活动细分:(反)序列化,(解)压缩,(非)溢出。

如果安装了 crick 包,工作节点还会暴露以下指标:

dask_worker_tick_duration_median_seconds

工作节点上的中位 tick 持续时间

dask_worker_task_duration_median_seconds

工作节点上的中位任务运行时长

dask_worker_transfer_bandwidth_median_bytes

工作节点上的传输带宽