مقاييس Prometheus في C# (.NET) — مكتبة prometheus-net

مدرب بايثون أونلاين للمبتدئين

تعلم Python بسهولة دون إرهاق نظري. حل مهام عملية مع التحقق التلقائي واكتب الكود مباشرة في المتصفح.

ابدأ الدورة

مقاييس Prometheus في C# (.NET) — مكتبة prometheus-net



في التطوير الحديث لتطبيقات الويب والخدمات المصغرة على منصة .NET، أصبحت المراقبة وقابلية الملاحظة (observability) عناصر إلزامية في بيئة الإنتاج. مكتبة prometheus-net هي مكتبة العميل الرسمية لـ .NET، والتي تتيح تصدير مقاييس التطبيق بسهولة بتنسيق يفهمه خادم المراقبة Prometheus.



باستخدام prometheus-net، يمكنك جمع بيانات الأداء (وقت الاستجابة، عدد الطلبات، الأخطاء، استخدام الذاكرة) ونقلها إلى Prometheus لعرضها لاحقًا في Grafana أو أدوات أخرى. تدعم المكتبة كلاً من الإصدارات القديمة من .NET Framework (4.6.1+) والإصدارات الحديثة .NET Core / .NET 5/6/7/8.



التثبيت

يمكن تثبيت المكتبة عبر NuGet Package Manager أو باستخدام .NET CLI:

dotnet add package prometheus-net

لتطبيقات ASP.NET Core، يلزم أيضًا حزمة prometheus-net.AspNetCore:

dotnet add package prometheus-net.AspNetCore


الأنواع الرئيسية للمقاييس

يدعم Prometheus أربعة أنواع رئيسية من المقاييس. في prometheus-net، يتم تنفيذها كمصانع ثابتة في الفئة Metrics:

  • Counter — عداد يمكنه فقط الزيادة (مثل عدد الطلبات المعالجة).
  • Gauge — مقياس يمكنه الزيادة والنقصان (مثل عدد الاتصالات النشطة أو درجة الحرارة الحالية).
  • Histogram — رسم بياني يحسب عدد الملاحظات في فترات زمنية محددة (buckets). يُستخدم لقياس توزيع وقت الاستجابة أو حجم البيانات.
  • Summary — مقياس إجمالي يحسب الشرائح المئوية (p50, p95, p99) بناءً على تدفق الملاحظات.


مثال على استخدام Counter

لنقم بإنشاء عداد بسيط لحساب عدد طلبات HTTP المعالجة:

using Prometheus;

// إنشاء عداد باسم ووصفprivate static readonly Counter RequestCount = Metrics .CreateCounter("myapp_requests_total", "Total number of HTTP requests.");

// في معالج الطلب، نزيد العدادpublic IActionResult Index(){ RequestCount.Inc(); // زيادة بمقدار 1 // أو RequestCount.Inc(5); // زيادة بمقدار 5 return View();}


مثال على استخدام Gauge

Gauge مفيد لتتبع الحالة الحالية، مثل عدد المستخدمين النشطين:

private static readonly Gauge ActiveUsers = Metrics    .CreateGauge("myapp_active_users", "Number of active users.");

// عند دخول المستخدمActiveUsers.Inc();

// عند خروج المستخدمActiveUsers.Dec();


مثال على استخدام Histogram

الرسم البياني مثالي لقياس وقت تنفيذ الطلبات:

private static readonly Histogram RequestDuration = Metrics    .CreateHistogram("myapp_request_duration_seconds",                      "Histogram of request duration.",                     new HistogramConfiguration                     {                         // تكوين حدود buckets                         Buckets = new[] { 0.1, 0.25, 0.5, 1.0, 2.5 }                     });

// في middleware أو في إجراء المتحكمusing (RequestDuration.NewTimer()){ // تنفيذ الطلب await Next(context);}


التكامل مع ASP.NET Core

لكي يبدأ نقطة النهاية /metrics في تقديم البيانات بتنسيق Prometheus، يكفي إضافة middleware في Program.cs:

using Prometheus;

var builder = WebApplication.CreateBuilder(args);var app = builder.Build();

// إضافة middleware لجمع الـ

توصيات