Go (Golang) अनुप्रयोगों की निगरानी: उपकरण और लाइब्रेरी
\n\nनिगरानी किसी भी सेवा के प्रोडक्शन-संचालन का एक अभिन्न अंग है। Go (Golang) पर अनुप्रयोगों के लिए, पारिस्थितिकी तंत्र अंतर्निहित समाधान और शक्तिशाली बाहरी उपकरण दोनों प्रदान करता है। इस लेख में, हम बुनियादी प्रोफाइलिंग से लेकर मीट्रिक्स संग्रह और ट्रेसिंग तक के मुख्य दृष्टिकोणों पर चर्चा करेंगे।
\n\n1. अंतर्निहित साधन: पैकेज expvar
\nexpvar पैकेज एप्लिकेशन स्थिति चर प्रकाशित करने के लिए एक सरल HTTP एंडपॉइंट प्रदान करता है। इसे बाहरी निर्भरता की आवश्यकता नहीं है और यह त्वरित निदान के लिए आदर्श है।
कनेक्शन और उपयोग
\npackage main\n\nimport (\n "expvar"\n "net/http"\n)\n\nvar requestsCount = expvar.NewInt("total_requests")\n\nfunc handler(w http.ResponseWriter, r *http.Request) {\n requestsCount.Add(1)\n w.Write([]byte("OK"))\n}\n\nfunc main() {\n http.HandleFunc("/api", handler)\n // एंडपॉइंट /debug/vars स्वचालित रूप से उपलब्ध होगा\n http.ListenAndServe(":8080", nil)\n}\n\nस्टार्ट करने के बाद, /debug/vars पर जाएँ - आपको अनुरोध काउंटर, GC डेटा और मेमोरी सहित मीट्रिक्स के साथ JSON दिखाई देगा।
2. Prometheus — मीट्रिक्स का डी-फैक्टो मानक
\nPrometheus Go के लिए सबसे लोकप्रिय निगरानी प्रणाली है। लाइब्रेरी prometheus/client_golang आपको Prometheus सर्वर द्वारा समझे जाने वाले प्रारूप में मीट्रिक्स निर्यात करने की अनुमति देती है।
स्थापना
\ngo get github.com/prometheus/client_golang/prometheus\ngo get github.com/prometheus/client_golang/prometheus/promhttp\n\n\nउदाहरण: काउंटर और हिस्टोग्राम
\npackage main\n\nimport (\n "net/http"\n "time"\n\n "github.com/prometheus/client_golang/prometheus"\n "github.com/prometheus/client_golang/prometheus/promhttp"\n)\n\nvar (\n requestCount = prometheus.NewCounterVec(\n prometheus.CounterOpts{\n Name: "http_requests_total",\n Help: "Total number of HTTP requests",\n },\n []string{"method", "endpoint"},\n )\n requestDuration = prometheus.NewHistogramVec(\n prometheus.HistogramOpts{\n Name: "http_request_duration_seconds",\n Help: "Histogram of request durations",\n Buckets: prometheus.DefBuckets,\n },\n []string{"method"},\n )\n)\n\nfunc init() {\n prometheus.MustRegister(requestCount, requestDuration)\n}\n\nfunc handler(w http.ResponseWriter, r *http.Request) {\n start := time.Now()\n requestCount.WithLabelValues(r.Method, r.URL.Path).Inc()\n w.Write([]byte("Hello"))\n requestDuration.WithLabelValues(r.Method).Observe(time.Since(start).Seconds())\n}\n\nfunc main() {\n http.Handle("/metrics", promhttp.Handler())\n http.HandleFunc("/", handler)\n http.ListenAndServe(":8080", nil)\n}\n\nPrometheus /metrics एंडपॉइंट से मीट्रिक्स एकत्र करेगा। आप इस डेटा के आधार पर Alertmanager में अलर्ट जोड़ सकते हैं।
3. pprof के साथ प्रोफाइलिंग
\nपैकेज net/http/pprof एप्लिकेशन में CPU, मेमोरी, गोरूटीन और लॉक की प्रोफाइलिंग के लिए एंडपॉइंट जोड़ता है। यह बाधाओं को खोजने के लिए एक अपरिहार्य उपकरण है।
त्वरित प्रारंभ
\npackage main\n\nimport (\n "log"\n "net/http"\n _ "net/http/pprof" // हैंडलर पंजीकृत करता है\n)\n\nfunc main() {\n http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {\n w.Write([]byte("Hello, pprof!"))\n })\n log.Fatal(http.ListenAndServe(":6060", nil))\n}\n\nअब एंडपॉइंट उपलब्ध हैं:
\n- \n
/debug/pprof/— प्रोफाइल की सूची \n /debug/pprof/profile— CPU-प्रोफाइल \n /debug/pprof/heap— मेमोरी प्रोफाइल \n /debug/pprof/goroutine— गोरूटीन स्टैक \n
कमांड go tool pprof या vi के साथ प्रोफाइल का विश्लेषण करें
पुस्तकालय में भी
जावा एप्लिकेशन कॉन्फ़िगरेशन: सेटिंग्स प्रबंधन के लिए लाइब्रेरी और टूल्स
C++ के लिए WebSocket लाइब्रेरी: चयन और उपयोग के लिए पूर्ण गाइड
Axios — जावास्क्रिप्ट (Node.js) के लिए HTTP-क्लाइंट
जावा में तिथियों के साथ कार्य: पुस्तकालयों और उपकरणों का अवलोकन