OpenTelemetry
OpenTelemetry 插件为您的开发工作流引入运行时可观测性。它会收集、处理并显示日志、指标和跟踪信息,帮助您了解应用程序中服务的运行时行为和相互关系。 它会收集、处理并显示日志、指标和跟踪信息,帮助您了解应用程序中服务的运行时行为和相互关系。
安装 OpenTelemetry 插件
此功能依赖于 OpenTelemetry 插件,您需要安装并启用。 更多信息请参阅 从 Marketplace 安装插件。
按下 Ctrl+Alt+S 打开设置,然后选择 。
打开 Marketplace 选项卡,找到 OpenTelemetry 插件,然后点击 安装 (如果提示,请重启 IDE)。
安装完成后,插件会在 服务窗口 中添加 OpenTelemetry 服务。 默认情况下,服务会在您 运行项目 时开始收集数据(目前支持 .NET Project 和 .NET Launch Settings 配置)。

在大多数情况下,建议在启动目标应用程序之前启动 OpenTelemetry 服务,因此默认情况下在启动 Rider 时服务会自动启动。 要更改此行为,请在 JetBrains Rider 设置 的 页面中取消选中 启动时启动 OpenTelemetry 主机 复选框 Ctrl+Alt+S。
要启动或停止服务,请在 服务 窗口中选择 OpenTelemetry 节点,并使用工具栏中的相应按钮。

服务运行时,工具栏还会显示主机地址以及相应的环境变量。 您可以使用这些信息手动添加 gRPC OTLP 端点,从而将 IDE 外部本地启动的应用添加到分析中。
默认情况下,将随机分配端口,但您可以在 JetBrains Rider 设置 的 页面中通过选中 使用固定 OTLP 服务器端口 复选框进行更改 Ctrl+Alt+S。
对于从 IDE 启动的 .NET 应用程序, OTEL_EXPORTER_OTLP_ENDPOINT 环境变量会自动设置。 这意味着如果一个应用程序已配置为使用 OpenTelemetry,并添加了 OTLP exporter,但未在代码中显式设置 endpoint,则该应用程序将自动开始向 Rider OTLP 服务器发送数据。 您可以通过在 JetBrains Rider 设置 的 页面中取消选中 覆盖 OpenTelemetry 环境变量 复选框 Ctrl+Alt+S ,以禁用环境变量的自动赋值。
研究 OpenTelemetry 数据
OpenTelemetry 数据的单位是应用程序实例(在规范中称为 service instance)。 默认情况下,实例通过 GUID 标识,并按生成它们的应用程序分组。 日志 选项卡显示详细信息,如时间戳、日志级别和日志消息。 您可以按文本、级别或其他特性筛选日志,以便轻松聚焦相关信息。

日志和指标存储于内存中,在 OTLP 服务器重启时将被清除。
您可以使用上下文菜单从树状图中移除不必要的实例。
点击工具栏中的 导航到代码 ,可从日志条目跳转到相应的源代码位置。 请注意,此操作需要日志条目中存在 {OriginalFormat} 特性,且暂不支持跳转到第三方或反编译代码。
点击工具栏上的 在编辑器中打开 可将日志条目序列化为 JSON 并在编辑器中打开。 序列化后的条目将保存在 临时文件和控制台 节点中,并可通过 资源管理器工具窗口 查看。
服务映射
在分析多个应用和服务时,您可以基于 traces 创建架构图或服务映射。 该映射显示服务、端点、数据库和消息队列,帮助您了解系统中的交互模式和依赖关系。
请确保您的应用和服务生成分布式跟踪(例如通过 HTTP 请求),以填充服务映射。
要查看服务映射,请在 服务 窗口中选择 OpenTelemetry 节点并点击工具栏上的相应按钮:

自动检测
当您从 IDE 运行 ASP.NET Core 应用时,JetBrains Rider 可以在运行时注入所需的 OpenTelemetry 依赖项,使应用自动开始发送 OpenTelemetry 数据。
自动检测默认处于禁用状态。 要启用该功能,请在 JetBrains Rider 设置 的 页面中选中 允许自动检测 复选框 Ctrl+Alt+S。
自动检测适用于快速测试。 对于接近生产环境的设置,建议手动添加并配置 OpenTelemetry 依赖项。 如果项目中已包含 OpenTelemetry 软件包,则不会启用自动检测。
手动检测示例
以下是一个将启用自动检测的 ASP.NET Core 应用示例:
以下是相同应用,已配置 OpenTelemetry 依赖项:
与本地 OpenTelemetry 提供程序集成
Rider OpenTelemetry 卫星服务支持 OTLP gRPC collector/exporter API ,可与 IDE 外部运行的本地 OpenTelemetry 提供程序集成。 这使您可以将遥测数据(跟踪、日志、指标)直接发送到 Rider 或通过本地 OpenTelemetry Collector 进行传输。
直接发送遥测数据
在 JetBrains Rider 设置 的 Ctrl+Alt+S 中的 页面,取消选中 覆盖 OpenTelemetry 环境变量 ,并配置 使用固定 OTLP 服务器端口 ,将 Rider OpenTelemetry 服务绑定到固定端口。
在您的应用程序中,将 OTLP exporter 配置为指向 Satellite 服务。 终端地址为
http://localhost:<port>,其中<port>是在插件设置中配置的。
如果需要将数据转发到多个目的地(例如 Rider 和外部监控服务),请使用 OpenTelemetry Collector。
通过 OpenTelemetry Collector 发送遥测数据集成
在 JetBrains Rider 设置 的 Ctrl+Alt+S 中的 页面,取消选中 覆盖 OpenTelemetry 环境变量 ,并配置 使用固定 OTLP 服务器端口 ,将 Rider OpenTelemetry 服务绑定到固定端口。
将 OpenTelemetry Collector 配置为从您的应用程序的 OTLP exporter 接收遥测数据。
通过将 Rider OpenTelemetry Satellite 服务添加为一个 exporter,将数据导出到该服务,例如:
endpoint: "localhost:17011"。将 Rider OpenTelemetry Satellite 服务添加为一个 collector。 例如:
otlp/satellite: endpoint: "localhost:17011" tls: insecure: true在 OpenTelemetry Collector 配置中引用相应的 pipeline(跟踪、指标、日志),并在这些 pipeline 中包含 Rider OpenTelemetry Satellite 服务。 例如:
service: pipelines: traces: receivers: ... exporters: [otlp/satellite] metrics: receivers: ... exporters: [otlp/satellite] logs: receivers: ... exporters: [otlp/satellite]