Back to "باستخدام رافانا وبروميثيوس لمراقبة تطبيقات ASP.NET Core 8+"

This is a viewer only at the moment see the article on how this works.

To update the preview hit Ctrl-Alt-R (or ⌘-Alt-R on Mac) or Enter to refresh. The Save icon lets you save the markdown file to disk

This is a preview from the server running through my markdig pipeline

ASP.NET Docker Grafana Prometheus

باستخدام رافانا وبروميثيوس لمراقبة تطبيقات ASP.NET Core 8+

Wednesday, 18 September 2024

المقدمة

المراقبة هي جزء أساسي في الحفاظ على صحة وأداء تطبيقاتكم. لدي بالفعل هذا الموقع يراقب زيارة المستخدم باستخدام أومامي و الاستثناءات و الأخطاء باستخدام سيك لكن الآن أردت إضافة مراقبة الأداء إلى المزج. في هذا ال guide, سنستكشف كيفية إعداد المراقبة لتطبيقات ASP.NET Core باستخدام Grafana و PrometheusM SK2

يمكنك بالطبع استخدام خدمة الـ Grafana Cloud , لكن في هذا النصيحة , سوف نركز على وضع كل شيء محلياً بحيث يكون لديكم التحكم الكامل في كومتك المراقبة

الهدف هو الحصول على لوحة مفاتيح كهذه

لوحة رسم Grafana

الدوكر

كما هو الحال في هذا الموقع، أردت أن أضيف عناصر Grafana وPrometheus إلى ملف البرمجة الخاص بي.

هنا يمكنكم رؤية أنني أقوم بإعداد خدمات prometheus و grafana.

برمجة دوتنه الدوكر

  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:

سوف ترون أنني أقوم بإعداد كلمة مرور تلقائية (تأكدوا وتغييرها في البداية !). قمت أيضاً بتشغيلها لتدوير تلقائياً

أنت ' سألاحظ أنني لا أملك ' لا أرسم أي محطات هنا | , | أنا |' | سأستخدم Caddy لإيجاد الوصول إلى خدمة Grafana وPrometheus متاح فقط من خلال شبكة الدوكر |

بوابات إختيارية للتشغيل محليا

إذا أردت يمكنك إضافة

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

والذي يمكن أن يكون مفيدا إذا كنتم ' تعملون محلياً. لاحظوا أنه في وينډوز يمكنكم تشغيل تطبيقكم في IDEكم وتستخدمون | `' | Host |. | Docker | . | Internal |:7240' | | MSIK6 | أي منفذ | MSNC7 | ليتمكنوا من الوصول إلى تطبيقكم من خلال الحواسيب

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

Konfiguration Prometheus

ثم نضيف شيئا جديدا prometheus.yml File to configure Prometheus to scrape metrics from our ASP.NET Core application

global:
  scrape_interval: 15s

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

هنا ترون أنني أستخدم الاسم الداخلي mostlulucid الذي هو اسم خدمة الدوكر خاصتي و هو ' منفذ تلقائي من 8080. سأقوم بتغطية كيفية تشغيل هذا في ASP

ASP.NET التطبيق الأساسي

لقد تابعت التعليمات موجودة هنا لإعداد هذا.

في البداية تحتاج إلى إضافة OpenTelemetry.Exporter.Prometheus.AspNetCore حزمة NuGet لمشروعك ASP.NET Core. يمكنك القيام بذلك عن طريق تنفيذ الأوامر التالية في مجلد المشروع

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 و Kestrel .

تحديث

لقد قضيت بعض الوقت في الخلط مع . هذه ميزة جديدة في | . | NET |8 و مازالت قليلاً متدهورة كما يبدو | . . التكوين السابق يعطي الميزات الأساسية التي تحتاجها لرسم لوحة مفاتيح ASP | مSK4 |NET لكن هناك | المSK5 . المزيد من المعلومات يمكنك أن تنقلها لـ Prometheus |

أولاً آخر إصدار من OpenTelemetry.Exporter.PrometheusM SK2AspNetCore يبدو أكثر استقراراً من الإصدار التجريبي MSC3 version (at the time of writing at least

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");

etc.

وبمجرد تشغيلها يمكنك الحصول على المزيد من المعلومات في لوحات المفاتيح على سبيل المثال، قمت بإضافة مقياس GC في المناجم لإظهار استخدام الذاكرة (وبحث سريعاً عن التسريبات المتذكرة ).

استخدام الذاكرة

Caddy

الآن لدينا رافانا يعملون أضفت بعض إعدادات Caddy إلى ملف Caddy لعرض خدمة Grafana للعالم الخارجي.

grafana.mostlylucid.net
{
   reverse_proxy grafana:3000
}

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

لقد أشيرت لドメインي إلى هذا сервер Caddy والآن يمكنني الوصول إلى Grafana من العالم الخارجي.

إعداد Grafana

بمجرد أن يكون لديك كل شيء يعمل, يمكنك الوصول إلى Grafana عن طريق التصفح إلى موقعك (httpM SK2localhost ;3000 إذا كان يعمل محلياًMSC4 في متصفحك للويبMスク5 ننشئ باستخدام الإختبارات التي وضعتها في ملف "دوكر Compose" الخاص بكMسک6

عندها تحتاج إلى إعداد مصدر بيانات لـ Prometheus. لتفعل ذلك, أضغط على រូបតំណាង المحركات في الجهة اليسرى السفليةM SK2 ثم أضغط علي " مصادر البياناتMSC4 أចុច على MST5 أضيف مصدر البيانات MST6 أختار | MST7 | Promethus | SST8 | وضبط URL ليشير إلى مثال Prometeus الخاص بك |MST9 | http | MSST10 | prometheous | SMST11 | إذا كان يعمل محلياً |MSST12

مصدر بيانات Prometheus

بعد ذلك , يمكنك البدء في إنشاء لوحات المفاتيح وتصوير مقاييسك

لوحات الجدول

سوف نستخدم لوحات المفاتيح لرؤية القياسات التي تم جمعها من برنامجنا ASP

لهذا سوف نستخدم ' لوحات المفاتيح التالية

لإضافة هذه حصلت على لوحات المفاتيح->جديدة->إيورد ولصق رقم لوحة المفاتح في حقل الإيورد إدخال لوحة الجدول

هذا سيقوم بعد ذلك بإضافة لوحة المفاتيح إلى نموذج Grafana.

عندها يمكننا الذهاب إلى لوحات المفاتيح الجديدة التي تم تصديرها ووضعها لتحديد مصدر بيانات Prometheus

هذا سيعطيكم المنظور الذي رأيناه في بداية المقال Job ستختارون اسم الوظيفة التي وضعناها تحديداً في prometheus.yml File. في حالتنا mostlylucid. عندها يجب أن تبدأ في رؤية القياسات تتجمع في لوحة المفاتيح

في الختام

في هذا المرشد, غطينا كيفية وضع المراقبة لتطبيقات ASP.NET Core باستخدام Grafana وPrometheusM SK2 ذهبنا خلال الخطوات لإعداد DockerMSC3 PrometheuseMST4 و GrafanaMst5 كما وضحنا كيفية كشف القياسات من تطبيق ASP MST6NET coreM st7 مع هذا الإعدادMSt8 يمكنك الآن مراقبة أداء تطبيقاتك وتحصل على لمحات قيمة في سلوكهاMstr9 مراقبة سعيدةMtr10

logo

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