Go (Golang) अनुप्रयोग निगरानी: पुस्तकालय और उपकरण

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

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

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

Go (Golang) अनुप्रयोग निगरानी: मीट्रिक्स से प्रोफाइलिंग तक



Go (Golang) — उच्च-लोड सर्वर अनुप्रयोगों के लिए बनाई गई भाषा। हालांकि, सबसे कुशल कोड में भी विफलताएं, मेमोरी लीक या अनुचित रूप से उच्च विलंबता हो सकती है। निगरानी के बिना, आपको समस्या के बारे में केवल नाराज उपयोगकर्ताओं से पता चलने का जोखिम है। इस लेख में, हम Go अनुप्रयोगों की निगरानी के लिए प्रमुख पुस्तकालयों और उपकरणों पर चर्चा करेंगे: मीट्रिक्स संग्रह से लेकर ट्रेसिंग और प्रोफाइलिंग तक।



Go अनुप्रयोग की निगरानी क्यों करें?

  • प्रदर्शन: प्रतिक्रिया समय, गोरूटीन की संख्या, CPU और मेमोरी उपयोग पर नज़र रखना।
  • विश्वसनीयता: त्रुटियों, पैनिक, पुनरारंभ की संख्या को नियंत्रित करना।
  • स्केलिंग: यह समझना कि कब अधिक रेप्लिका जोड़ने की आवश्यकता है।
  • व्यावसायिक मीट्रिक्स: अनुरोधों की संख्या, सक्रिय उपयोगकर्ता, संसाधित डेटा की मात्रा।


1. अंतर्निहित पैकेज expvar

सबसे सरल तरीका expvar है। यह बुनियादी मीट्रिक्स के साथ एक HTTP एंडपॉइंट प्रदान करता है: गोरूटीन की संख्या, मेमोरी उपयोग, अपटाइम। त्वरित शुरुआत के लिए उपयुक्त।

package main

import ( "expvar" "net/http")

var requestCount = expvar.NewInt("requests_total")

func handler(w http.ResponseWriter, r *http.Request) { requestCount.Add(1) w.Write([]byte("Hello, Go!"))}

func main() { http.HandleFunc("/", handler) // मीट्रिक्स /debug/vars पते पर उपलब्ध हैं http.ListenAndServe(":8080", nil)}

अनुप्रयोग चलाएँ और http://localhost:8080/debug/vars खोलें — आपको मीट्रिक्स के साथ JSON दिखाई देगा।



2. Prometheus + prometheus/client_golang

Prometheus Go में मीट्रिक्स संग्रह के लिए डी-फैक्टो मानक है। prometheus/client_golang लाइब्रेरी आपको कस्टम मीट्रिक्स पंजीकृत करने की अनुमति देती है: काउंटर, हिस्टोग्राम, सारांश।

package main

import ( "net/http" "github.com/prometheus/client_golang/prometheus" "github.com/prometheus/client_golang/prometheus/promhttp")

var ( httpRequests = prometheus.NewCounterVec( prometheus.CounterOpts{ Name: "http_requests_total", Help: "Total number of HTTP requests.", }, []string{"method", "path"}, ))

func init() { prometheus.MustRegister(httpRequests)}

func handler(w http.ResponseWriter, r *http.Request) { httpRequests.WithLabelValues(r.Method, r.URL.Path).Inc() w.Write([]byte("OK"))}

func main() { http.HandleFunc("/", handler) http.Handle("/metrics", promhttp.Handler()) http.ListenAndServe(":8080", nil)}

/metrics एंडपॉइंट डेटा को उस प्रारूप में प्रस्तुत करता है जिसे Prometheus समझता है। इसके बाद आप Grafana में डैशबोर्ड कॉन्फ़िगर कर सकते हैं।



3. pprof के साथ प्रोफाइलिंग

net/http/pprof पैकेज प्रोफाइलिंग के लिए एंडपॉइंट जोड़ता है: CPU, मेमोरी, लॉक, गोरूटीन। यह बाधाओं को खोजने के लिए एक अपरिहार्य उपकरण है।

package main

import ( "net/http" _ "net/http/pprof" // प्रोफाइलर कनेक्ट करें)

func main() { http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) { w.Write([]byte("प्रोफाइलिंग सक्रिय है")) }) http.ListenAndServe(":6060", nil)}

अब आप चला सकते हैं:

go tool pprof http://localhost:6060/debug/pprof/profile?seconds=30

यह 30 सेकंड का CPU प्रोफाइल एकत्र करेगा। इंटरैक्टिव मोड में इसका विश्लेषण करें या SVG/PDF में निर्यात करें।



4. OpenTelemetry — ट्रेसिंग और मीट्रिक्स

OpenTelemetry (OTel) अवलोकनीयता के लिए आधुनिक मानक है। यह मीट्रिक्स, लॉग और ट्रेस को जोड़ता है। Go के लिए आधिकारिक SDK go.opentelemetry.io/otel है।

package main

import ( "context" "log" "net/http" "go.opentelemetry.io

अनुशंसाएँ