.NET .NET Aspire 遥测

.NET .NET Aspire 的主要目标之一是确保应用易于调试和诊断。 .NET .NET Aspire 集成会自动设置日志记录、追踪和指标配置,并且这些有时被称为可观测性支柱,使用.NETOpenTelemetry SDK

  • 日志记录:日志事件描述应用运行时发生的情况。 默认情况下,为 .NET.NET Aspire 集成启用了基线集,并且可以按需启用更广泛的日志记录来诊断特定问题。

  • 跟踪:跟踪将属于同一逻辑活动的日志事件(例如处理单个请求)相关联,即使它们分布在多台计算机或进程之间。

  • 指标:指标将应用的性能和运行状况特征公开为简单的数值。 因此,它们的性能损耗较低,许多服务将它们配置为始终开启的遥测功能。 这也使得它们适合在检测到潜在问题时触发警报。

通过这些类型的遥测,可以使用各种监视和分析工具深入了解应用程序的行为和性能。 根据支持服务,某些集成可能仅支持其中一些功能。

.NET Aspire OpenTelemetry 集成

.NET OpenTelemetry SDK 包括从多个 .NET API 收集数据的功能,包括 ILoggerActivityMeterInstrument<T>。 这些 API 对应于日志记录、跟踪和指标等遥测功能。 .NET Aspire 项目在 ServiceDefaults 项目中定义 OpenTelemetry SDK 配置。 有关详细信息,请参阅 .NET.NET Aspire 服务默认值

默认情况下,ConfigureOpenTelemetry 方法为应用启用日志记录、跟踪和指标。 它还增加了这些数据点的导出程序,以便其他监视工具可以收集它们。

导出用于监视的 OpenTelemetry 数据

.NET OpenTelemetry SDK 有助于将此遥测数据导出到数据存储或报告工具。 遥测导出机制依赖于 OpenTelemetry 协议(OTLP),该协议是一种标准化的方法,用于通过 REST 或 gRPC 传输遥测数据。 ConfigureOpenTelemetry 方法还负责注册导出器,以便将你的遥测数据提供给其他监控工具,例如 Prometheus 或 Azure Monitor。 有关详细信息,请参阅 OpenTelemetry 配置

OpenTelemetry 环境变量

包含已知环境变量 的 列表,用于配置用于收集和导出遥测的最重要行为。 OpenTelemetry SDK(包括 .NET SDK)支持读取这些变量。

.NET Aspire 项目通过环境变量启动,这些环境变量用于在导出的遥测数据中配置应用的名称和 ID,并设置 OTLP server 的地址终结点以导出数据。 例如:

  • OTEL_SERVICE_NAME = myfrontend
  • OTEL_RESOURCE_ATTRIBUTES = service.instance.id=1a5f9c1e-e5ba-451b-95ee-ced1ee89c168
  • OTEL_EXPORTER_OTLP_ENDPOINT = http://localhost:4318

环境变量在本地开发中自动设置。

.NET .NET Aspire 本地开发

创建 .NET Aspire 项目时,.NET Aspire 仪表板会默认提供用于查看应用遥测的 UI。 遥测数据使用 OTLP 发送到仪表板,仪表板实现 OTLP server 来接收遥测数据并将其存储在内存中。 .NET .NET Aspire 调试工作流如下所示:

  • 开发人员启动 .NET.NET Aspire 项目进行调试,按 F5
  • .NET .NET Aspire 仪表板和开发者控制面板(DCP)启动。
  • 应用配置在 AppHost 项目中运行。
    • OpenTelemetry 环境变量会在应用配置期间自动添加到 .NET 项目中。
    • DCP 在导出的遥测中提供应用的名称(OTEL_SERVICE_NAME)和 ID(OTEL_RESOURCE_ATTRIBUTES)。
    • OTLP 终结点是仪表板启动的 HTTP/2 端口。 此终结点在每个项目的 OTEL_EXPORTER_OTLP_ENDPOINT 环境变量中设置。 这会通知项目将遥测数据传送回仪表板。
    • 小型导出间隔(OTEL_BSP_SCHEDULE_DELAYOTEL_BLRP_SCHEDULE_DELAYOTEL_METRIC_EXPORT_INTERVAL),以便数据在仪表板中快速可用。 在本地开发中使用小值是为了优先考虑仪表板的响应能力,而不是效率。
  • DCP 启动已配置的项目、容器和可执行文件。
  • 启动后,应用会将遥测数据发送到仪表板。
  • 仪表板显示所有 .NET.NET Aspire 项目的近实时遥测数据。

所有这些步骤都在内部执行,因此在大多数情况下,开发人员只需运行应用即可查看此过程。

.NET .NET Aspire 部署

.NET Aspire 部署环境应配置对其环境有意义的 OpenTelemetry 环境变量。 例如,应将 OTEL_EXPORTER_OTLP_ENDPOINT 配置为本地环境的 OTLP 收集器或监视服务。

.NET .NET Aspire 遥测在支持 OTLP 的环境中效果最佳。 如果未配置 OTEL_EXPORTER_OTLP_ENDPOINT,则禁用 OTLP 导出。

有关详细信息,请参阅 .NET.NET Aspire 部署