Просмотр телеметрии с помощью Azure Monitor и сторонних средств

Завершено

Приложение собирает данные телеметрии, и теперь вам нужен более полный способ его просмотра. В этом уроке вы узнаете, как просматривать данные телеметрии во многих различных средствах.

Мониторинг и просмотр данных телеметрии

Распространенный способ просмотра данных телеметрии — использовать Prometheus и Grafana вместе. Prometheus — это система мониторинга с открытым кодом, которая собирает метрики из облачного приложения. Grafana — это средство визуализации с открытым исходным кодом, которое используется для создания панелей мониторинга для просмотра метрик, собранных Prometheus.

Прометей

Первым шагом является добавление контейнера Prometheus и его настройка для сбора данных из каждой микрослужбы в приложении. Затем вы добавите клиентскую библиотеку Prometheus .NET для сбора метрик из приложения.

снимок экрана с настроенным приложением Prometheus, показывающим работоспособность приложения eShopLite.

OpenTelemetry предоставляет экспортера для Prometheus. Вы можете добавить этот экспортер в приложение, включив пакет NuGet OpenTelemetry.Exporter.Prometheus.AspNetCore. Этот пакет экспортирует метрики в 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.

снимок экрана, на котором показана панель мониторинга ASP.NET в Grafana.

Вы добавляете Prometheus в качестве источника данных в Grafana в файле YAML:

apiVersion: 1

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

Включить распределенную трассировку

OpenTelemetry поддерживает как Jaeger, так и Zipkin. В этом модуле используется Zipkin, которая является системой распределенной трассировки с открытым кодом. Он помогает собирать данные о времени, необходимые для устранения проблем с задержкой в архитектурах микрослужб. Он управляет как коллекцией, так и поиском этих данных.

снимок экрана, на котором показано, как zipkin отображает зависимости магазина приложений eShopLite, отправляющие запросы в службу продуктов.

В проекте диагностики необходимо добавить поддержку Zipkin через пакет NuGet OpenTelemetry.Exporter.Zipkin. Затем вы добавите код в метод AddObservability для экспорта данных в Zipkin.

Углубите свои знания с помощью Application Insights

Существует инструмент, который может объединить просмотр метрик и просмотр распределенной трассировки, а затем объединить его с данными из журналов. Application Insights — это расширяемая служба управления производительностью приложений (APM). Его можно использовать для мониторинга динамического веб-приложения. Application Insights автоматически обнаруживает аномалии производительности. Он включает мощные средства аналитики, помогающие диагностировать проблемы и понять, что пользователи на самом деле делают с приложением.

снимок экрана, показывающий в Application Insights работоспособность приложения eShopLite.

Как и предыдущие средства, необходимо добавить пакет NuGet в решение Azure.Monitor.OpenTelemetry.AspNetCore, а затем в качестве экспортера в проект диагностики ввести Azure Monitor.