WebStorm 2025.2 Help

OpenTelemetry 跟踪与指标

OpenTelemetry 是一组 API、SDK 和工具,旨在让您能够轻松创建支持导出跟踪、指标和日志的应用程序。OpenTelemetry API 提供了一套统一的用于分布式跟踪与指标检测的 API,可自动收集数据并将其发送到您选择的后端。 OpenTelemetry API 提供了一套统一的用于分布式跟踪与指标检测的 API,可自动收集数据并将其发送到您选择的后端。

在 WebStorm 中实现的 OpenTelemetry 统计信息包括跟踪与度量。 跟踪器会创建表示活动的 Span。 指标包括计数器与仪表。 如需详细信息,请参阅 OpenTelemetry 文档

您可以使用 idea.properties 文件启用 OpenTelemetry。

  1. 在 IDE 中,通过主菜单选择 帮助 | 编辑自定义属性

  2. 在打开的文件中添加以下代码:

    idea.diagnostic.opentelemetry.otlp=true

Span

Span 表示具有跟踪的单个操作。 Span 可发送至端点并在 Jaeger UI 中进行可视化。 Jaeger 可在 Docker 中启动。 您可以按照链接中的说明 设置 Jaeger UI

设置 Span

  1. 启动带有 Jaeger 的 Docker 容器。

    使用以下 二进制文件 下载 Jaeger。

    要启动 Jaeger 容器,请在终端中运行以下代码:

    docker run -d --name jaeger \ -e COLLECTOR_ZIPKIN_HTTP_PORT=9411 \ -e COLLECTOR_OTLP_ENABLED=true \ -p 6831:6831/udp \ -p 6832:6832/udp \ -p 5778:5778 \ -p 16686:16686 \ -p 4317:4317 \ -p 4318:4318 \ -p 14250:14250 \ -p 14268:14268 \ -p 14269:14269 \ -p 9411:9411 \ jaegertracing/all-in-one:1.38
  2. 转到 localhost:16686 查看 Jaeger UI 中的 Span。

    可以通过以下属性定义 trace 端点:

    idea.diagnostic.opentelemetry.otlp

    如果该标志为 true,则默认设置为: http://127.0.0.1:4318/

OpenTelemetry 指标

OpenTelemetry 度量存储在 logs 文件夹中。 有关具体位置,请参阅 文档

open-telemetry-metrics.csv

可以通过 idea.diagnostic.opentelemetry.metrics.file 定义指标报告路径。

open-telemetry-connection-metrics.gz

此文件自 WebStorm 版本 2023.2 起可用。

open-telemetry-lux-metrics.gz

远程开发 OpenTelemetry Span 与指标的标志

rdct.diagnostic.otlp

仅在后端启用此功能。

后端 Span 会在后端积累,并发送至前端。 所有 Span,包括后端与前端的,都会从前端发送到指定端点。

rdct.connection.metrics.enabled

此功能应在前后端均启用。

此功能自 WebStorm 版本 2023.2 起可用。

lux.metrics.enabled

远程开发指标

这些指标每秒记录一次。

它们包括以下内容:

  • rdct.FramedByteChannel.sentFrames.projectName :通过 TLS 发送的帧数(在后端和前端)

  • rdct.CountingByteChannel.readBytesRate.projectName :通过 TLS 接收的字节数(在后端和前端)

  • rdct.CountingByteChannel.writeBytesRate.projectName :通过 TLS 发送的字节数(在后端和前端)

  • rdct.FramedByteChannel.receivedFrames.projectName :通过 TLS 接收的帧数(在后端和前端)

  • rdct.ThinClientRdPortServerSocketWrapper.sentBytes.projectName :在精简前端进程中,通过端口转发通道从用户应用程序(例如浏览器)发送的字节数

  • rdct.ThinClientRdPortServerSocketWrapper.receivedBytes.projectName :在精简前端进程中,通过端口转发通道从用户应用程序(例如浏览器)接收的字节数

FramedByteChannel 是前端与后端之间通过 TLS 传输的字节消息通道。字节被累积成帧,通过通道发送或接收。 字节被累积成帧,通过通道发送或接收。

  • rdct.FramedByteChannel.receivedFramesLenRate.projectName :通过 TLS 接收的帧长度(在后端和前端)

  • rdct.FramedByteChannel.sentFramesLenRate.projectName :通过 TLS 发送的帧长度(在后端和前端)

  • rdct.TransportWrapperImpl.connectionState.projectName :连接状态的序号:0 -「NOT_CONNECTED」,1 -「CONNECTED」,2 -「CLOSED」,3 -「DECLINED」,4 -「FAULTED」(在后端和前端)

  • rdct.ThinClientDiagnosticsService.pingDirect :精简客户端的 ping 值(在前端)

  • rdct.ThinClientDiagnosticsService.pingUI :前端 UI 线程的 ping 值(在前端)

ThinClientDiagnosticsService 是按项目的前端侧诊断服务,用于收集前端与后端的连接信息。 Ping 指标是由后端进程处理的协议请求。 pingDirect 在后台线程中处理,pingUI 在 EDT 中处理。 如果没有收到任何一次 ping,我们将假设出现了网络问题(可能是通道中堆积了一些数据),或者我们的进程已被冻结。 如果我们收到了 pingDirect ,但没有 pingUI ,则我们认为 UI 在后端已挂起。 当未能及时收到来自后端的响应时,会为 ping 属性设置一个 -1 值。 rdct.ThinClientDiagnosticsService.connectionState :前端连接状态的序号:0 → WireNotConnected,1 → NoPings,2 → NoUiThreadPing,3 → Connected(前端连接)

报告连接问题

如果您遇到连接问题,请使用以下流程收集数据,以便进一步调查问题:

收集数据

  1. 在 IDE 的主菜单中,选择 帮助 | 编辑自定义属性

  2. 将以下属性添加到 idea.properties 文件中:

    rdct.connection.metrics.enabled

    您需要在后端和前端同时启用此属性。

    连接指标将以每秒一次的频率进行报告。

  3. 在复现连接问题后,请收集在前端和后端 logs 文件夹 中生成的指标文件。 这些文件将具有 *.gz 扩展名,文件名格式如下:

    open-telemetry-connection-metrics.2023-03-29-15-48-40.gz
  4. 请将 logs 文件夹中的所有指标文件打包为一个归档文件,并将其附加到相关 YouTrack 项目 中创建的问题上。

最后修改日期: 2025年 9月 26日