इस ट्यूटोरियल में, आप सीखेंगे कि go-redis क्लाइंट का उपयोग करके Upstash Redis डेटाबेस से कैसे कनेक्ट करें और डिस्ट्रिब्यूटेड ट्रेसिंग का उपयोग करके अपने ऐप के परफॉरमेंस की निगरानी करें।
Go-Redis क्या है?
go-redis Golang के लिए एक लोकप्रिय Redis क्लाइंट है। बॉक्स से बाहर, यह Redis Server, Sentinel, और Cluster का समर्थन करता है।
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
)
}
आप go-redis का उपयोग डेटा कैश करने या अपने API के अनुरोधों को रेट-लिमिट करने के लिए कर सकते हैं। क्लाइंट के बारे में अधिक जानने के लिए, Redis Golang डॉक्यूमेंटेशन देखें।
डिस्ट्रिब्यूटेड ट्रेसिंग क्या है?
डिस्ट्रिब्यूटेड ट्रेसिंग आपको अनुरोधों का निरीक्षण करने की अनुमति देती है जैसे वे डिस्ट्रिब्यूटेड सिस्टम के माध्यम से प्रसारित होते हैं, विशेष रूप से माइक्रोसर्विसेज आर्किटेक्चर का उपयोग करके निर्मित।
ट्रेसिंग आपको अनुरोधों का पालन करने की अनुमति देती है जैसे वे डिस्ट्रिब्यूटेड सिस्टम के माध्यम से यात्रा करते हैं। आपको इस बात का पूरा संदर्भ मिलता है कि क्या अलग है, क्या टूटा है, और कौन से लॉग और त्रुटियां प्रासंगिक हैं।

OpenTelemetry क्या है?
OpenTelemetry एक वेंडर-न्यूट्रल मानक है जो आपको ट्रेस, लॉग, और मेट्रिक्स एकत्र करने और निर्यात करने की अनुमति देता है।
Otel डेवलपर्स को वेंडर-अज्ञेय तरीके से टेलीमेट्री डेटा एकत्र करने और निर्यात करने की अनुमति देता है। OpenTelemetry के साथ, आप अपने एप्लिकेशन को एक बार इंस्ट्रूमेंट कर सकते हैं और फिर इंस्ट्रूमेंटेशन को बदले बिना वेंडर जोड़ या बदल सकते हैं, उदाहरण के लिए, यहां OpenTelemetry का समर्थन करने वाले लोकप्रिय DataDog विकल्पों की एक सूची है।
OpenTelemetry अधिकांश प्रोग्रामिंग भाषाओं के लिए उपलब्ध है और विभिन्न भाषाओं और वातावरणों में इंटरऑपरेबिलिटी प्रदान करता है।
ट्रेसिंग और go-redis
go-redis एक OpenTelemetry इंस्ट्रूमेंटेशन के साथ आता है जिसे redisotel कहा जाता है जिसे एक अलग मॉड्यूल के रूप में वितरित किया जाता है:
go get github.com/go-redis/redis/extra/redisotel/v8
Redis क्लाइंट को इंस्ट्रूमेंट करने के लिए, आपको redisotel द्वारा प्रदान किए गए हुक को जोड़ना होगा:
import
(
"github.com/go-redis/redis/v8"
"github.com/go-redis/redis/extra/redisotel/v8"
)
rdb
:= redis
.NewClient(&redis
.Options
{...})
rdb
.AddHook(redisotel
.NewTracingHook())
ट्रेसिंग काम करने के लिए, आपको go-redis कमांड को एक्टिव ट्रेस संदर्भ पास करना होगा, उदाहरण के लिए:
ctx
:= req
.Context()
val
, err
:= rdb
.Get(ctx
,
"key").Result()
redisotel के बारे में अधिक जानने के लिए, Monitoring Go Redis Performance and Errors देखें।
Uptrace
Uptrace एक सहज ज्ञान युक्त क्वेरी बिल्डर, रिच डैशबोर्ड, ऑटोमैटिक अलर्ट, और अधिकांश भाषाओं और फ्रेमवर्क के लिए इंटीग्रेशन के साथ एक ओपन सोर्स DataDog प्रतियोगी है।
आप DEB/RPM पैकेज या प्री-कंपाइल्ड बाइनरी डाउनलोड करके Uptrace इंस्टॉल कर सकते हैं।
उम्मीद के मुताबिक, redisotel प्रोसेस्ड Redis कमांड के लिए स्पैन बनाता है और होने वाली किसी भी त्रुटि को रिकॉर्ड करता है। यहां Uptrace पर एकत्रित जानकारी कैसे प्रदर्शित होती है:

आप GitHub पर एक रन करने योग्य उदाहरण पा सकते हैं।
आगे क्या?
इसके बाद, आप ऐप के अन्य पहलुओं की निगरानी के लिए अधिक OpenTelemetry इंस्ट्रूमेंटेशन इंस्टॉल कर सकते हैं, उदाहरण के लिए, Gin या Go gRPC।
आप OpenTelemetry ट्रेसिंग API और मेट्रिक्स API के बारे में भी जान सकते हैं ताकि आप अपना खुद का इंस्ट्रूमेंटेशन बना सकें।