इस ट्यूटोरियल में, आप सीखेंगे कि गो-रेडिस क्लाइंट का उपयोग करके अपस्टैश रेडिस डेटाबेस से कैसे कनेक्ट करें और वितरित ट्रेसिंग का उपयोग करके अपने ऐप के प्रदर्शन की निगरानी करें।
go-redis क्या है?
गो-रेडिस गोलंग के लिए एक लोकप्रिय रेडिस क्लाइंट है। लीक से हटकर, यह रेडिस सर्वर, सेंटिनल और क्लस्टर का समर्थन करता है।
Upstash Redis डेटाबेस से जुड़ने के लिए, निम्न कोड का उपयोग करें:
package main
import (
"context"
"fmt"
"github.com/go-redis/redis/v8"
)
func main() {
ctx := context.Background()
opt, _ := redis.ParseURL("<connection-string-from-Upstash>")
client := redis.NewClient(opt)
if err := client.Set(ctx, "foo", "bar", 0); err != nil {
panic(err)
}
fmt.Println(client.Get(ctx, "foo").Result())
}
मनमाना आदेश निष्पादित करने के लिए, आप एक वैकल्पिक API का भी उपयोग कर सकते हैं:
val, err := rdb.Do(ctx, "get", "key").Result()
if err != nil {
if err == redis.Nil {
fmt.Println("key does not exists")
return
}
panic(err)
}
आप अपने एपीआई में डेटा या दर-सीमा अनुरोधों को कैश करने के लिए गो-रेडिस का उपयोग कर सकते हैं। क्लाइंट के बारे में अधिक जानने के लिए, Redis Golang दस्तावेज़ीकरण देखें।
वितरित ट्रेसिंग क्या है?
वितरित अनुरेखण अनुरोधों को देखने की अनुमति देता है क्योंकि वे वितरित प्रणालियों के माध्यम से प्रचारित करते हैं, विशेष रूप से वे जो एक माइक्रोसर्विस आर्किटेक्चर का उपयोग करके बनाए गए हैं।
ट्रेसिंग अनुरोधों का पालन करने की अनुमति देता है क्योंकि वे वितरित सिस्टम के माध्यम से यात्रा करते हैं। आपको इस बात का पूरा संदर्भ मिलता है कि क्या अलग है, क्या टूटा हुआ है, और कौन से लॉग और त्रुटियां प्रासंगिक हैं।
OpenTelemetry क्या है?
OpenTelemetry एक विक्रेता-तटस्थ मानक है जो आपको ट्रेस, लॉग और मीट्रिक एकत्र करने और निर्यात करने की अनुमति देता है।
ओटेल डेवलपर्स को एक विक्रेता अज्ञेय तरीके से टेलीमेट्री डेटा एकत्र और निर्यात करने की अनुमति देता है। OpenTelemetry के साथ, आप एक बार अपने एप्लिकेशन को लिख सकते हैं और फिर इंस्ट्रूमेंटेशन को बदले बिना विक्रेताओं को जोड़ या बदल सकते हैं, उदाहरण के लिए, यहां एक लोकप्रिय डेटाडॉग विकल्पों की सूची है जो OpenTelemetry का समर्थन करते हैं।
OpenTelemetry अधिकांश प्रोग्रामिंग भाषाओं के लिए उपलब्ध है और विभिन्न भाषाओं और परिवेशों में अंतरसंचालनीयता प्रदान करता है।
ट्रेसिंग और गो-रेडिस
go-redis एक OpenTelemetry इंस्ट्रूमेंटेशन के साथ आता है जिसे redisotel कहा जाता है जिसे एक अलग मॉड्यूल के रूप में वितरित किया जाता है:
go get github.com/go-redis/redis/extra/redisotel/v8
रेडिस क्लाइंट को साधने के लिए, आपको रेडिसोटेल द्वारा प्रदान किया गया हुक जोड़ना होगा:
import (
"github.com/go-redis/redis/v8"
"github.com/go-redis/redis/extra/redisotel/v8"
)
rdb := redis.NewClient(&redis.Options{...})
rdb.AddHook(redisotel.NewTracingHook())
ट्रेसिंग कार्य करने के लिए, आपको सक्रिय ट्रेस संदर्भ को गो-रेडिस कमांड में पास करना होगा, उदाहरण के लिए:
ctx := req.Context()
val, err := rdb.Get(ctx, "key").Result()
रेडिसोटेल के बारे में अधिक जानने के लिए, गो रेडिस के प्रदर्शन और त्रुटियों की निगरानी करना देखें।
अपट्रेस
अपट्रेस एक ओपन सोर्स डेटाडॉग प्रतियोगी है जिसमें एक सहज क्वेरी बिल्डर, समृद्ध डैशबोर्ड, स्वचालित अलर्ट और अधिकांश भाषाओं और ढांचे के लिए एकीकरण है।
आप डीईबी/आरपीएम पैकेज या पूर्व-संकलित बाइनरी डाउनलोड करके अपट्रेस स्थापित कर सकते हैं।
जैसा कि अपेक्षित था, रेडिसोटेल संसाधित रेडिस कमांड के लिए स्पैन बनाता है और किसी भी त्रुटि के होने पर रिकॉर्ड करता है। यहां बताया गया है कि कैसे एकत्रित जानकारी Uptrace पर प्रदर्शित होती है:
आप GitHub पर एक रन करने योग्य उदाहरण पा सकते हैं।
आगे क्या है?
इसके बाद, आप ऐप के अन्य पहलुओं, उदाहरण के लिए, जिन या गो जीआरपीसी की निगरानी के लिए और अधिक ओपनटेलीमेट्री इंस्ट्रूमेंटेशन स्थापित कर सकते हैं।
आप अपना खुद का उपकरण बनाने के लिए OpenTelemetry ट्रेसिंग एपीआई और मेट्रिक्स एपीआई के बारे में भी जान सकते हैं।