Prometheus मेट्रिक्स Go में: Golang में मेट्रिक्स बनाना और निर्यात करना

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

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

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

Prometheus मेट्रिक्स Go (Golang) में: पूर्ण गाइड



Prometheus एक शक्तिशाली ओपन-सोर्स मॉनिटरिंग और अलर्टिंग सिस्टम है, जो क्लाउड एप्लिकेशन की दुनिया में डी-फैक्टो मानक बन गया है। Go (Golang) भाषा के लिए एक आधिकारिक क्लाइंट prometheus/client_golang है, जो आपको अपने एप्लिकेशन में आसानी से मेट्रिक्स जोड़ने की अनुमति देता है। इस लेख में, हम विस्तार से समझेंगे कि लाइब्रेरी कैसे स्थापित करें, बुनियादी मेट्रिक प्रकार (counter, gauge, histogram) कैसे बनाएं और उन्हें HTTP के माध्यम से कैसे निर्यात करें।



1. लाइब्रेरी की स्थापना



Go में Prometheus के साथ काम करने के लिए, पैकेज prometheus/client_golang स्थापित करना आवश्यक है। निम्न कमांड चलाएँ:



go get github.com/prometheus/client_golang/prometheusgo get github.com/prometheus/client_golang/prometheus/promhttp


पहले पैकेज में बुनियादी मेट्रिक प्रकार होते हैं, दूसरे में Prometheus सर्वर द्वारा समझे जाने वाले प्रारूप में मेट्रिक्स निर्यात करने के लिए HTTP हैंडलर होता है।



2. बुनियादी मेट्रिक प्रकार



Prometheus चार बुनियादी मेट्रिक प्रकारों का समर्थन करता है। आइए तीन सबसे लोकप्रिय पर नज़र डालें:



  • Counter — एक काउंटर जो केवल बढ़ता है (उदाहरण के लिए, अनुरोधों की संख्या)।
  • Gauge — एक मान जो बढ़ और घट सकता है (उदाहरण के लिए, सक्रिय कनेक्शनों की संख्या)।
  • Histogram — एक हिस्टोग्राम जो मानों के वितरण को मापता है (उदाहरण के लिए, प्रतिक्रिया समय)।


3. उदाहरण: Counter (अनुरोध काउंटर)



आइए एक सरल HTTP सर्वर बनाएँ जो संसाधित अनुरोधों की संख्या गिनता है:



package main

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

var ( requestsTotal = prometheus.NewCounter( prometheus.CounterOpts{ Name: "http_requests_total", Help: "Total number of HTTP requests.", }, ))

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

func handler(w http.ResponseWriter, r *http.Request) { requestsTotal.Inc() fmt.Fprintf(w, "Hello, you are visitor #%d", requestsTotal)}

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


इस उदाहरण में:

  • prometheus.NewCounter नाम http_requests_total के साथ एक काउंटर बनाता है।
  • prometheus.MustRegister ग्लोबल रजिस्ट्री में मेट्रिक को पंजीकृत करता है।
  • requestsTotal.Inc() प्रत्येक अनुरोध पर काउंटर को 1 से बढ़ाता है।
  • promhttp.Handler() सभी पंजीकृत मेट्रिक्स को पते /metrics पर निर्यात करता है।


4. उदाहरण: Gauge (सक्रिय कनेक्शन)



Gauge वर्तमान स्थिति को ट्रैक करने के लिए आदर्श है, उदाहरण के लिए, सक्रिय goroutines की संख्या:



var (    activeGoroutines = prometheus.NewGauge(        prometheus.GaugeOpts{            Name: "active_goroutines",            Help: "Current number of active goroutines.",        },    ))

func monitorGoroutines() { for { activeGoroutines.Set(float64(runtime.NumGoroutine())) time.Sleep(5 * time.Second) }}

func main() { prometheus.MustRegister(activeGoroutines) go monitorGoroutines() // ... बाकी कोड}


यहाँ Set() वर्तमान मान सेट करता है, और Inc() और Dec() gauge को एक से बढ़ाने या घटाने की अनुमति देते हैं।



5. उदाहरण: Histogram (प्रतिक्रिया समय)



Histogram अवलोकन एकत्र करता है और उन्हें अनुकूलन योग्य सेगमेंट (buckets) में वितरित करता है:



var (    requestDuration = prometheus.NewHistogram(        prometheus.HistogramOpts{            Name:    "http_request_duration_seconds",            Help:    "Histogr                    

अनुशंसाएँ