अपडेट 3/29/21: https://coronavirusapi.com/ ने हाल ही में अपने डेटा तक मुफ्त पहुंच को बंद कर दिया है, जिससे यह केवल पंजीकृत प्रथम-उत्तरदाताओं के लिए उपलब्ध है। हालांकि दुर्भाग्य से इसका मतलब है कि कोरोनावायरस केस विज़ुअलाइज़ेशन प्रोजेक्ट डेमो अब और काम नहीं करेगा, हमारे संकेत अभी भी कई अन्य कार्यान्वयन के लिए उपयोगी होंगे जब आपको ग्रैफ़ाना वर्ल्डमैप पैनल पर RedisTimeSeries डेटा प्रदर्शित करने की आवश्यकता होगी।
पिछली पोस्ट में, हमने ग्राफाना के लिए नए रेडिस डेटा स्रोत का उपयोग करने का तरीका पेश किया और दिखाया:
- ग्रेफ़ाना के लिए रेडिस डेटा स्रोत प्लग-इन का परिचय
- ग्राफाना प्लग-इन के लिए नए रेडिस डेटा स्रोत का उपयोग कैसे करें
इस पोस्ट में, हम आपको रेडिस में स्टोर किए जा सकने वाले कई दिलचस्प डेटासेट के बारे में विचार देने और ग्राफाना में विज़ुअलाइज़ करने के लिए डिज़ाइन किए गए कुछ वास्तविक जीवन के उदाहरणों का पता लगाना चाहते हैं। हम तीन अलग-अलग अनुप्रयोगों को कवर करेंगे:
- मौसम डैशबोर्ड
- कोरोनावायरस केस विज़ुअलाइज़ेशन
- पॉप-अप स्टोर डेमो
क्या मुझे सच में लगता है कि दुनिया को एक और मौसम डैशबोर्ड की जरूरत है? हां मैं करता हूं!
निश्चित रूप से, ज्यादातर समय मैं एक मौसम गीक का ज्यादा नहीं हूं। मैं अक्सर इस बात की परवाह नहीं करता कि मौसम कैसा है। और यहां तक कि जब मैं करता हूं, तो सबसे अच्छा मौसम डैशबोर्ड आमतौर पर मेरे घर से बाहर दिखने वाली खिड़की होती है। लेकिन कभी-कभी, शायद जब मुझे कुछ तस्वीरें लेने या अपना ड्रोन उड़ाने के लिए बाहर जाने के लिए कुछ खाली समय मिलता है, तो मेरा आंतरिक मौसम गीक जाग जाता है।
बेशक, बड़ा सवाल यह है कि मुझे कहाँ जाना चाहिए? न्यू जर्सी में मेरे घर से कुछ ही घंटों की ड्राइव के भीतर बहुत सारे दिलचस्प स्थान हैं, और मौसम एक से दूसरे में बहुत भिन्न हो सकता है। मैं वास्तव में जो चाहता हूं वह एक डैशबोर्ड है जो एक स्क्रीन पर एक दर्जन स्थानों में मौसम दिखाता है, इसलिए मैं एक नज़र में स्थितियों की तुलना कर सकता हूं। गंभीर रूप से, मैं केवल एक-दूसरे के आस-पास के स्थानों की तुलना नहीं करना चाहता।

उतना ही महत्वपूर्ण, मुझे संख्याओं के साथ काम करना अच्छा लगता है। मुझे पता है कि लैंडस्केप फोटोग्राफी सबसे अच्छा काम करती है जब क्लाउड कवर की मात्रा कहीं 20% - 50% के बीच होती है। मेरे ड्रोन को उड़ाने के लिए, 10 मील प्रति घंटे से कम हवा की गति आदर्श है, 10 - 20 मील प्रति घंटे कठिन है, और 20 मील प्रति घंटे से ऊपर कुछ भी खतरनाक हो सकता है। तो इस तरह का प्यारा मौसम आइकन मेरे लिए बहुत अच्छा नहीं है:
इसे ध्यान में रखते हुए, यहां बताया गया है कि मैंने रेडिस का उपयोग करके एक मौसम डैशबोर्ड कैसे बनाया।
सौभाग्य से, अपरिष्कृत मौसम डेटा अब मौसम एपीआई के व्यापक चयन के माध्यम से व्यापक रूप से उपलब्ध है, उनमें से कई मुफ्त (कुछ सीमाओं के साथ) हैं। मैंने OpenWeatherMap API का उपयोग करना चुना, क्योंकि इसकी निःशुल्क योजना मुझे वह सब कुछ देती है जो मुझे चाहिए:एक 48-घंटे प्रति घंटा पूर्वानुमान, एक 7-दिन का दैनिक पूर्वानुमान, और वर्तमान स्थितियाँ।
मैंने एपीआई से डेटा खींचने के लिए एक सरल पायथन स्क्रिप्ट लिखी और इतिहास के लिए समय श्रृंखला के दूसरे सेट में RedisTimeSeries मॉड्यूल और वर्तमान स्थितियों का उपयोग करके प्रति घंटा/दैनिक पूर्वानुमान रेडिस डेटाबेस में डाल दिया।
मेरा मौसम डैशबोर्ड मेरे दो अनिवार्य डैशबोर्ड नियमों का पालन करता है:
- सारा डेटा एक स्क्रीन पर प्रदर्शित होना चाहिए, स्क्रॉल करने की आवश्यकता नहीं है।
- एक व्यक्ति को जितनी जल्दी हो सके डैशबोर्ड पर प्रदर्शित स्थिति को समझने में सक्षम होना चाहिए।

डैशबोर्ड का शीर्ष भाग एक स्थान के लिए वर्तमान स्थितियों को दिखाता है, जो प्राथमिक या पसंदीदा हो सकता है या उपलब्ध स्थानों की सूची से चुना जा सकता है (डैशबोर्ड के ऊपरी बाएं कोने में एक ग्राफाना टेम्पलेट चर चयन सूची है)। यह उस स्थान पर विशेष गतिविधि के लिए अच्छे समय की अवधि को भी प्रदर्शित करता है। ग्राफाना मुझे तापमान के लिए निम्न/उच्च क्षेत्रों, हवा की गति के लिए खतरनाक क्षेत्रों, बादलों की डिग्री प्रदर्शित करने, और दिन और रात की अवधि को चिह्नित करने की अनुमति देता है।
गतिविधि के आधार पर नीचे का अनुभाग समूह स्थान, जिससे उनकी तुलना करना आसान हो जाता है। वृत्त जितना बड़ा होगा, एक निश्चित स्थान पर एक निश्चित गतिविधि के लिए उतने ही अधिक घंटे अच्छे होंगे।

2. कोरोनावायरस केस विज़ुअलाइज़ेशन
मुझे यात्रा करना पसंद है, लेकिन 2020 ने लाखों लोगों को महीनों तक घर पर रहने के लिए मजबूर कर दिया (मुझे आशा है कि हमेशा के लिए नहीं!) अब, चूंकि कई राज्य धीरे-धीरे फिर से खुलने लगे हैं, इसलिए स्मार्ट यात्रा करना और अपने मूल और गंतव्य दोनों स्थानों में COVID-19 स्थिति को समझना बहुत महत्वपूर्ण है। इसका मतलब है कि न केवल वर्तमान तस्वीर पर बल्कि लंबी अवधि के रुझानों पर भी ध्यान देना।
यह मेरा ग्राफाना यूएस स्टेट्स कोरोनावायरस डैशबोर्ड दिखाता है। यह RedisTimeSeries मॉड्यूल में लोड किए गए Coronavirus API डेटा पर आधारित है।

मानक ग्राफ प्रतिनिधित्व के अलावा, मानचित्र पर डेटा भी तैयार किया जाता है। Redis डेटा स्रोत प्लग-इन आधिकारिक तौर पर Grafana Worldmap पैनल द्वारा समर्थित नहीं है, लेकिन आप इसे दो आसान चरणों में काम कर सकते हैं:
चरण 1: समय-श्रृंखला आउटपुट परिणाम में परिवर्तन "लेबल टू फ़ील्ड" लागू करें:

चरण 2: मानचित्र पैरामीटर "स्थान डेटा" को तालिका मोड में बदलें और संबंधित फ़ील्ड को मैप करें:

ये दो चरण आपको समय-श्रृंखला मान को मानचित्र पर प्रासंगिक बिंदु पर चिपकाने की अनुमति देंगे, जो कि RedisTimeSeries के "जियोहाश" लेबल द्वारा निर्धारित किया गया है। मानचित्र पर स्थान का नाम प्रदर्शित करने के लिए "राज्य" लेबल का उपयोग किया जाता है।
3. पॉप-अप स्टोर डेमो
मैं Redis Streams का बहुत बड़ा प्रशंसक हूं, Redis 5.0 में पेश किया गया एक नया डेटा प्रकार, और मैं डेटा प्रोसेसिंग के लिए कतारों की निगरानी के लिए एक तेज़ और सरल समाधान की तलाश में था। रेडिस डेटा स्रोत पर काम करते हुए, हमारी टीम ने रेडिसगियर्स का पता लगाना शुरू किया - एक गतिशील ढांचा जो डेवलपर्स को डेटा के वितरण और परिनियोजन को दूर करते हुए रेडिस में डेटा प्रवाह को लागू करने वाले कार्यों को लिखने और निष्पादित करने देता है - एक अन्य परियोजना के लिए और हमने उन्हें एक साथ उपयोग करने का निर्णय लिया। पॉप-अप स्टोर के लिए इस डेटा-पाइपलाइन डेमो के लिए।
RedisGears कई प्रकार के पाठकों का समर्थन करता है जो विभिन्न प्रकार के इनपुट डेटा पर कार्य करते हैं। स्ट्रीम संदेशों को देखने के लिए, हमने इवेंट मोड में StreamReader का उपयोग किया। इस मोड में, पाठक को स्ट्रीम में जोड़े गए नए संदेशों द्वारा उत्पन्न घटनाओं के जवाब में निष्पादित किया जाता है।
# Add Time-Series def tsAdd(x): xlen = execute('XLEN', x['key']) execute('TS.ADD', 'ts:len:'+x['key'], '*', xlen) execute('TS.ADD', 'ts:enqueue:' + x['key'], '*', x['value']) # Stream Reader for any Queue gb = GearsBuilder('StreamReader') gb.countby(lambda x: x['key']).map(tsAdd) gb.register(prefix='queue:*', duration=5000, batch=10000, trimStream=False)
StreamReader कई तर्कों को स्वीकार करता है जो नियंत्रित करते हैं कि यह कैसे ट्रिगर होता है। हमारे मामले में, हम चाहते हैं कि पाठक हर 5 सेकंड में या 10,000 संदेश प्राप्त करने के बाद चालू हो जाए। अंतिम विकल्प, ट्रिमस्ट्रीम, निष्पादन के बाद स्ट्रीम को ट्रिम न करने के लिए निर्दिष्ट करता है।
हमने आने वाले संदेशों की संख्या और कतार के आकार के नमूनों को संग्रहीत करने के लिए RedisTimeSeries का उपयोग किया। जैसा कि ग्राफाना के लिए रेडिस डेटा स्रोत प्लग-इन पर परिचयात्मक ब्लॉग पोस्ट में बताया गया है, ग्राफाना में समय श्रृंखला को आसानी से देखा जा सकता है।

यह प्रदर्शित करने के लिए कि कैसे Redis Streams, RedisTimeSeries, RedisGears, और Redis डेटा स्रोत एक साथ काम कर सकते हैं, हमने एक गतिशील डैशबोर्ड के साथ पॉप-अप स्टोर डेमो बनाया:

यह ग्राफाना डैशबोर्ड प्रदर्शित करता है:
- उत्पाद उपलब्ध: उत्पाद कुंजी का मूल्य, जो ऑर्डर पूर्ण होने पर घट जाता है
- ग्राहकों का आदेश देना, आदेश संसाधित करना और पूर्ण किए गए आदेश: कतार की लंबाई:ग्राहक, कतार:आदेश, और कतार:पूर्ण धाराएँ
- ग्राहक अतिप्रवाह: ग्राहक द्वारा सबमिट किए गए ऑर्डर और पूरे किए गए ऑर्डर के बीच का अंतर
- आदेश देने वाले ग्राहक: 5 सेकंड में बनाए गए आदेश
- आदेश कतार में: आदेश संसाधित होने की प्रतीक्षा में हैं
- पूर्ण प्रवाह: आदेश 5 सेकंड में पूरे हुए
कृपया इस प्रोजेक्ट के लिए GitHub रिपॉजिटरी पर एक नज़र डालें कि हमने लोड कैसे उत्पन्न किया, RedisGears स्क्रिप्ट्स का हमने उपयोग किया, और TS.RANGE कमांड का उपयोग करके RedisTimeSeries डेटा को क्वेरी करने के लिए Redis डेटा स्रोत को कैसे कॉन्फ़िगर किया जाए।
निष्कर्ष
ये तीन वास्तविक जीवन परिदृश्य विभिन्न रेडिस मॉड्यूल के साथ ग्राफाना के लिए रेडिस डेटा स्रोत का उपयोग करने के तरीके प्रदर्शित करते हैं। हमें उम्मीद है कि वे आपको इस तकनीक का उपयोग करने और अपने स्वयं के एप्लिकेशन बनाने के लिए प्रेरित करेंगे।
आप अच्छी संगति में रहेंगे। चूंकि रेडिस डेटा स्रोत प्लग-इन को ग्राफाना रिपॉजिटरी में प्रकाशित किया गया था, इसे पहले ही 10,000 से अधिक बार डाउनलोड किया जा चुका है, लोकप्रिय सामुदायिक प्लग-इन में शामिल है जो आपके ग्राफाना डैशबोर्ड को बेहतर बना सकता है, रेडिस क्लस्टर, सेंटिनल, यूनिक्स सॉकेट और के लिए अतिरिक्त समर्थन। अभिगम नियंत्रण सूचियां (एसीएल):

लेकिन वह सब नहीं है। रेडिस-क्ली पैनल के साथ ग्राफाना को अवलोकन से परे ले जाने के लिए इंटरएक्टिविटी के साथ ग्राफाना स्ट्रीमिंग क्षमताओं के संयोजन के एक रोमांचक प्रोजेक्ट के बारे में जानने के लिए रेडिस टेक ब्लॉग पर बने रहें।