अपडेट 3/29/21: https://coronavirusapi.com/ ने हाल ही में अपने डेटा तक मुफ्त पहुंच बंद कर दी है, जिससे यह केवल पंजीकृत प्रथम-उत्तरदाताओं के लिए उपलब्ध है। हालांकि इसका दुर्भाग्य से मतलब है कि कोरोनावायरस केस विज़ुअलाइज़ेशन प्रोजेक्ट डेमो अब काम नहीं करेगा, लेकिन जब आपको Grafana वर्ल्डमैप पैनल पर RedisTimeSeries डेटा प्रदर्शित करने की आवश्यकता होती है तो हमारे संकेत कई अन्य कार्यान्वयनों के लिए अभी भी उपयोगी होंगे।
पिछले पोस्ट में, हमने Grafana के लिए नए Redis डेटा स्रोत को पेश किया और दिखाया कि इसका उपयोग कैसे करें:
- Grafana के लिए Redis डेटा स्रोत प्लग-इन का परिचय
- Grafana के लिए नए Redis डेटा स्रोत प्लग-इन का उपयोग कैसे करें
इस पोस्ट में, हम कुछ रियल-लाइफ उदाहरणों का पता लगाना चाहते हैं जो आपको उन कई दिलचस्प डेटासेट के बारे में विचार देने के लिए डिज़ाइन किए गए हैं जिन्हें आप Redis में स्टोर कर सकते हैं और Grafana में विज़ुअलाइज़ कर सकते हैं। हम तीन अलग-अलग एप्लिकेशन को कवर करेंगे:
- वेदर डैशबोर्ड
- कोरोनावायरस केस विज़ुअलाइज़ेशन
- पॉप-अप स्टोर डेमो
1. वेदर डैशबोर्ड
क्या मुझे वास्तव में लगता है कि दुनिया को एक और वेदर डैशबोर्ड की आवश्यकता है? हाँ, मैं करता हूँ!
ज़्यादातर समय मैं मौसम का शौकीन नहीं हूँ। मुझे अक्सर वास्तव में परवाह नहीं होती कि मौसम कैसा है। और जब मुझे होती है, तो सबसे अच्छा वेदर डैशबोर्ड आमतौर पर मेरे घर से बाहर देखने वाली खिड़की होती है। लेकिन कभी-कभी, शायद जब मुझे कुछ तस्वीरें लेने या अपना ड्रोन उड़ाने के लिए कुछ खाली समय मिलता है, तो मेरा आंतरिक मौसम शौकीन जाग जाता है।
बड़ा सवाल, निश्चित रूप से, यह है कि मुझे कहाँ जाना चाहिए? न्यू जर्सी में मेरे घर से कुछ घंटों की ड्राइव के भीतर बहुत सारे दिलचस्प स्थान हैं, और मौसम एक से दूसरे में बहुत अलग हो सकता है। मुझे वास्तव में एक डैशबोर्ड चाहिए जो एक स्क्रीन पर एक दर्जन स्थानों पर मौसम दिखाए, ताकि मैं एक नज़र में स्थितियों की तुलना कर सकूं। गंभीर रूप से, मैं केवल एक-दूसरे के पास के स्थानों की तुलना नहीं करना चाहता।
बस उतना ही महत्वपूर्ण, मुझे नंबरों के साथ काम करना पसंद है। मुझे पता है कि लैंडस्केप फोटोग्राफी सबसे अच्छा काम करती है जब क्लाउड कवर की मात्रा 20% - 50% के बीच होती है। मेरा ड्रोन उड़ाने के लिए, 10 मील प्रति घंटे से कम हवा की गति आदर्श है, 10 - 20 मील प्रति घंटे कठिन है, और 20 मील प्रति घंटे से ऊपर कुछ भी खतरनाक हो सकता है। तो मेरे लिए इस तरह का एक प्यारा मौसम आइकन ज्यादा अच्छा नहीं करता:
इसे ध्यान में रखते हुए, यहां बताया गया है कि मैंने Redis का उपयोग करके एक वेदर डैशबोर्ड कैसे बनाया।
सौभाग्य से, कच्चा मौसम डेटा अब मौसम API के व्यापक चयन के माध्यम से व्यापक रूप से उपलब्ध है, उनमें से कई मुफ्त (कुछ सीमाओं के साथ)। मैंने OpenWeatherMap API का उपयोग करना चुना, क्योंकि इसकी मुफ्त योजना मुझे वह सब कुछ देती है जिसकी मुझे आवश्यकता है: 48-घंटे का प्रति घंटा पूर्वानुमान, 7-दिन का दैनिक पूर्वानुमान, और वर्तमान स्थिति।
मैंने API से डेटा खींचने और प्रति घंटा/दैनिक पूर्वानुमान को RedisTimeSeries मॉड्यूल का उपयोग करके Redis डेटाबेस में डालने और वर्तमान स्थिति को इतिहास के लिए टाइम सीरीज़ के दूसरे सेट में डालने के लिए एक साधारण Python स्क्रिप्ट लिखी।
मेरा वेदर डैशबोर्ड मेरे दो अनिवार्य डैशबोर्ड नियमों का पालन करता है:
- सभी डेटा एक स्क्रीन पर प्रदर्शित होना चाहिए, किसी स्क्रॉलिंग की आवश्यकता नहीं।
- एक व्यक्ति को डैशबोर्ड पर प्रदर्शित स्थिति को यथासंभव तेजी से समझने में सक्षम होना चाहिए।
डैशबोर्ड का शीर्ष भाग एक स्थान के लिए वर्तमान स्थिति दिखाता है, जो प्राथमिक या पसंदीदा या उपलब्ध स्थानों की सूची से चुना जा सकता है (डैशबोर्ड के ऊपरी बाएं कोने में एक Grafana टेम्पलेट चर चयन सूची है)। यह उस स्थान पर विशेष गतिविधि के लिए अच्छे समय की अवधि भी प्रदर्शित करता है। Grafana मुझे तापमान के लिए कम/उच्च क्षेत्रों को हाइलाइट करने, हवा की गति के लिए खतरनाक क्षेत्रों, क्लाउडनेस की डिग्री प्रदर्शित करने, और दिन और रात की अवधि को चिह्नित करने की अनुमति देता है।
नीचे का भाग स्थानों को गतिविधि के अनुसार समूहित करता है, जिससे उनकी तुलना करना आसान हो जाता है। सर्कल जितना बड़ा होगा, किसी विशेष स्थान पर किसी विशेष गतिविधि के लिए उतने अधिक घंटे अच्छे होंगे।
2. कोरोनावायरस केस विज़ुअलाइज़ेशन
मुझे यात्रा करना पसंद है, लेकिन 2020 ने लाखों लोगों को महीनों तक घर पर रहने के लिए मजबूर किया (मुझे आशा है कि हमेशा के लिए नहीं!)। अब, जैसा कि कई राज्य धीरे-धीरे फिर से खुलना शुरू कर रहे हैं, अपने मूल और गंतव्य दोनों स्थानों में COVID-19 स्थिति को समझना और स्मार्ट यात्रा करना बहुत महत्वपूर्ण है। इसका मतलब न केवल वर्तमान तस्वीर पर ध्यान देना है बल्कि लंबी अवधि के रुझानों पर भी ध्यान देना है।
यह वही है जो मेरा Grafana U.S. स्टेट्स कोरोनावायरस डैशबोर्ड दिखाता है। यह कोरोनावायरस API डेटा पर आधारित है, जिसे RedisTimeSeries मॉड्यूल में लोड किया गया है।
मानक ग्राफ प्रतिनिधित्व के अलावा, डेटा को मानचित्र पर भी खींचा जाता है। Redis डेटा स्रोत प्लग-इन आधिकारिक तौर पर Grafana वर्ल्डमैप पैनल द्वारा समर्थित नहीं है, लेकिन आप इसे दो सरल चरणों में काम कर सकते हैं:
चरण 1: टाइम-सीरीज़ आउटपुट परिणाम पर "लेबल्स टू फील्ड्स" परिवर्तन लागू करें:
चरण 2: मानचित्र पैरामीटर "लोकेशन डेटा" को टेबल मोड में बदलें और प्रासंगिक फील्ड मैप करें:
ये दो चरण आपको RedisTimeSeries के "जियोhash" लेबल द्वारा सेट किए गए मानचित्र पर प्रासंगिक बिंदु पर टाइम-सीरीज़ मान को चिपकाने की अनुमति देंगे। "स्टेट" लेबल का उपयोग मानचित्र पर स्थान का नाम प्रदर्शित करने के लिए किया जाता है।
3. पॉप-अप स्टोर डेमो
मैं Redis Streams का एक बड़ा प्रशंसक हूँ, Redis 5.0 में पेश किया गया एक नया डेटा प्रकार, और मैं डेटा प्रोसेसिंग के लिए कतारों की निगरानी के लिए एक तेज और सरल समाधान ढूंढ रहा था। Redis डेटा स्रोत पर काम करते हुए, हमारी टीम ने एक अन्य प्रोजेक्ट के लिए RedisGears - एक डायनामिक फ्रेमवर्क जो डेवलपर्स को Redis में डेटा फ्लो को लागू करने वाले फ़ंक्शन लिखने और निष्पादित करने देता है जबकि डेटा के वितरण और तैनाती को सारगर्भित करता है - का पता लगाना शुरू किया और हमने इस पॉप-अप स्टोर के लिए डेटा-पाइपलाइन डेमो के लिए उन्हें एक साथ उपयोग करने का फैसला किया।
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 मैसेज प्राप्त होने के बाद ट्रिगर हो। अंतिम विकल्प, trimStream, निष्पादन के बाद स्ट्रीम को ट्रिम न करने को निर्दिष्ट करता है।
हमने आने वाले मैसेज की संख्या और कतार-आकार के नमूनों को संग्रहीत करने के लिए RedisTimeSeries का उपयोग किया। जैसा कि Grafana के लिए Redis डेटा स्रोत प्लग-इन पर परिचयात्मक ब्लॉग पोस्ट में बताया गया है, टाइम सीरीज़ को Grafana में आसानी से विज़ुअलाइज़ किया जा सकता है।
यह प्रदर्शित करने के लिए कि Redis Streams, RedisTimeSeries, RedisGears, और Redis डेटा स्रोत कैसे एक साथ काम कर सकते हैं, हमने एक डायनामिक डैशबोर्ड के साथ पॉप-अप स्टोर डेमो बनाया:
यह Grafana डैशबोर्ड प्रदर्शित करता है:
- उत्पाद उपलब्ध: उत्पाद कुंजी का मान, जो ऑर्डर पूरा होने पर घटता है
- ग्राहक ऑर्डर कर रहे हैं, ऑर्डर प्रोसेस हो रहे हैं, और ऑर्डर पूरे हुए: queue:customers, queue:orders, और queue:complete स्ट्रीम की लंबाई
- ग्राहक ओवरफ्लो: ग्राहक-सबमिट किए गए ऑर्डर और पूरे हुए ऑर्डर के बीच का अंतर
- ग्राहक ऑर्डर कर रहे हैं: 5 सेकंड में बनाए गए ऑर्डर
- कतार में ऑर्डर: प्रोसेस होने की प्रतीक्षा कर रहे ऑर्डर
- पूरा फ्लो: 5 सेकंड में पूरे हुए ऑर्डर
कृपया इस प्रोजेक्ट के लिए GitHub रिपॉजिटरी पर एक नज़र डालें कि हमने लोड कैसे उत्पन्न किया, हमने जिन RedisGears स्क्रिप्ट का उपयोग किया, और Redis डेटा स्रोत को TS.RANGE कमांड का उपयोग करके RedisTimeSeries डेटा क्वेरी करने के लिए कैसे कॉन्फ़िगर करें।
निष्कर्ष
ये तीन रियल-लाइफ परिदृश्य विभिन्न Redis मॉड्यूल के साथ Grafana के लिए Redis डेटा स्रोत का उपयोग करने के तरीकों को प्रदर्शित करते हैं। हम आशा करते हैं कि वे आपको इस तकनीक का उपयोग करने और अपने स्वयं के एप्लिकेशन बनाने के लिए प्रेरित करते हैं।
आप अच्छी कंपनी में होंगे। चूंकि Redis डेटा स्रोत प्लग-इन को Grafana रिपॉजिटरी में प्रकाशित किया गया था, इसे पहले ही 10,000 से अधिक बार डाउनलोड किया जा चुका है, लोकप्रिय कम्युनिटी प्लग-इन में शामिल किया गया है जो आपके Grafana डैशबोर्ड को बेहतर बना सकते हैं, Redis क्लस्टर, सेंटिनल, यूनिक्स सॉकेट, और एक्सेस कंट्रोल लिस्ट (ACL) के लिए समर्थन जोड़ा गया है:
लेकिन यह सब नहीं है। एक रोमांचक प्रोजेक्ट के बारे में जानने के लिए Redis टेक ब्लॉग पर बने रहें जो Grafana स्ट्रीमिंग क्षमताओं को इंटरएक्टिविटी के साथ जोड़कर Grafana को redis-cli पैनल के साथ ऑब्जर्वेबिलिटी से आगे ले जाता है।