Go अनुप्रयोगों की निगरानी: उन्नत स्तर पर मेट्रिक्स और अलर्ट

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

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

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

Go-अनुप्रयोगों की उन्नत निगरानी: मेट्रिक्स से अलर्ट तक

\n\n

Go (Golang) में आधुनिक विकास में, बुनियादी लॉगिंग और Health Check पर्याप्त नहीं हैं। Production-सिस्टम के लिए गहन observability की आवश्यकता होती है: कस्टम मेट्रिक्स का संग्रह, उनका Prometheus में निर्यात, Grafana में विज़ुअलाइज़ेशन और स्वचालित अलर्ट। इस लेख में हम Go-अनुप्रयोगों की निगरानी के उन्नत स्तर पर चर्चा करेंगे — मेट्रिक्स आर्किटेक्चर से लेकर व्यावसायिक तर्क पर आधारित अलर्ट के कॉन्फ़िगरेशन तक।

\n\n

निगरानी आर्किटेक्चर: Prometheus + Go

\n\n

Go के लिए मानक निगरानी स्टैक में शामिल हैं:

\n
    \n
  • Prometheus — मेट्रिक्स संग्रह और भंडारण प्रणाली (pull-मॉडल)।
  • \n
  • Prometheus का Go-क्लाइंट (prometheus/client_golang) — मेट्रिक्स निर्यात के लिए लाइब्रेरी।
  • \n
  • Grafana — डैशबोर्ड का विज़ुअलाइज़ेशन।
  • \n
  • Alertmanager — अलर्ट प्रबंधन (email, Slack, Telegram)।
  • \n
\n\n

Go-एप्लिकेशन को एक HTTP-एंडपॉइंट (आमतौर पर /metrics) प्रदान करना चाहिए, जहाँ से Prometheus डेटा लेता है। आइए बुनियादी कॉन्फ़िगरेशन देखें।

\n\n
package main\n\nimport (\n    "net/http"\n    "github.com/prometheus/client_golang/prometheus"\n    "github.com/prometheus/client_golang/prometheus/promhttp"\n)\n\nfunc main() {\n    // मानक Go मेट्रिक्स का पंजीकरण (runtime, GC, goroutines)\n    prometheus.MustRegister(prometheus.NewProcessCollector(prometheus.ProcessCollectorOpts{}))\n    prometheus.MustRegister(prometheus.NewGoCollector())\n\n    http.Handle("/metrics", promhttp.Handler())\n    http.ListenAndServe(":8080", nil)\n}
\n\n

एप्लिकेशन चलाने पर, आपको मानक मेट्रिक्स मिलेंगे: go_goroutines, process_cpu_seconds_total, go_memstats_alloc_bytes और अन्य। लेकिन उन्नत निगरानी के लिए यह पर्याप्त नहीं है — कस्टम मेट्रिक्स की आवश्यकता है।

\n\n

कस्टम मेट्रिक्स बनाना: Gauge, Counter, Histogram

\n\n

Prometheus चार मुख्य प्रकार के मेट्रिक्स का समर्थन करता है। आइए HTTP-अनुरोधों को संसाधित करने वाले Go-एप्लिकेशन के उदाहरण पर उन पर विचार करें।

\n\n

Counter (काउंटर) — घटनाओं की संख्या

\n

अनुरोधों, त्रुटियों, कार्यों के निष्पादन की गणना के लिए उपयोग किया जाता है।

\n\n
var requestCounter = prometheus.NewCounterVec(\n    prometheus.CounterOpts{\n        Name: "http_requests_total",\n        Help: "HTTP-अनुरोधों की कुल संख्या",\n    },\n    []string{"method", "endpoint", "status"},\n)\n\nfunc init() {\n    prometheus.MustRegister(requestCounter)\n}\n\nfunc handler(w http.ResponseWriter, r *http.Request) {\n    // अनुरोध प्रसंस्करण\n    requestCounter.WithLabelValues(r.Method, r.URL.Path, "200").Inc()\n}
\n\n

Gauge (गेज) — वर्तमान मान

\n

कतारों, कनेक्शन पूल, तापमान की निगरानी के लिए आदर्श।

\n\n
var queueSize = prometheus.NewGauge(\n    prometheus.GaugeOpts{\n        Name: "task_queue_size",\n        Help: "कार्य कतार का वर्तमान आकार",\n    },\n)\n\nfunc addToQueue() {\n    queueSize.Inc()\n}\n\nfunc processFromQueue() {\n    queueSize.Dec()\n}
\n\n

Histogram (हिस्टोग्राम) — मानों का वितरण

\n

प्रतिक्रिया समय या डेटा आकार मापने के लिए उपयोग किया जाता है।

\n\n
var requestDuration = prometheus.NewHistogramVec(\n    prometheus.HistogramOpts{\n        Name:    "http_request_duration_seconds",\n        Help:    "अनुरोध प्रसंस्करण समय का हिस्टोग्राम",\n        Buckets: prometheus.DefBuckets, // 0.005, 0.01, 0.025, 0.05, ...\n    },\n    []string{"endpoint"},\n)\n\nfunc measureRequest(endpoint string, duration float64) {\n    requestDuration.WithLabelValues(endpoint).Observe(duration)\n}
\n\n

Summary (सारांश) — क्वांटाइल

\n

हिस्टोग्राम के समान, लेकिन सटीक क्वांटाइल (p50, p95, p99) की गणना करता है।

\n\n
var requestLatency = prometheus.NewSummaryVec(\n    prometheus.SummaryOpts{\n        Name:       "http_request_latency_seconds",\n        Help:       "अनुरोध विलंबता (क्वांटाइल)",\n                

ब्लॉग

पुस्तक अनुशंसाएँ