OpenTelemetry और Prometheus के साथ C# (.NET) अनुप्रयोगों की निगरानी

शुरुआती लोगों के लिए ऑनलाइन Python प्रशिक्षक

Python आसानी से सीखें बिना सिद्धांत के बोझ के। स्वचालित जांच के साथ व्यावहारिक कार्य हल करें और ब्राउज़र में सीधे कोड लिखें।

पाठ्यक्रम शुरू करें

C# (.NET) अनुप्रयोगों की निगरानी: OpenTelemetry और Prometheus के लिए पूर्ण गाइड

\n\n

आधुनिक .NET अनुप्रयोगों को प्रदर्शन, त्रुटियों और स्थिति की निरंतर निगरानी की आवश्यकता होती है। निगरानी के बिना, आप प्रोडक्शन पर नियंत्रण खोने का जोखिम उठाते हैं। इस लेख में, हम OpenTelemetry (टेलीमेट्री संग्रह) और Prometheus + Grafana (विज़ुअलाइज़ेशन और अलर्टिंग) के संयोजन का उपयोग करके C# (.NET) अनुप्रयोगों की प्रभावी निगरानी कैसे सेट करें, यह समझेंगे।

\n\n

OpenTelemetry ही क्यों?

\n

OpenTelemetry (OTel) मेट्रिक्स, ट्रेस (ट्रेसिंग) और लॉग एकत्र करने के लिए एक उद्योग मानक है। .NET के लिए, यह आधिकारिक SDK और लोकप्रिय लाइब्रेरी (ASP.NET Core, gRPC, Entity Framework) के लिए स्वचालित इंस्ट्रूमेंटेशन प्रदान करता है।

\n\n

C# प्रोजेक्ट में OpenTelemetry की स्थापना और कॉन्फ़िगरेशन

\n

अपने प्रोजेक्ट में NuGet पैकेज जोड़ें:

\n
dotnet add package OpenTelemetry\ndotnet add package OpenTelemetry.Extensions.Hosting\ndotnet add package OpenTelemetry.Instrumentation.AspNetCore\ndotnet add package OpenTelemetry.Exporter.Prometheus.AspNetCore
\n\n

Program.cs में बेसिक कॉन्फ़िगरेशन

\n

मेट्रिक्स संग्रह और Prometheus में निर्यात सेट करें:

\n
using OpenTelemetry.Metrics;\nusing OpenTelemetry.Resources;\n\nvar builder = WebApplication.CreateBuilder(args);\n\nbuilder.Services.AddOpenTelemetry()\n    .ConfigureResource(resource => resource\n        .AddService("MyApp", serviceVersion: "1.0.0"))\n    .WithMetrics(metrics => metrics\n        .AddAspNetCoreInstrumentation()\n        .AddHttpClientInstrumentation()\n        .AddMeter("Microsoft.AspNetCore.Hosting")\n        .AddMeter("Microsoft.AspNetCore.Server.Kestrel")\n        .AddPrometheusExporter());\n\nvar app = builder.Build();\n\n// Prometheus के लिए एंडपॉइंट (डिफ़ॉल्ट /metrics)\napp.MapPrometheusScrapingEndpoint();\n\napp.Run();
\n\n

कस्टम मेट्रिक्स बनाना

\n

आप अपने स्वयं के काउंटर, हिस्टोग्राम और गेज जोड़ सकते हैं:

\n
using System.Diagnostics.Metrics;\n\npublic class OrderMetrics\n{\n    private readonly Counter<int> _ordersCreated;\n    private readonly Histogram<double> _orderProcessingTime;\n\n    public OrderMetrics(IMeterFactory meterFactory)\n    {\n        var meter = meterFactory.Create("MyApp.Orders");\n        _ordersCreated = meter.CreateCounter<int>("orders.created", description: "बनाए गए ऑर्डर की संख्या");\n        _orderProcessingTime = meter.CreateHistogram<double>("orders.processing_time", unit: "ms");\n    }\n\n    public void RecordOrderCreated() => _ordersCreated.Add(1);\n    public void RecordProcessingTime(double ms) => _orderProcessingTime.Record(ms);\n}
\n\n

अनुरोध ट्रेसिंग (Distributed Tracing)

\n

कॉल श्रृंखलाओं को ट्रैक करने के लिए ट्रेसिंग जोड़ें:

\n
using OpenTelemetry.Trace;\n\nbuilder.Services.AddOpenTelemetry()\n    .WithTracing(tracing => tracing\n        .AddAspNetCoreInstrumentation()\n        .AddHttpClientInstrumentation()\n        .AddEntityFrameworkCoreInstrumentation()\n        .AddConsoleExporter());  // डिबगिंग के लिए, प्रोडक्शन में — Jaeger या Zipkin
\n\n

OpenTelemetry के माध्यम से लॉगिंग

\n

लॉगर को OTel से कनेक्ट करें:

\n
using OpenTelemetry.Logs;\n\nbuilder.Logging.AddOpenTelemetry(logging => logging\n    .AddConsoleExporter()\n    .AddOtlpExporter(options => options.Endpoint = new Uri("http://localhost:4317")));
\n\n

मेट्रिक्स संग्रह के लिए Prometheus कॉन्फ़िगरेशन

\n

prometheus.yml फ़ाइल में अपना एंडपॉइंट निर्दिष्ट करें:

\n
scrape_configs:\n  - job_name: 'dotnet-app'\n    scrape_interval: 5s\n    static_configs:\n      - targets: ['localhost:5000']  # आपके एप्लिकेशन का पोर्ट
\n\n

Grafana में विज़ुअलाइज़ेशन

\n

Prometheus को Grafana से कनेक्ट करने के बाद, मुख्य मेट्रिक्स के साथ एक डैशबोर्ड बनाएं:

\n

अनुशंसाएँ