इस महीने की शुरुआत में, रेडिस ने ग्राफाना प्लग-इन के लिए नया रेडिस डेटा स्रोत जारी किया, जो व्यापक रूप से उपयोग किए जाने वाले ओपन सोर्स एप्लिकेशन मॉनिटरिंग टूल को रेडिस से जोड़ता है। यह सब कैसे काम करता है, इसका अंदाजा लगाने के लिए, आइए एक सेल्फ़-रेफ़रेंशियल उदाहरण देखें:प्लग-इन का उपयोग करके यह देखने के लिए कि समय के साथ इसे कितनी बार डाउनलोड किया गया है। (ग्राफाना प्लग-इन रिपोजिटरी स्वयं ऐसे आंकड़े प्रदान नहीं करता है।)
और जानना चाहते हैं? पढ़ें ग्रेफाना के लिए रेडिस डेटा स्रोत प्लग-इन का परिचय
ग्राफाना के लिए रेडिस डेटा स्रोत क्या है?
यदि आप ग्राफाना से परिचित नहीं हैं, तो यह एक बहुत ही लोकप्रिय उपकरण है जिसका उपयोग अनुप्रयोगों, बुनियादी ढांचे और सॉफ्टवेयर घटकों की निगरानी के लिए डैशबोर्ड बनाने के लिए किया जाता है। ग्राफाना के लिए रेडिस डेटा स्रोत एक प्लग-इन है जो उपयोगकर्ताओं को रेडिस डेटाबेस से जुड़ने और आसानी से रेडिस डेटा की निगरानी के लिए ग्राफाना में डैशबोर्ड बनाने की अनुमति देता है। यह एक आउट-ऑफ-द-बॉक्स पूर्वनिर्धारित डैशबोर्ड प्रदान करता है, लेकिन आपको अपनी विशिष्ट आवश्यकताओं के अनुरूप अनुकूलित डैशबोर्ड बनाने की सुविधा भी देता है।
ग्राफाना प्लग-इन के लिए रेडिस डेटा स्रोत को ग्राफाना-क्ली, डॉकर का उपयोग करके स्थापित किया जा सकता है, या ग्राफाना क्लाउड में उपयोग किया जा सकता है। वैकल्पिक रूप से प्लग-इन को गिटहब पर दिए गए निर्देशों का पालन करते हुए खरोंच से बनाया जा सकता है।
grafana-cli plugins install redis-datasource
आवश्यकताएं
यह डेमो उपयोग करता है:
- नोड पैकेज मैनेजर (एनपीएम) के साथ Node.js 10.x
- डॉकर
- डॉकर लिखें
- Redis 5.0.x या बाद में RedisTimeSeries के साथ (यह डेमो Redis Docker कंटेनर का उपयोग करता है)
- Redis डेटा स्रोत के साथ Grafana 7.0 या बाद का संस्करण (यह डेमो Grafana Docker कंटेनर का उपयोग करता है)
ग्राफाना प्लग-इन जानकारी कैसे प्राप्त करें
ग्राफाना रिपॉजिटरी में किसी भी पंजीकृत प्लग-इन के बारे में जानकारी JSON प्रारूप में API का उपयोग करके प्राप्त की जा सकती है:
गेट https://grafana.com/api/plugins/redis-datasource/versions/latest{ "id":2613, "pluginId":639, "pluginSlug":"redis-datasource", "version":"1.1.2", "url":"https://github.com/RedisTimeSeries/grafana-redis-datasource/",... "डाउनलोड":1153, "सत्यापित":झूठा, "स्थिति":"सक्रिय ", "पैकेज":{ "कोई भी":{ "md5":"ea0a2c9cb11c9fad66703ba4291e61cb", "पैकेजनाम":"कोई भी", "डाउनलोडयूआरएल":"/ एपीआई/प्लगइन्स/1. ,
इस उदाहरण के लिए, मैं यह पता लगाना चाहता था कि प्रति दिन ग्राफाना प्लग-इन के लिए रेडिस डेटा स्रोत कितनी बार डाउनलोड किया गया था, और इसके बारे में रेडिस ब्लॉग पर ट्वीट या पोस्ट करने के बाद स्पाइक्स की तलाश करना चाहता था। मैंने हर घंटे डाउनलोड की संख्या को ट्रैक करने के लिए RedisTimeSeries (एक रेडिस मॉड्यूल जो रेडिस में समय-श्रृंखला डेटा संरचना जोड़ता है) का उपयोग करने का निर्णय लिया।
डेटा को पॉप्युलेट करने के लिए मैंने TS.ADD . का इस्तेमाल किया एक स्वचालित टाइमस्टैम्प और लेबल के साथ कमांड `प्लगइन ` और `<चिह्न>संस्करण `. X कई डाउनलोड और एपीआई से प्राप्त नवीनतम संस्करण `1.1.2` है। समय श्रृंखला को क्वेरी करने के लिए बाद में लेबल का उपयोग किया जाएगा।
127.0.0.1:6379> ts.add redis-datasource * X LABELS प्लगइन redis-datasource वर्जन 1.1.2
मैंने एपीआई को कॉल करने और समय-श्रृंखला के नमूने जोड़ने के लिए प्लग-इन जानकारी का उपयोग करने के लिए ioredis और Axios पुस्तकालयों का उपयोग करके एक सरल स्क्रिप्ट लिखी:
/** * Node.js के लिए एक मजबूत, प्रदर्शन-केंद्रित और पूर्ण विशेषताओं वाला Redis क्लाइंट। * * @see https://github.com/luin/ioredis */const Redis =आवश्यकता ("ioredis");/** * ब्राउज़र और नोड के लिए वादा आधारित HTTP क्लाइंट। github.com/axios/axios */const axios =require("axios");/** * आप कनेक्शन विकल्प को रेडिस के रूप में भी निर्दिष्ट कर सकते हैं:// यूआरएल या रेडिस:// यूआरएल टीएलएस एन्क्रिप्शन का उपयोग करते समय */कॉन्स्ट रेडिस =नया रेडिस ("रेडिस:// लोकलहोस्ट:6379");/** * मुख्य * * @async * @param {string} प्लगइन का नाम */async फ़ंक्शन मुख्य(प्लगइन) { /** * प्लगइन का डेटा प्राप्त करें * * @देखें https://grafana.com/api/plugins/redis-datasource/versions/latest */ const प्रतिसाद =प्रतीक्षा axios.get( `https://grafana.com/api/plugins/${plugin}/ संस्करण/नवीनतम` ); /** * प्रतिक्रिया */ कॉन्स्ट डेटा =प्रतिक्रिया.डेटा; अगर (!डेटा) { कंसोल.लॉग ("डेटा कहां है?"); वापसी; } /** * प्लगइन और संस्करण लेबल के साथ समय-श्रृंखला का नमूना जोड़ें */ redis.send_command( "TS.ADD", डेटा.प्लगइनस्लग, "*", डेटा.डाउनलोड, "लेबल", "प्लगइन"। प्लगइनस्लग, "संस्करण", डेटा.संस्करण ); /** * रेडिस कनेक्शन बंद करें */ प्रतीक्षा redis.quit();}/** * Start */main("redis-datasource");
मेरा स्क्रिप्ट परिवेश
मैंने निर्भरता स्थापित करने के लिए package.json फ़ाइल का उपयोग किया और `npm . का उपयोग करके कमांड चलाया ` जैसा कि यहां दिखाया गया है:
{ "लेखक":"मिखाइल वोल्कोव", "निर्भरता":{ "अक्ष":"^0.19.2", "ioredis":"^4.17.3" }, "विवरण":"ग्राफाना के लिए आंकड़े प्राप्त करें प्लगइन", "देव निर्भरता":{ "@ प्रकार/नोड":"^14.0.27" }, "लाइसेंस":"आईएससी", "नाम":"ग्राफाना-प्लगइन-आंकड़े", "स्क्रिप्ट":{ "रेडिस -cli":"docker exec -it redistimeseries redis-cli", "start":"docker-compose up", "start:app":"node grafana-plugin-stats.ts" }, "संस्करण":"1.0" .0"}
डॉकर कंटेनरों को व्यवस्थित करने के लिए, मैंने docker-compose का उपयोग किया:
- Redis सेवा एक redis/redistimeseries छवि पर आधारित है, जिसमें RedisTimeSeries मॉड्यूल सक्षम है।
- ग्रेफाना सेवा नवीनतम ग्राफाना रिलीज का उपयोग करती है जिसमें रिपोजिटरी से स्थापित रेडिस डेटा स्रोत प्लग-इन होता है।
संस्करण:"3.4"सेवाएं: रेडिस: कंटेनर_नाम:पुनर्वितरण-श्रृंखला छवि:रेडिस/रेडिस्टाइम्सरीज:नवीनतम पोर्ट्स: - 6379:6379 ग्राफाना: कंटेनर_नाम:ग्राफाना कंटेनर_नाम: कंटेनर_नाम: ; - GF_AUTH_ANONYMOUS_ORG_ROLE=व्यवस्थापक - GF_AUTH_ANONYMOUS_ENABLED=सत्य - GF_AUTH_BASIC_ENABLED=गलत - GF_ENABLE_GZIP=सच्चा GF_INSहर घंटे स्क्रिप्ट चलाने और डाउनलोड डेटा एकत्र करने के लिए, मैंने क्लाउड में लिनक्स सर्वर पर क्रोंटैब का उपयोग किया:
root@grafana:~# crontab -l5 * * * * node /root/grafana-plugin-stats/stats.tsग्राफाना प्लग-इन के लिए रेडिस डेटा स्रोत का परीक्षण
स्क्रिप्ट चलाने और डेटा एकत्र करने के लिए, आपको अपने ऑपरेटिंग सिस्टम के निर्देशों का पालन करते हुए Node.js, Docker और Docker Compose इंस्टॉल करना होगा:
> docker-compose up -dशुरू कर रहा ग्राफाना ... किया हुआ पुनर्वितरण शृंखला शुरू करना ... किया गया... redistimeseries | 1:M 08 अगस्त 2020 21:13:20.405 *RedisTimeSeries द्वारा पाया गया Redis संस्करण:6.0.1 - oss...grafana | रेडिस-डेटासोर्स @ 1.1.2grafana स्थापित करना | से:https://grafana.com/api/plugins/redis-datasource/versions/1.1.2/download...grafana | t=2020-08-08T21:13:23+0000 lvl=info msg="पंजीकरण प्लगइन" लकड़हारा=प्लगइन्स नाम=Redisgrafana | t=2020-08-08T21:13:23+0000 lvl=info msg="HTTP सर्वर सुनो" लकड़हारा=http.server पता=[::]:3000 प्रोटोकॉल=http सबयूआरएल=सॉकेट= स्क्रिप्ट चलाने के बाद, हम TS.MRANGE का उपयोग करके RedisTimeSeries डेटा की जांच कर सकते हैं। आज्ञा। आप आगे या विपरीत दिशाओं में फ़िल्टर का उपयोग करके कई समय-श्रृंखला में एक श्रेणी को क्वेरी कर सकते हैं:
127.0.0.1:6379> ts.mrange - + withlabels filter plugin=redis-datasource1) 1) "diff:redis-datasource" 2) 1) "value" 2) "diff" 2) 1) " type" 2) "डेटा स्रोत" 3) 1) "प्लगइन" 2) "रेडिस-डेटासोर्स" 4) 1) "संस्करण" 2) "1.1.2" 3) 1) 1) (पूर्णांक) 15971256025 15971256025 1) (पूर्णांक) 1597129202847 2) 1 3) 1) (पूर्णांक) 1597132802738 2) 10कमांड TS.MRANGE फिल्टर के साथ `प्लगइन ` केवल `redis-datasource . के लिए नमूने पुनर्प्राप्त करता है `प्लग-इन। विकल्प का प्रयोग करें WITHLABELS लेबल वापस करने के लिए।
Grafana में RedisTimeSeries डेटा कैसे प्रदर्शित करें
ग्राफाना को वेब ब्राउज़र में `https://localhost:3000 . का उपयोग करके खोलें ` और कॉन्फ़िगरेशन -> डेटा स्रोत का चयन करके डेटा स्रोत बनाएं। ग्राफाना के लिए रेडिस डेटा सोर्स ट्रांसपोर्ट लेयर सिक्योरिटी (टीएलएस) का समर्थन करता है और सीधे कनेक्शन का उपयोग करके कहीं भी ओपन सोर्स रेडिस ओएसएस, रेडिस एंटरप्राइज और रेडिस एंटरप्राइज क्लाउड डेटाबेस से जुड़ सकता है।
अगला कदम डेटा को विज़ुअलाइज़ करने के लिए ग्राफ़ पैनल के साथ एक डैशबोर्ड बनाना है। क्वेरी संपादक में "Redis Datasource" और "RedisTimeSeries कमांड" चुनें। कमांड का प्रयोग करें TS.MRANGE प्लग-इन नाम फ़िल्टर के साथ।
अंत में, मैंने प्लग-इन लीजेंड लेबल्स को नाम दिया और संस्करण को वैल्यू लेबल के रूप में सेट किया, जिससे ग्राफाना के लिए रेडिस डेटा स्रोत के बाद के संस्करणों के लिए श्रृंखला प्रदर्शित करना आसान हो जाएगा।
परिणाम जांचा जा रहा है
कमांड का प्रयोग करें TS.INFO समय श्रृंखला के लिए सूचना और आंकड़े देखने के लिए। अब तक मैंने 250 घंटों के लिए डाउनलोड डेटा एकत्र किया है और देख सकता हूं कि समय-श्रृंखला और अन्य सूचनाओं को संग्रहीत करने के लिए कितनी मेमोरी (बाइट्स में) आवंटित की गई थी।
127.0.0.1:6379> ts.info diff:redis-datasource 1) TotalSamples 2) (पूर्णांक) 250 3) मेमोरी उपयोग 4) (पूर्णांक) 4313 5) फर्स्टटाइमस्टैम्प 6) (पूर्णांक) 1597125602559 7) lastTimestamp 8) ( इंटीजर) 1598022003033 9) रिटेंशनटाइम10) (पूर्णांक) 011) चंककाउंट12) (पूर्णांक) 113) maxSamplesPerChunk14) (पूर्णांक) 25615) लेबल16) 1) 1) "मान" 2) "diff" 2) 1) "टाइप" 2) " datasource" 3) 1) "प्लगइन" 2) "redis-datasource" 4) 1) "संस्करण" 2) "1.1.1.2"17) sourceKey18) (शून्य)19) नियम20) (खाली सूची या सेट)प्रकाशन के समय, ग्राफाना प्लग-इन के लिए रेडिस डेटा स्रोत को 3500 से अधिक बार डाउनलोड किया जा चुका है! हमें समुदाय से बहुमूल्य प्रतिक्रिया मिली है और डेटा स्रोत के लिए नई सुविधाओं का विकास जारी है।
अधिक जानकारी के लिए, प्रोजेक्ट के लिए गिटहब रिपोजिटरी देखें और हमें बताएं कि क्या आपके पास मुद्दों में कोई प्रश्न हैं।
निष्कर्ष
मुझे उम्मीद है कि यह पोस्ट, और समय के साथ प्लग-इन के डाउनलोड को ट्रैक करने के लिए ग्रैफाना के लिए रेडिस डेटा स्रोत का उपयोग करने के मेरे उदाहरण ने इस नए टूल की शक्ति और उपयोग में आसानी का प्रदर्शन किया है और आपको अपने एप्लिकेशन डेटा (लेन-देन, स्ट्रीम) की निगरानी करने के लिए प्रेरित करता है। , कतारें, आदि) RedisTimeSeries का उपयोग करके। ग्राफाना प्लग-इन के लिए रेडिस डेटा स्रोत का उपयोग कैसे और क्यों करें, इस पर अधिक पोस्ट के लिए बने रहें।