Prometheus 监控
目录
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
工作节点上的传输带宽