Використовуючи графану та Prometheus для моніторингу програм ASP.NET Core 8+ (Українська (Ukrainian))

Використовуючи графану та Prometheus для моніторингу програм ASP.NET Core 8+

Wednesday, 18 September 2024

//

6 minute read

Введение

Спостереження є невід 'ємною складовою підтримки здоров' я та продуктивності ваших програм. Я вже користуюсь цим сайтом для спостережень відвідувачів, використовуючи Умамі і винятків та помилок за допомогою Скв але тепер я хотів додати контроль якості до комбінації В цьому інструкції ми познайомимося з тим, як налагодити систему спостереження для ASP.NET Core за допомогою графані та Prometheus.

Звичайно, ви можете користуватися сервісом Grafana Cloud,, але для цього інструкції, ми зосередимося на локальному встановленні всього, щоб мати повну контроль над вашим стегом спостереженняM SK2

Ми хочемо отримати ось таку панель.

Дашборд Grafana

Докер

Як зазвичай з цим сайтом, я хотів додати елементи Grafana та Prometheus до мого комп 'ютерного файлу комп' ютера, це дозволяє мені крутити все вгору і вниз в одній команді і зберігати все зашифроване

Тут ви бачите, що я створив сервіси prometheus та grafana. Вони використовують мою звичайну програмуM SK1 мережу і мають докерні об 'єми, щоб зберігати дані

Докер Compose File

  prometheus:
    image: prom/prometheus:latest
    container_name: prometheus
    volumes:
      - prometheus-data:/prometheus
      - ./prometheus.yml:/etc/prometheus/prometheus.yml
    command:
      - '--config.file=/etc/prometheus/prometheus.yml'
    labels:
      - "com.centurylinklabs.watchtower.enable=true"
    networks:
      - app_network

  grafana:
    image: grafana/grafana:latest
    container_name: grafana
    labels:
      - "com.centurylinklabs.watchtower.enable=true"
    volumes:
      - grafana-data:/var/lib/grafana
    networks:
      - app_network
    environment:
      - GF_SECURITY_ADMIN_USER=admin
      - GF_SECURITY_ADMIN_PASSWORD=testpassword1234
- volumes:
  grafana-data:
  prometheus-data:

Ви побачите, що я встановив початковий пароль ( переконайтесь і змінюйте його на першому запускі !). Я також включив їх до автоматичної обробки МSK3 оновлення за допомогою телевізора

Ви' зауважте, що я не маюM SK1 тут жодних портів на карті , Я' використаю Caddy для того, щоб забезпечити доступ до сервісу Grafana, а Prometheus доступний лише з мережі Docker

Опціональні порти для локального запуску

Якщо ви хочете, ви можете додати

# Prometheus
    ports:
      - "9090:9090"
# Grafana
    ports:
      - "3000:3000"

Це дуже зручно, якщо ви ' працюєте локально . Запам 'ятайте, що в Windows ви можете запустити вашу програму у вашому IDE і використовувати МSK2hostM SK3docker.internalMSC5 МSK6з будь-яким портомMNK7 щоб отримати доступ до вашої програми з контейнераMRK8 ВиMسک9d також маєте на увазі 'bridgeMスク11 мережу у вашій докері

services:
  prometheus:
    image: prom/prometheus:latest
    container_name: prometheus
    volumes:
      - ./prometheus.yml:/etc/prometheus/prometheus.yml
    command:
      - '--config.file=/etc/prometheus/prometheus.yml'
    ports:
      - "9090:9090"
    networks:
      - monitoring

  grafana:
    image: grafana/grafana:latest
    container_name: grafana
    ports:
      - "3000:3000"
    networks:
      - monitoring
    environment:
      - GF_SECURITY_ADMIN_USER=admin
      - GF_SECURITY_ADMIN_PASSWORD=admin

networks:
  monitoring:
    driver: bridge

Konfiguracja Prometheus

Тоді ми додаємо нове prometheus.yml файл для конфігурації Prometheus, щоб відрізати метрики з нашої ASP.NET Корінної додатки

global:
  scrape_interval: 15s

scrape_configs:
  - job_name: 'mostlylucid'
    metrics_path: /metrics
    scheme: http                
    static_configs:
      - targets: ['mostlylucid:8080']

Тут ви бачите, я використовую внутрішнє ім 'я mostlulucid що є ім 'ям мого докер-сервісу і його початковий порт ' Я покажу, як це можна зробити в ASP.NET Core незабаром

ASP.NET - це ядро застосування

Я слідував за тут можна знайти інструкції для створення цього.

Спочатку треба додати OpenTelemetry.Exporter.Prometheus.AspNetCore NuGet пакету до вашого ASP.NET Корейного проекту

dotnet add package OpenTelemetry.Exporter.Prometheus.AspNetCore

Далі, вам потрібно сконфигурувати вашу програму для викриття метрики Program.cs файл, ви можете додати наступний код

   services.AddOpenTelemetry()
        .WithMetrics(builder =>
        {
            builder.AddPrometheusExporter();
            builder.AddMeter("Microsoft.AspNetCore.Hosting", "Microsoft.AspNetCore.Server.Kestrel");
        });
   
    app.MapPrometheusScrapingEndpoint();

Таким чином, Prometheus отримує кінцевий пункт і дані для відскапування і запускає два 'Meters', які забезпечують дані про ефективність ASPM SK2NET Core та KestrelMSC3

Обновляти

Я витратив деякий час на перемовини з . Це нова функція в | . | NET | МSK2 | і все ще трохи нестабільна, як здається |. | Нагорішня конфігурація дає базові характеристики, які вам потрібні для ASP \ . \ NET панелі керування, але там \ МSK5 \ є більше інформації, яку ви можете передати до Prometheus

Перш за все, найновіша бета OpenTelemetry.ExporterM SK1Prometheus.AspNetCore, здається, є більш стабільною, ніж бета МSK3 версія МSK4 принаймні на момент написання ). Тому я рекомендую вам використовувати її

dotnet add package OpenTelemetry.Exporter.Prometheus.AspNetCore --version 1.9.0-beta.2

Тоді ви можете додати до вашої додатки більш повний набір вимірювачів, як ось так:

    services.AddOpenTelemetry()
        .WithMetrics(builder =>
        {
            builder.AddPrometheusExporter();
            builder.AddAspNetCoreInstrumentation();
            builder.AddRuntimeInstrumentation();
            builder.AddHttpClientInstrumentation();
        }); 

Якщо ввести F12 в них, то побачите, що вони додають пакети так само, як і раніше

Наприклад, AddAspNetCoreInstrumentation додайте всі вбудовані метрики для ASP.NET Core.

return builder
             .AddMeter("Microsoft.AspNetCore.Hosting")
             .AddMeter("Microsoft.AspNetCore.Server.Kestrel")
             .AddMeter("Microsoft.AspNetCore.Http.Connections")
             .AddMeter("Microsoft.AspNetCore.Routing")
             .AddMeter("Microsoft.AspNetCore.Diagnostics")
             .AddMeter("Microsoft.AspNetCore.RateLimiting");

і т.д.

Як тільки вони ввімкнені, ви можете отримати більше інформації на панелях керування. Наприклад, я додав в шахту GC-метр, щоб показати використання пам 'яті ( і швидко відстежити випадкові витіки

Використовування пам 'яті

Кадді

Тепер ми маємо графану, яка працює. Я додав певну конфігурацію Caddy до мого Caddyfile для того, щоб показати службу Grafana зовнішньому світу.

grafana.mostlylucid.net
{
   reverse_proxy grafana:3000
}

http://grafana.mostlyucid.net
{
   redir https://{host}{uri}
}

Я показав свій Домен на цей сервер Caddy, і тепер я можу отримати доступ до графани з зовнішнього світу.

Установлення графани

Після того, як все працює, ви можете отримати доступ до графані, навігаючись до вашого веб-сайту (httpM SK2localhost;3000 при локальному запускі МSK4 у вашому веб-браузері МSK5 Заходьте, використовуючи дані, які ви встановили в файлі Docker Compose

Далі вам потрібно запустити вихідний код для Prometheus. Для цьогоM SK1 натиснути на значок передач у лівій панелі збоку, потім ще натисніть на "Źródла даних". Натиснути na МSK5Добавити вихідного коду данихМSK6 виберите | " | Prometheus | МSK8 | і сконфигуруйте URL для того, щоб показати вашому экземпляру Prometeus.

Źródło даних Прометея

Після цього, ви можете почати створювати панелі керування і візуалізувати ваші метрикиM SK1

Навігатори

Ми' використовуватимемо панелі для візуалізації показників, зібраних з нашої ASP.NET Core applicationM SK2 Ви можете створити власні панелі або импортувати наявні з репозитори графани панелі

Для цього ми - ' - використовуємо ось такі панелі

Для того, щоб додати їх до панелі, треба ввести і ввести ID панелі в поле введення. Внести таблицю

Далі вона додасть панель до вашої instance Grafana.

Тоді ми можемо зайти до цих нововвезених панелей і налаштувати їх, щоб звернути увагу на наш Prometheus вихідний код.

Це дасть вам вигляд, який ми бачили на початку статті. Для Job ви вибираєте ім 'я робота, яке ми спеціально встановили в prometheus.yml файл. У нашому випадку mostlylucid. Тоді ви маєте почати бачити, як метрики заповнюються на вашій панелі

На завершення

В цьому інструкції ми розповідали про те, як налагодити систему спостереження за вашими ASP. NET-корейними застосуваннями, використовуючи Grafana та Prometheus. Ми пройшли етапи конфігурації докеру , PrometheusMSC4 і GrafanaM SK5, а також про те як відобразити метрики з вашого ASP

Finding related posts...
logo

© 2026 Scott Galloway — Unlicense — All content and source code on this site is free to use, copy, modify, and sell.