使用 .NET Aspire 仪表板
记录遥测数据后,需要一种方法来检查它。 借助 .NET Aspire,仪表板提供了丰富的工具来调查遥测和诊断问题。
假设你是一家户外装备零售商的员工。 在 .NET Aspire 云原生应用中使用 OpenTelemetry。 现在,你想要检查遥测发出的数据,以确定是否可以使用它来提高性能。
在本单元中,你将了解 .NET Aspire 仪表板如何显示遥测数据。
.NET Aspire 仪表板中的遥测数据
在开发计算机上启动使用 .NET Aspire 构建的应用以及运行每个集成的容器时,.NET 会启动 .NET Aspire 仪表板。 此 Web 界面包含五个部分,其中四个部分显示遥测:
- 资源:列出构成整个云原生应用的容器、项目和可执行文件。 使用“终结点”列中的链接连接到每个微服务。
- 控制台:显示从指定的集成发送到标准输出的文本。
- 结构化日志:显示发送到 OpenTelemetry 记录器的信息。
- 跟踪:显示应用中任何微服务收到的每个请求的跟踪。
- 指标:显示可配置的时间域图,显示所选指标的方式。
仪表板中的日志
记录的事件描述应用启动和运行时发生的情况。 可以在仪表板中看到两种类型的记录信息:控制台日志和结构化日志。
控制台日志
控制台日志显示应用已发送到标准输出的文本。 命令行程序将显示控制台中的行等文本,但微服务和后备服务没有显示标准输出的固有位置。 .NET Aspire 通过在仪表板中提供控制台日志页来提供帮助。
打开页面时,必须先选择源集成,例如微服务之一。 该工具在主窗口中显示来自该源的所有标准输出,其中包含一些格式。 例如,当失败显示为红色时,信息事件以绿色显示。
控制台日志只是文本行。 它们易于应用程序创建和发出,但它们对于人类来说很难阅读,并且难以处理分析目的,因为它们缺乏结构。
结构化日志
结构化日志使用其模板和消息参数保留记录的消息,而不是平面文本。 这种结构可以更容易地过滤掉无关的事件,以便向下钻取来排除特定问题。 在生产环境中,日志可以持久保存、编制索引,然后像数据库一样查询。 这样,便可以对包含的数据执行丰富的分析。
注意
结构化日志通常也称为语义日志。
在代码中,使用 OpenTelemetry ILogger
对象将事件发送到结构化日志:
logger.Info("{shopitem} added to basket by {user}", "Ski goggles", "Kenny");
在 .NET 仪表板中,“结构化日志”页显示应用中每个资源的事件。 若要向下钻取,请选择要进行故障排除的资源,并使用“筛选器”和“级别”框来仅显示相关事件。
仪表板中的分布式跟踪
跟踪是一条记录,描述如何处理请求并将其返回到调用方。 每个跟踪都可能包括调用应用中的多个集成。 例如,当用户请求产品目录网页时,Web UI 微服务可能会收到请求,该请求可能会调用身份验证微服务、目录微服务和 Redis 缓存,然后再向用户返回网页。
每个跟踪由范围组成,例如对目录微服务的调用。 系统记录每个跨度及其计时和父信息,以便你可以看到哪个集成快速响应,并导致延迟。 每个范围都有更多详细信息。
与结构化日志类似,可以选择源并应用筛选器来向下钻取和查找要诊断的特定问题的跟踪。
仪表板中的指标
指标是随时间变化的值,由应用的集成记录。 例如,指标可以记录请求和响应的持续时间或与目录微服务的活动连接计数。 某些指标内置于 .NET 中,有些指标附带 OpenTelemetry SDK 库,开发人员可以添加其集成特有的自定义 OpenTelemetry 指标。
.NET Aspire 仪表板包含“指标”部分,可用于调查和显示指标随时间变化的方式。
例如,http.server.active_requests 指标显示在任何给定时刻正在处理的请求数:
http.server.request.duration 指标显示应用在任何给定时刻的响应速度:
在每个关系图下,可以指定筛选器以面向图形。 例如,此图显示主页路由请求的请求持续时间指标: