C# (.NET) में Prometheus मेट्रिक्स: पूर्ण एकीकरण गाइड
Prometheus एक ओपन-सोर्स मॉनिटरिंग सिस्टम है जो टाइम-सीरीज़ के रूप में मेट्रिक्स इकट्ठा और स्टोर करता है। C# (.NET) डेवलपर्स के लिए, Prometheus के साथ एकीकरण आपको रियल-टाइम में ऐप परफॉरमेंस, बिज़नेस मेट्रिक्स और सिस्टम हेल्थ को ट्रैक करने की सुविधा देता है। इस आर्टिकल में हम जानेंगे कि .NET ऐप में Prometheus कैसे कनेक्ट करें, कौन सी लाइब्रेरी इस्तेमाल करें और मेट्रिक्स को सही तरीके से कैसे कॉन्फ़िगर करें।
.NET में Prometheus मेट्रिक्स की ज़रूरत क्यों?
Prometheus के साथ मॉनिटरिंग से आप ये कर सकते हैं:
- रिक्वेस्ट काउंट, एरर और रिस्पॉन्स टाइम ट्रैक करना।
- परफॉरमेंस मेट्रिक्स (CPU, मेमोरी, GC) इकट्ठा करना।
- कस्टम बिज़नेस मेट्रिक्स बनाना (एक्टिव यूज़र्स, ऑर्डर)।
- डैशबोर्ड विज़ुअलाइज़ेशन के लिए Grafana से इंटीग्रेट करना।
- थ्रेशोल्ड वैल्यू के आधार पर अलर्ट सेट करना।
prometheus-net लाइब्रेरी
.NET में Prometheus के लिए मुख्य लाइब्रेरी prometheus-net है। यह ASP.NET Core, .NET Core, .NET Framework और gRPC को सपोर्ट करती है। NuGet से इंस्टॉल करें:
dotnet add package prometheus-net
ASP.NET Core के लिए अतिरिक्त पैकेज:
dotnet add package prometheus-net.AspNetCore
Prometheus में मेट्रिक प्रकार
लाइब्रेरी सभी स्टैंडर्ड मेट्रिक प्रकारों को सपोर्ट करती है:
- Counter — केवल बढ़ने वाला काउंटर (रिक्वेस्ट की संख्या)।
- Gauge — वैल्यू जो बढ़ और घट सकती है (वर्तमान तापमान)।
- Histogram — वैल्यू डिस्ट्रीब्यूशन मापने के लिए हिस्टोग्राम (रिस्पॉन्स टाइम)।
- Summary — डेटा एग्रीगेशन के लिए क्वांटाइल (p95, p99)।
उदाहरण: बेसिक Counter
एक मेट्रिक बनाएं जो एंडपॉइंट पर रिक्वेस्ट गिनती है:
using Prometheus;
public class MetricsService
{
private static readonly Counter RequestCount = Metrics
.CreateCounter("app_requests_total", "Total number of requests", new CounterConfiguration
{
LabelNames = new[] { "method", "endpoint" }
});
public void RecordRequest(string method, string endpoint)
{
RequestCount.WithLabels(method, endpoint).Inc();
}
}
ASP.NET Core कंट्रोलर में इस तरह कॉल करें:
[ApiController]
[Route("api/order")]
public class OrderController : ControllerBase
{
private readonly MetricsService _metrics;
public OrderController(MetricsService metrics) => _metrics = metrics;
[HttpGet]
public IActionResult GetOrders()
{
_metrics.RecordRequest("GET", "/api/order");
return Ok(new { orders = new[] { "order1", "order2" } });
}
}
उदाहरण: एक्टिव यूज़र्स के लिए Gauge
private static readonly Gauge ActiveUsers = Metrics
.CreateGauge("app_active_users", "Number of active users");
public void UserLoggedIn() => ActiveUsers.Inc();
public void UserLoggedOut() => ActiveUsers.Dec();
उदाहरण: रिस्पॉन्स टाइम के लिए Histogram
private static readonly Histogram RequestDuration = Metrics
.CreateHistogram("app_request_duration_seconds", "Request duration in seconds",
new HistogramConfiguration
{
Buckets = Histogram.ExponentialBuckets(0.001, 2, 10) // 1ms से ~1s तक
});
public void RecordRequestDuration(double seconds)
{
RequestDuration.Observe(seconds);
}
ASP.NET Core में मेट्रिक्स एक्सपोर्ट करना
Prometheus को मेट्रिक्स इकट्ठा करने के लिए /metrics एंडपॉइंट जोड़ें। Program.cs में:
using Prometheus;
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddControllers();
var app = builder.Build();
// .NET स्टैंडर्ड मेट्रिक्स (मेमोरी, CPU) और कस्टम मेट्रिक्स को इनेबल करें
app.UseHttpMetrics(); // HTTP रिक्वेस्ट मेट्रिक्स
app.MapMetrics(); // /metrics एंडपॉइंट
app.MapControllers();
app.Run();
Grafana के साथ विज़ुअलाइज़ेशन
एक बार मेट्रिक्स एक्सपोर्ट हो जाएं, तो Grafana में Prometheus को डेटा स्रोत के रूप में जोड़ें और डैशबोर्ड बनाएं। उदाहरण के लिए, app_requests_total मेट्रिक्स को Grafana में क्वेरी करें:
rate(app_requests_total[5m])
इससे आप रियल-टाइम में रिक्वेस्ट रेट देख सकते हैं और अलर्ट सेट कर सकते हैं।
निष्कर्ष
Prometheus को C# (.NET) में एकीकृत करना आसान है और यह आपके ऐप की परफॉरमेंस और हेल्थ को ट्रैक करने का एक शक्तिशाली तरीका है। prometheus-net लाइब्रेरी के साथ, आप कुछ ही मिनटों में मेट्रिक्स सेट कर सकते हैं और Grafana के साथ विज़ुअलाइज़ कर सकते हैं। आज ही अपने .NET प्रोजेक्ट में Prometheus जोड़ें और मॉनिटरिंग को अगले लेवल पर ले जाएं!
पुस्तकालय में भी
Redis क्लाइंट C# (.NET) के लिए: StackExchange.Redis — कनेक्शन और उदाहरण
Rust में तिथियों के साथ कार्य: समय और कैलेंडर के लिए लाइब्रेरियों का अवलोकन
C# (.NET) पर PDF रिपोर्ट जनरेशन: iTextSharp, QuestPDF, PDFsharp
Go में PDF रिपोर्ट जनरेशन: लाइब्रेरीज़ का अवलोकन और कोड उदाहरण
Swift में YAML का उपयोग: Yams लाइब्रेरी iOS/macOS