.NET .NET Aspire 遥测
.NET .NET Aspire 的主要目标之一是确保应用易于调试和诊断。 .NET .NET Aspire 集成会自动设置日志记录、追踪和指标配置,并且这些有时被称为可观测性支柱,使用.NETOpenTelemetry SDK。
日志记录:日志事件描述应用运行时发生的情况。 默认情况下,为 .NET.NET Aspire 集成启用了基线集,并且可以按需启用更广泛的日志记录来诊断特定问题。
跟踪:跟踪将属于同一逻辑活动的日志事件(例如处理单个请求)相关联,即使它们分布在多台计算机或进程之间。
指标:指标将应用的性能和运行状况特征公开为简单的数值。 因此,它们的性能损耗较低,许多服务将它们配置为始终开启的遥测功能。 这也使得它们适合在检测到潜在问题时触发警报。
通过这些类型的遥测,可以使用各种监视和分析工具深入了解应用程序的行为和性能。 根据支持服务,某些集成可能仅支持其中一些功能。
.NET Aspire OpenTelemetry 集成
.NET OpenTelemetry SDK 包括从多个 .NET API 收集数据的功能,包括 ILogger、Activity、Meter和 Instrument<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 环境变量
.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_DELAY
、OTEL_BLRP_SCHEDULE_DELAY
、OTEL_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 部署。