C# (.NET) अनुप्रयोगों की निगरानी: OpenTelemetry और Prometheus के लिए पूर्ण गाइड
\n\nआधुनिक .NET अनुप्रयोगों को प्रदर्शन, त्रुटियों और स्थिति की निरंतर निगरानी की आवश्यकता होती है। निगरानी के बिना, आप प्रोडक्शन पर नियंत्रण खोने का जोखिम उठाते हैं। इस लेख में, हम OpenTelemetry (टेलीमेट्री संग्रह) और Prometheus + Grafana (विज़ुअलाइज़ेशन और अलर्टिंग) के संयोजन का उपयोग करके C# (.NET) अनुप्रयोगों की प्रभावी निगरानी कैसे सेट करें, यह समझेंगे।
\n\nOpenTelemetry ही क्यों?
\nOpenTelemetry (OTel) मेट्रिक्स, ट्रेस (ट्रेसिंग) और लॉग एकत्र करने के लिए एक उद्योग मानक है। .NET के लिए, यह आधिकारिक SDK और लोकप्रिय लाइब्रेरी (ASP.NET Core, gRPC, Entity Framework) के लिए स्वचालित इंस्ट्रूमेंटेशन प्रदान करता है।
\n\nC# प्रोजेक्ट में OpenTelemetry की स्थापना और कॉन्फ़िगरेशन
\nअपने प्रोजेक्ट में NuGet पैकेज जोड़ें:
\ndotnet add package OpenTelemetry\ndotnet add package OpenTelemetry.Extensions.Hosting\ndotnet add package OpenTelemetry.Instrumentation.AspNetCore\ndotnet add package OpenTelemetry.Exporter.Prometheus.AspNetCore\n\nProgram.cs में बेसिक कॉन्फ़िगरेशन
\nमेट्रिक्स संग्रह और Prometheus में निर्यात सेट करें:
\nusing 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आप अपने स्वयं के काउंटर, हिस्टोग्राम और गेज जोड़ सकते हैं:
\nusing 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कॉल श्रृंखलाओं को ट्रैक करने के लिए ट्रेसिंग जोड़ें:
\nusing OpenTelemetry.Trace;\n\nbuilder.Services.AddOpenTelemetry()\n .WithTracing(tracing => tracing\n .AddAspNetCoreInstrumentation()\n .AddHttpClientInstrumentation()\n .AddEntityFrameworkCoreInstrumentation()\n .AddConsoleExporter()); // डिबगिंग के लिए, प्रोडक्शन में — Jaeger या Zipkin\n\nOpenTelemetry के माध्यम से लॉगिंग
\nलॉगर को OTel से कनेक्ट करें:
\nusing OpenTelemetry.Logs;\n\nbuilder.Logging.AddOpenTelemetry(logging => logging\n .AddConsoleExporter()\n .AddOtlpExporter(options => options.Endpoint = new Uri("http://localhost:4317")));\n\nमेट्रिक्स संग्रह के लिए Prometheus कॉन्फ़िगरेशन
\nprometheus.yml फ़ाइल में अपना एंडपॉइंट निर्दिष्ट करें:
scrape_configs:\n - job_name: 'dotnet-app'\n scrape_interval: 5s\n static_configs:\n - targets: ['localhost:5000'] # आपके एप्लिकेशन का पोर्ट\n\nGrafana में विज़ुअलाइज़ेशन
\nPrometheus को Grafana से कनेक्ट करने के बाद, मुख्य मेट्रिक्स के साथ एक डैशबोर्ड बनाएं:
\n- \n
- http_server_duration_ms — सर्वर प्रतिक्रिया समय \n
पुस्तकालय में भी
Go (Golang) में प्राधिकरण और प्रमाणीकरण: JWT, OAuth2 और सत्र
TypeScript पर SMS भेजना: API लाइब्रेरीज़ और एकीकरण
C# (.NET) के लिए WebSocket लाइब्रेरीज़: SignalR, WebSocket4Net और System.Net.WebSockets क्लाइंट
Chai JavaScript (Node.js): पूर्ण गाइड उदाहरणों के साथ
Kivy: क्रॉस-प्लेटफ़ॉर्म GUI डेवलपमेंट फ्रेमवर्क
अनुशंसाएँ