使用 Azure Monitor 和第三方工具查看遥测数据

已完成

你的应用正在收集遥测数据,你现在需要一种更全面的方法来查看它。 在本单元中,你将了解如何在许多不同的工具中查看遥测数据。

监视和查看遥测数据

查看遥测数据的一种常见方法是结合使用 Prometheus 和 Grafana。 Prometheus 是一个开源监视系统,用于从云原生应用收集指标。 Grafana 是一个开源可视化工具,可用于创建仪表板来查看 Prometheus 收集的指标。

Prometheus

第一步是添加 Prometheus 容器,并将其配置为从应用中的每个微服务收集数据。 然后,添加 Prometheus .NET 客户端库以从应用收集指标。

Screenshot that shows the configured Prometheus app showing the health of the eShopLite app.

OpenTelemetry 为 Prometheus 提供了导出程序。 可通过包含 OpenTelemetry.Exporter.Prometheus.AspNetCore NuGet 包将此导出程序添加到应用。 此包会将指标以 Prometheus 可以理解的格式导出到 Prometheus。 将当前控制台导出程序替换为 Prometheus 导出程序。

为应用中的所有微服务添加终结点。 例如:

global:
  scrape_interval: 1s

scrape_configs:
  - job_name: 'products'
    static_configs:
      - targets: ['backend:8080']
  - job_name: 'store'
    static_configs:
      - targets: ['frontend:8080']

Grafana

Grafana 是一个开源可视化工具,可用于创建仪表板来查看 Prometheus 收集的指标。 可将 Grafana 配置为连接到 Prometheus 并在仪表板中显示指标。 与之前一样,向应用添加 Grafana 容器,并将其配置为连接到 Prometheus。

Screenshot that shows an ASP.NET dashboard in Grafana.

在 YAML 文件中将 Prometheus 作为数据源添加到 Grafana:

apiVersion: 1

datasources:
- name: Prometheus
  type: prometheus
  url: http://prometheus:9090 
  isDefault: true
  access: proxy
  editable: true

启用分布式跟踪

OpenTelemetry 同时支持 Jaeger 和 Zipkin。 在本模块中要使用 Zipkin,它是一个开源分布式跟踪系统。 它会帮助收集排查微服务体系结构中的延迟问题所需的计时数据。 它同时管理此数据的收集和查找。

Screenshot that shows Zipkin showing the dependencies of the eShopLite app Store sending requests to the Products service.

在诊断项目中,需要通过 OpenTelemetry.Exporter.Zipkin NuGet 包添加对 Zipkin 的支持。 然后将代码添加到 AddObservability 方法以将数据导出到 Zipkin。

使用 Application Insights 深入钻取

有一个工具可以将查看指标和查看分布式跟踪整合在一起,然后将其与日志中的数据合并。 Application Insights 是一项可扩展应用程序性能管理 (APM) 服务。 你可以使用它来监视实时 Web 应用程序。 Application Insights 会自动检测性能异常。 其中包含功能强大的分析工具,可帮助你诊断问题并了解用户在应用中实际执行了哪些操作。

Screenshot that shows Application Insights showing the health of the eShopLite app.

与前述工具一样,需要将 NuGet 包添加到你的解决方案 Azure.Monitor.OpenTelemetry.AspNetCore,然后将 AzureMontior 作为导出程序引入你的诊断项目。