Back to "استخدام غرافانا وبروميثيوس لرصد تطبيقات ASP.net الأساسية 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 الأساسية 8+

Wednesday, 18 September 2024

أولاً

يعتبر الرصد جزءاً أساسياً من الحفاظ على صحة وأداء طلباتك. لديّ بالفعل هذا الموقع لمراقبة زيارات المستخدم ما قبل ما ما قبل ما ما قبل والاستثناءات والأخطاء التكسس ولكن الآن أردت أن أضيف رصد الأداء إلى المزيج. وفي هذا الدليل، سوف نستكشف كيفية إنشاء رصد لتطبيقاتكم الأساسية لشبكة ASP.NET باستخدام Grafana and Prometheus.

يمكنك بطبيعة الحال استخدام خدمة Grafana سحابة، ولكن لهذا الدليل، سوف نركز على وضع كل شيء محليا حتى تتمكن من السيطرة الكاملة على كومة الرصد الخاص بك.

الهدف هو الحصول على لوحة قيادة شيء من هذا القبيل:

SAA

مُصد مُصد مُصد مُكر

كالمعتاد مع هذا الموقع أردت أن أضيف عناصر Grafana و Prometheus إلى ملفي المؤلف Doker، هذا يسمح لي بتدوير كل شيء صعوداً وهبوطاً في أمر واحد وإبقائه مغلفاً.

هنا يمكنكم أن تروا أني أعددت خدمات (بروميثيوس) و (غرافانا) هذه تستخدم تطبيقي المشترك و لديها أحجام من الضباب لتثبيت البيانات.

تنفيذ

  prometheus:
    image: prom/prometheus:latest
    container_name: prometheus
    volumes:
      - ./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:

سترى أنني وضعت كلمة سر افتراضية (كن متأكدا وتغيير هذا على أول تشغيل!) وقد مكَّنتهم ايضا من تحديث برج المراقبة تلقائيا.

ستلاحظون أنني لا أرسم خرائط لأي موانئ هنا، سأستخدم (كادي) لتوفير الوصول إلى خدمة (غرافانا) و (بروميثيوس) يمكن الوصول إليه فقط من داخل شبكة (دوكر)

المنافذ الاختيارية للركض المحلي

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

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

التي يمكن أن تكون مفيدة إذا كنت تجري محليا. ملاحظة في ويندوز يمكنك تشغيل تطبيقك في التصنيف الوسيطي للتصنيف الخاص بك واستخدام ''host.docker. internal: 7240' (أياً كان الميناء) للوصول إلى تطبيقك من داخل الحاوية. أنت أيضاً ستحدد شبكة "بريدج" في ملفك المدمج مثل هذا.

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

مُكون

ثم نضيف مجموعة جديدة prometheus.yml إلى أَعِدّ بروميثيوس إلى كشط من ASP.net أساس تطبيق. وهذا مثال اساسي لما قد يبدو عليه هذا الملف :

global:
  scrape_interval: 15s

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

هنا رأيت أني استخدم الاسم الداخلي mostlulucid وهو اسم خدمة الدوكر وهو ميناء افتراضي من 8080. أنا سَأَغطّي كَمْ أنت تُمكّنُ هذا في ASP.net يَكُونُ قريباً.

التطبيق الأساسي الصافي

تابعت: أولاً- مقدمة أولاً- مقدمة لوضع هذا الأمر.

عليك أولاً أن تضيف OpenTelemetry.Exporter.Prometheus.AspNetCore Nu get حزمة إلى 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();

هذا هو نقطة النهاية والبيانات لـ بروميثيوس إلى كشط و set إثنان Metter التي توفّر أداء البيانات لـ ASP.NET أساسي و Kestreel.

& & جديد

قضيت بعض الوقت أعبث معه هذه سمة جديدة في NET 8 ولا تزال متقلبة بعض الشيء كما يبدو. الـ الأعلى يعطي خصائص لـ aSP.net لـ متابعة لكن هناك المزيد معلومات إلى بروميثيوس.

المصدر. Prometheus. AspNetCor يبدو أنه أكثر استقراراً من نسخة بيتا 1 (في وقت الكتابة على الأقل). لذا أوصيك باستخدام ذلك.

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 أساسي.

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

وما إلى ذلك

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

أُعد

الآن لدينا (جرافانا) تعمل لقد أضفت بعض تشكيلات (كادي) إلى كاديفي لفضح خدمة (جرافانا) للعالم الخارجي

grafana.mostlylucid.net
{
   reverse_proxy grafana:3000
}

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

أشرتُ إلى نطاقي إلى هذا الخادمِ Cady والآن أنا يُمْكِنُ أَنْ أَصِلَ إلى Grafana مِنْ العالمِ الخارجيِ.

إعداد التهيئة

عندما يكون لديك كل شيء تشغيل، يمكنك الوصول إلى Grafana من خلال التصفح إلى url الخاص بك (http://locasthost; 3000 إذا كان يجري محليا) في متصفح الويب الخاص بك. سجل في استخدام الإعتمادات التي وضعتها في ملف Dokker Compus الخاص بك.

ثم تحتاج إلى إنشاء مصدر بيانات لبروميثيوس. للقيام بهذا، انقر على أيقونة التروس في الضلع الأيسر، ثم انقر على "مصادر Data". انقر على "مصدر بيانات الاضافة"، اختر "prometheus"، واضبط URL للإشارة إلى حالة بروميثيوس (http://prometheus:9090 إذا كانت تعمل محلياً).

مصدر البيانات

بعد ذلك، يمكنك أن تبدأ في إنشاء الواجهات و تصور قياساتك!

سندس

سنستخدم لوحة القياسات لتصور المقاييس التي تم جمعها من تطبيقنا الأساسي يمكنك إنشاء لوحة التحكم الخاصة بك أو استيراد الموجود منها من مستودع Grafana.

لهذا سنستخدم الملاحق التالية

لإضافة هذه إلى Dashboards->New->Import و لصق هوية لوحة القيادة في حقل الاستيراد.

هذا سيضيف بعد ذلك اللوحة إلى حالة غرافانا الخاصة بك.

ثم يمكننا الذهاب إلى تلك اللمبات المستوردة حديثاً ونجهزها لنشير إلى مصدر بيانات بروميثيوس لدينا.

وينبغي ان يعطيك هذا الرأي الذي رأيناه في بداية المقالة. (أ) Job أنت تحديد الاسم من الحالي نحن مُعَدّون في prometheus.yml ملف ملفّيّاً. في حالتنا mostlylucid/ / / / إذاً يجب أن تبدأ برؤية القياسات في لوحة القيادة!

في الإستنتاج

في هذا الدليل، قمنا بتغطية كيفية إنشاء عملية رصد لتطبيقاتك الأساسية لـ ASP.NET باستخدام Grafana و Prometheus. ذهبنا من خلال خطوات تشكيل Docker، Prometheus، و Grafana، فضلا عن كيفية الكشف عن المقاييس من تطبيق ASP.NET الأساسي الخاص بك. مع هذا الإعداد، يمكنك الآن مراقبة أداء تطبيقاتك والحصول على أفكار قيمة في سلوكهم. مراقبة سعيدة!

logo

©2024 Scott Galloway