.. _observability-getting-started: Ray 仪表盘 ============= Ray 提供了一个基于 Web 的仪表板,用于监视和调试 Ray 应用程序。系统状态的可视化表示允许用户跟踪应用程序的性能并解决问题。 .. raw:: html
设置仪表板 ------------------ 要访问仪表板,请使用 `ray[default]` 或包含 Ray 仪表板组件的 :ref:`其他安装命令 ` 。例如: .. code-block:: bash pip install -U "ray[default]" 当您在笔记本电脑上启动单节点 Ray 集群时,可以使用 Ray 初始化时打印的 URL(默认 URL 为 **http://localhost:8265**5)或使用 `ray.init` 返回的上下文对象来访问仪表板。 .. testcode:: :hide: import ray ray.shutdown() .. testcode:: import ray context = ray.init() print(context.dashboard_url) .. This test output is flaky. If Ray isn't completely shutdown, the port can be "8266" instead of "8265". .. testoutput:: :options: +MOCK 127.0.0.1:8265 .. code-block:: text INFO worker.py:1487 -- Connected to Ray cluster. View the dashboard at 127.0.0.1:8265. .. note:: 如果在 docker 容器中启动 Ray, ``--dashboard-host`` 是必需参数。例如, ``ray start --head --dashboard-host=0.0.0.0``。 当使用 :ref:`虚拟机集群启动器 `, :ref:`KubeRay 控制器 `,或手动配置启动远程 Ray 集群, Ray 仪表盘在头节点上启动,但仪表板端口可能不会公开暴露。查看 :ref:`配置仪表盘 ` 了解如何从头节点外部查看仪表板。 .. note:: 使用 Ray Dashboard 时,强烈建议同时设置 Prometheus 和 Grafana。 它们对于 :ref:`Metrics View `等关键功能是必需的。 请参阅 :ref:`配置和管理仪表板 ` ,了解如何将 Prometheus 和 Grafana 与 Ray Dashboard 集成。 浏览视图 ------------------ 仪表板有多个称为视图的选项卡。根据您的目标,您可以使用一种或多种视图的组合: - 分析、监控或可视化逻辑或物理组件的状态和资源利用率指标: :ref:`指标视图 `、 :ref:`集群视图 ` - 监控作业和任务的进度和状态:: :ref:`作业视图 ` - 查找失败任务和 actor 的日志和错误消息: :ref:`作业视图 `, :ref:`日志视图 ` - 分析任务和 actor 的CPU和内存使用情况: :ref:`指标视图 `, :ref:`集群视图 ` - 监视服务应用程序: :ref:`服务视图 ` .. _dash-jobs-view: 作业视图 --------- .. raw:: html
作业视图可让您监控 Ray Cluster 上运行的不同作业。 :ref:`Ray Job ` 是使用 Ray API(例如 `ray.init`)的 Ray 工作负载。建议通过 :ref:`Ray Job API `将作业提交到集群。您还可以交互地运行 Ray 作业(例如,通过在头节点内执行 Python 脚本)。 作业视图显示活动、已完成和失败作业的列表,单击 ID 允许用户查看有关该作业的详细信息。 有关 Ray 作业的更多信息,请参阅 :ref:`Ray 作业概述部分 `。 Job 概况 ~~~~~~~~~~~~~ 您可以通过单击“堆栈跟踪”或“CPU 火焰图”操作来分析 Ray 作业。有关更多详细信息,请参阅:ref:`Profiling `。 .. _dash-workflow-job-progress: 任务和 actor 细分 ~~~~~~~~~~~~~~~~~~~~~~~~ .. image:: https://raw.githubusercontent.com/ray-project/Images/master/docs/new-dashboard-v2/dashboard-pics/advanced-progress.png :align: center 作业视图按状态细分任务和 actor。 默认情况下,任务和 actor 是分组和嵌套的。您可以通过单击展开按钮来查看嵌套条目。 任务和 actor 使用以下标准进行分组和嵌套: - A所有task 和 actor都分组在一起。通过展开相应的行来查看各个条目。 - T任务按其 ``name`` 属性分组(例如, ``task.options(name="").remote()``)。 - 子任务(嵌套任务)嵌套在其父任务行下。 - Actors 按他们的类名分组。 - 子 Actors(在 Actor 内创建的 Actor)嵌套在其父 Actor 的行下。 - Actor 任务(Actor 内的远程方法)嵌套在相应 Actor 方法的 Actor 下。 .. note:: 作业详细信息页面只能显示或检索每个作业最多 10K 个任务。对于任务数超过 10K 的作业,超出 10K 限制的任务部分不予计算。未计入任务的数量可从任务细分中获得。 .. _dashboard-timeline: 任务时间线 ~~~~~~~~~~~~~ 首先,单击下载按钮下载 chrome 跟踪文件。或者,您可以 :ref:`使用 CLI 或 SDK 导出跟踪文件 `。 其次,使用 ``chrome://tracing`` 或者 `Perfetto UI `_ 等工具并拖拽下载的 chrome 跟踪文件。我们将使用 Perfetto,因为它是可视化 chrome 跟踪文件的推荐方法。 在 Ray Tasks 和 Actors 的时间线可视化中,有 Node 行(硬件)和 Worker 行(进程)。 每个 worker 行显示该 worker 随时间发生的任务事件列表(例如,计划的任务、运行的任务、输入/输出反序列化等)。 Ray 状态 ~~~~~~~~~~ 作业视图显示 Ray Cluster 的状态。此信息是 CLI 命令 ``ray status`` 的输出。 左侧面板显示自动缩放状态,包括挂起、活动和失败的节点。右侧面板显示资源需求,即当前无法调度到集群的资源。此页面对于调试资源死锁或缓慢的调度很有用。 .. note:: 输出显示整个集群的聚合信息(不是按作业)。如果您运行多个作业,则某些需求可能来自其他作业。 .. _dash-workflow-state-apis: 任务、actor 和 占位组 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 仪表板显示作业任务、actor 和 占位组的状态表。 该信息是 :ref:`Ray State APIs ` 输出的。 您可以展开该表以查看每个任务、actor 和 占位组的列表。 .. _dash-serve-view: 服务视图 ---------- .. raw:: html
查看您的常规 Serve 配置、Serve 应用程序列表,如果您配置了 :ref:`Grafana 和 Prometheus ` , 还可以查看 Serve 应用程序的高级指标。单击服务应用程序名称,进入服务应用程序详细信息页面。 提供应用程序详细信息页面 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 查看 Serve 应用程序的配置和元数据以及 :ref:`Serve 部署和副本 ` 的列表。 单击部署的展开按钮以查看副本。 每个部署都有两个可用的操作。您可以查看部署配置,如果您配置了 :ref:`Grafana 和 Prometheus ` ,则可以打开 Grafana 仪表板,其中包含有关该部署的详细指标。 对于每个副本,有两个可用的操作。您可以查看该副本的日志,如果您配置了 :ref:`Grafana 和 Prometheus ` ,则可以打开 Grafana 仪表板,其中包含有关该副本的详细指标。单击副本名称,进入服务副本详细信息页面。 服务副本详细信息页面 ~~~~~~~~~~~~~~~~~~~~~~~~~ 此页面显示有关服务副本的元数据、有关副本的高级指标,如果您配置了 :ref:`Grafana 和 Prometheus ` ,以及该副本已完成 :ref:`Tasks ` 的历史记录。 Serve 指标 ~~~~~~~~~~~~~ Ray Serve 导出各种时间序列指标,以帮助您了解 Serve 应用程序随时间变化的状态。 在 :ref:`此处 ` 查找有关这些指标的更多详细信息。 要存储和可视化这些指标,请按照 :ref:`这里 ` 说明设置 Prometheus 和 Grafana 。 这些指标可在 Ray Dashboard 的“服务”页面和“服务副本详细信息”页面中找到。 它们也可以作为 Grafana 仪表板进行访问。 在 Grafana 仪表板中,使用顶部的下拉筛选器按路由、部署或副本筛选指标。 将鼠标悬停在每个图表左上角的“信息”图标上即可获得每个图表的准确描述。 .. _dash-node-view: 集群视图 ------------ .. raw:: html
Cluster 视图是机器(节点)和 Workers(进程)层次关系的可视化。 每台主机由许多 Worker 组成,您可以通过单击 + 按钮查看。 另请参阅将 GPU 资源分配给特定的 Actor 或任务。 单击节点 ID,可查看节点详细信息页面。 此外,机器视图允许您查看节点或工作线程的 **日志**。 .. _dash-actors-view: Actors 视图 ----------- 使用 Actors 视图查看 Actor 的日志以及哪个作业创建了该 Actor。 .. raw:: html
最多存储 1000 个死亡 Actor 的信息。 Ray 启动时覆盖该 `RAY_DASHBOARD_MAX_ACTORS_TO_CACHE` 环境变量。 Actor 性能 ~~~~~~~~~~~~~~~ 在正在运行的 Actor 上运行分析器。有关更多详细信息,请参阅 :ref:`Dashboard Profiling ` 。 Actor 详情页 ~~~~~~~~~~~~~~~~~ 单击 ID,可查看 Actor 的详细信息视图。 在 Actor 详细信息页面上,查看元数据、状态以及所有已运行的 Actor 任务。 .. _dash-metrics-view: 指标视图 ------------ .. raw:: html
Ray 导出可从 :ref:`“指标”视图 ` 中获得的默认指标。以下是一些可用的示例指标。 - Ta按状态细分的任务、actor 和 占位组 - 跨节点 :ref:`L辑资源使用情况 ` - 跨节点硬件资源使用情况 - Autoscaler 状态 有关可用指标,请参阅 :ref:`系统指标页 ` 。 .. note:: Metrics 视图需要 Prometheus 和 Grafana 设置。请参阅 :ref:`配置和管理仪表板 `以了解如何设置 Prometheus 和 Grafana。 Metrics 视图提供 Ray 发出的时间序列指标的可视化。 您可以在右上角选择指标的时间范围。图表每 15 秒自动刷新一次。 还有一个方便的按钮可以从仪表板打开 Grafana UI。 Grafana UI 提供了图表的额外可定制性。 .. _dash-workflow-cpu-memory-analysis: 分析Tasks和Actors的CPU和内存使用情况 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 仪表板中的 :ref:`标视图 ` 提供了“每个组件的 CPU/内存使用情况图表”,显示应用程序(以及系统组件)中每个task 和 actor随时间的 CPU 和内存使用情况。 您可以识别可能消耗比预期更多资源的task 和 actor,并优化应用程序的性能。 .. image:: https://raw.githubusercontent.com/ray-project/Images/master/docs/new-dashboard-v2/dashboard-pics/node_cpu_by_comp.png :align: center 每个组件 CPU 图表。 0.379个核心意味着它使用了单个CPU核心的40%。 以 ``ray::``. ``raylet``, ``agent``、``dashboard``、``gcs`` 进程名称开头的是系统组件。 .. image:: https://raw.githubusercontent.com/ray-project/Images/master/docs/new-dashboard-v2/dashboard-pics/node_memory_by_comp.png :align: center 每个组件的内存图。以 ``ray::``. ``raylet``, ``agent``, ``dashboard``, or ``gcs`` 程名称开头的是系统组件。 .. image:: https://raw.githubusercontent.com/ray-project/Images/master/docs/new-dashboard-v2/dashboard-pics/cluster_page.png :align: center 此外,用户还可以从 :ref:`集群视图 ` 中查看硬件利用率的快照,,该视图提供了整个 Ray 集群的资源使用情况概览。 .. _dash-workflow-resource-utilization: 查看资源利用率 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Ray 要求用指定 :ref:`资源 ` 数量,以及 Tasks 和 Actors 通过 ``num_cpus``、 ``num_gpus``、 ``memory`` 和 ``resource`` 等参数指定资源数量. 这些值用于调度,但可能并不总是与实际资源利用率(物理资源利用率)匹配。 - 从 :ref:`指标视图 `中查看一段时间内逻辑和物理资源的利用率。 - 物理资源利用率(CPU、GPU、内存、磁盘、网络)的快照也可以从 :ref:`集群视图 ` 获得。 .. image:: https://raw.githubusercontent.com/ray-project/Images/master/docs/new-dashboard-v2/dashboard-pics/logical_resource.png :align: center :ref:`逻辑资源 ` 使用率。 .. image:: https://raw.githubusercontent.com/ray-project/Images/master/docs/new-dashboard-v2/dashboard-pics/physical_resource.png :align: center 物理资源(硬件)使用情况。 Ray 提供集群中每台机器的 CPU、GPU、内存、GRAM、磁盘和网络使用情况。 .. _dash-logs-view: 日志视图 --------- .. raw:: html
日志视图列出了集群中的 Ray 日志。它按节点和日志文件名组织。其他页面中的许多日志链接都链接到此视图并过滤列表,以便显示相关日志。 要了解 Ray 的日志记录结构,请参阅 :ref:`志记录目录和文件结构 `。 日志视图提供搜索功能来帮助您查找特定日志消息。 **驱动器日志** 如果 Ray 作业是通过 :ref:`Job API ` 提交的,则可以从仪表板获取作业日志。日志文件遵循以下格式: ``job-driver-.log``。 .. note:: 如果直接在 Ray 集群的头节点上执行驱动程序(不使用作业 API)或使用 :ref:`Ray 客户端 ` 运行,则无法从仪表板访问驱动程序日志。在这种情况下,请查看终端或 Jupyter Notebook 输出以查看驱动程序日志。 **Task 和 Actor 日志 (Worker 日志)** Task 和 Actor 日志通过 :ref:`Task 和 Actor 表视图 `。单击“日志”按钮。 您可以查看包含从任务和 actor 发出的输出的 ``stdout`` 和 ``stderr`` 日志。 对于Actors,还可以查看对应Worker进程的系统日志。 .. note:: 异步 Actor 任务或线程 Actor 任务(并发度>1)的日志仅作为 Actor 日志的一部分提供。按照仪表板中的说明查看 Actor 日志。 **Task 和 Actor 错误** 您可以通过查看作业进度栏轻松识别失败的任务或 actor。 task 和 actor表分别显示失败的task 或 actor的名称。它们还提供对相应日志或错误消息的访问。 .. _dash-overview: 概览视图 ------------- .. image:: ./images/dashboard-overview.png :align: center 概览视图提供了 Ray Cluster 的高级状态。 **概览指标** 概览指标页面提供集群级别的硬件利用率和自动缩放状态(待处理、活动和故障节点的数量)。 **最近的 Job** 最近的作业窗格提供了最近提交的 Ray 作业的列表。 **Serve 应用** “服务应用程序”窗格提供最近部署的服务应用程序的列表 .. _dash-event: **时间视图** .. image:: https://raw.githubusercontent.com/ray-project/Images/master/docs/new-dashboard-v2/dashboard-pics/event-page.png :align: center 事件视图按时间顺序显示与特定类型(例如,自动缩放器或作业)关联的事件列表。 可以使用 :ref:`(Ray state APIs)` 的 CLI 命令 ``ray list cluster-events`` 访问相同的信息。 有两种类型的事件可用: - Job: 与 :ref:`Ray Jobs API `相关的事件。 - Autoscaler: :ref:`Ray autoscaler ` 相关事件。 资源 --------- - `Ray Summit 可观测行演讲 `_ - `Ray 指标博客 `_ - `Ray Dashboard 路线图 `_ - `可观察性训练模块 `_