আপডেট 3/29/21: https://coronavirusapi.com/ সম্প্রতি এর ডেটাতে বিনামূল্যে অ্যাক্সেস বন্ধ করে দিয়েছে, এটি শুধুমাত্র নিবন্ধিত প্রথম প্রতিক্রিয়াকারীদের জন্য উপলব্ধ করা হয়েছে। যদিও দুর্ভাগ্যবশত এর অর্থ হল করোনাভাইরাস কেস ভিজ্যুয়ালাইজেশন প্রোজেক্ট ডেমো আর কাজ করবে না, আমাদের ইঙ্গিতগুলি এখনও অন্যান্য অনেক বাস্তবায়নের জন্য উপযোগী হবে যখন আপনাকে Grafana ওয়ার্ল্ডম্যাপ প্যানেলে RedisTimeSeries ডেটা প্রদর্শন করতে হবে।
পূর্ববর্তী পোস্টগুলিতে, আমরা গ্রাফনার জন্য নতুন রেডিস ডেটা উত্স কীভাবে ব্যবহার করতে হয় তার পরিচয় এবং দেখিয়েছি:
- Grafana-এর জন্য Redis ডেটা সোর্স প্লাগ-ইন চালু করা হচ্ছে
- গ্রাফানা প্লাগ-ইন-এর জন্য নতুন রেডিস ডেটা উৎস কীভাবে ব্যবহার করবেন
এই পোস্টে, আমরা কিছু বাস্তব-জীবনের উদাহরণ অন্বেষণ করতে চাই যা আপনাকে অনেক আকর্ষণীয় ডেটাসেট সম্পর্কে ধারণা দেওয়ার জন্য ডিজাইন করা হয়েছে যা আপনি Redis-এ সঞ্চয় করতে পারেন এবং Grafana-এ কল্পনা করতে পারেন। আমরা তিনটি ভিন্ন অ্যাপ্লিকেশন কভার করব:
- আবহাওয়া ড্যাশবোর্ড
- করোনাভাইরাস কেস ভিজ্যুয়ালাইজেশন
- পপ-আপ স্টোর ডেমো
1. আবহাওয়া ড্যাশবোর্ড
আমি কি সত্যিই মনে করি যে বিশ্বের আরও একটি আবহাওয়া ড্যাশবোর্ড দরকার? হ্যাঁ আমি করেছি!
অবশ্যই, বেশিরভাগ সময় আমি আবহাওয়ার গিক নই। আমি প্রায়শই আবহাওয়া কেমন তা নিয়ে সত্যিই চিন্তা করি না। এবং আমি যখন করি তখনও, সেরা আবহাওয়ার ড্যাশবোর্ডটি সাধারণত আমার বাড়ির বাইরে দেখার একটি জানালা। কিন্তু কখনও কখনও, সম্ভবত যখন আমি কিছু ছবি তোলার জন্য বা আমার ড্রোন উড়ানোর জন্য কিছু অবসর সময় পাই, তখন আমার অভ্যন্তরীণ আবহাওয়ার গিক জাগ্রত হয়।
বড় প্রশ্ন, অবশ্যই, আমি কোথায় যেতে হবে? নিউ জার্সিতে আমার বাড়ি থেকে কয়েক ঘন্টার মধ্যে অনেক আকর্ষণীয় অবস্থান রয়েছে এবং আবহাওয়া একে অপরের থেকে খুব আলাদা হতে পারে। আমি সত্যিই যা চাই তা হল একটি ড্যাশবোর্ড যা একটি স্ক্রিনে এক ডজন অবস্থানে আবহাওয়া দেখায়, তাই আমি এক নজরে অবস্থার তুলনা করতে পারি। সমালোচনামূলকভাবে, আমি কেবল একে অপরের কাছাকাছি অবস্থানগুলির তুলনা করতে চাই না।
ঠিক যেমন গুরুত্বপূর্ণ, আমি সংখ্যা নিয়ে কাজ করতে পছন্দ করি। আমি জানি যে ল্যান্ডস্কেপ ফটোগ্রাফি সবচেয়ে ভালো কাজ করে যখন ক্লাউড কভারের পরিমাণ 20% - 50% এর মধ্যে থাকে। আমার ড্রোন উড়ানোর জন্য, 10 মাইল প্রতি ঘণ্টার নিচে বাতাসের গতি আদর্শ, 10 - 20 মাইল প্রতি ঘণ্টা কঠিন এবং 20 মাইল প্রতি ঘণ্টার উপরে যে কোনো কিছু বিপজ্জনক হতে পারে। তাই এই ধরনের একটি সুন্দর আবহাওয়া আইকন আমাকে খুব একটা ভালো করে না:
এটি মাথায় রেখে, এখানে আমি কীভাবে রেডিস ব্যবহার করে একটি আবহাওয়া ড্যাশবোর্ড তৈরি করেছি।
সৌভাগ্যবশত, আবহাওয়ার এপিআই-এর বিস্তৃত নির্বাচনের মাধ্যমে কাঁচা আবহাওয়ার ডেটা এখন ব্যাপকভাবে পাওয়া যায়, যার মধ্যে অনেকগুলি বিনামূল্যে (কিছু সীমাবদ্ধতা সহ)। আমি OpenWeatherMap API ব্যবহার করা বেছে নিয়েছি, কারণ এটির বিনামূল্যের প্ল্যান আমাকে আমার প্রয়োজনীয় সবকিছু দেয়:একটি 48-ঘণ্টার প্রতি ঘণ্টার পূর্বাভাস, একটি 7-দিনের দৈনিক পূর্বাভাস এবং বর্তমান অবস্থা।
আমি API থেকে ডেটা টেনে আনার জন্য একটি সাধারণ পাইথন স্ক্রিপ্ট লিখেছিলাম এবং RedisTimeSeries মডিউল এবং বর্তমান অবস্থাগুলিকে ইতিহাসের জন্য সময় সিরিজের আরেকটি সেটে ব্যবহার করে Redis ডাটাবেসে ঘন্টায়/দৈনিক পূর্বাভাস রেখেছিলাম৷
আমার আবহাওয়া ড্যাশবোর্ড আমার দুটি বাধ্যতামূলক ড্যাশবোর্ড নিয়ম অনুসরণ করে:
- সমস্ত ডেটা একটি স্ক্রিনে প্রদর্শিত হবে, কোনো স্ক্রল করার প্রয়োজন নেই।
- একজন ব্যক্তি যত তাড়াতাড়ি সম্ভব ড্যাশবোর্ডে প্রদর্শিত পরিস্থিতি বুঝতে সক্ষম হওয়া উচিত।
ড্যাশবোর্ডের উপরের অংশটি একটি অবস্থানের বর্তমান অবস্থা দেখায়, যা প্রাথমিক বা প্রিয় হতে পারে বা উপলব্ধ স্থানের তালিকা থেকে নির্বাচিত হতে পারে (ড্যাশবোর্ডের উপরের বাম কোণে একটি Grafana টেমপ্লেট পরিবর্তনশীল নির্বাচন তালিকা রয়েছে)। এটি সেই অবস্থানের নির্দিষ্ট ক্রিয়াকলাপের জন্য ভাল সময়কালও প্রদর্শন করে। Grafana আমাকে তাপমাত্রার জন্য নিম্ন/উচ্চ অঞ্চল, বাতাসের গতির জন্য বিপজ্জনক অঞ্চল, মেঘলাতার মাত্রা প্রদর্শন এবং দিনের ও রাতের সময়কাল চিহ্নিত করার অনুমতি দেয়৷
নীচের অংশটি কার্যকলাপের ভিত্তিতে গোষ্ঠীবদ্ধ করে, তাদের তুলনা করা সহজ করে। বৃত্ত যত বড় হবে, একটি নির্দিষ্ট স্থানে একটি নির্দিষ্ট কার্যকলাপের জন্য তত বেশি ঘন্টা ভাল।
2. করোনাভাইরাস কেস ভিজ্যুয়ালাইজেশন
আমি ভ্রমণ করতে পছন্দ করি, কিন্তু 2020 লক্ষ লক্ষ মানুষকে শেষ পর্যন্ত কয়েক মাস বাড়িতে থাকতে বাধ্য করেছে (আমি আশা করি চিরকাল নয়!) এখন, অনেক রাজ্য ধীরে ধীরে আবার খুলতে শুরু করেছে, স্মার্ট ভ্রমণ করা এবং আপনার উত্স এবং গন্তব্য উভয় অবস্থানেই COVID-19 পরিস্থিতি বোঝা খুবই গুরুত্বপূর্ণ। এর মানে হল শুধুমাত্র বর্তমান ছবি নয়, দীর্ঘমেয়াদী প্রবণতার দিকেও মনোযোগ দেওয়া।
এই আমার Grafana মার্কিন যুক্তরাষ্ট্রের করোনাভাইরাস ড্যাশবোর্ড দেখায়. এটি করোনাভাইরাস API ডেটার উপর ভিত্তি করে, RedisTimeSeries মডিউলে লোড করা হয়েছে৷
স্ট্যান্ডার্ড গ্রাফ উপস্থাপনা ছাড়াও, ডেটাও মানচিত্রে আঁকা হয়। Redis ডেটা সোর্স প্লাগ-ইন আনুষ্ঠানিকভাবে Grafana ওয়ার্ল্ডম্যাপ প্যানেল দ্বারা সমর্থিত নয়, তবে আপনি এটি দুটি সহজ ধাপে কাজ করতে পারেন:
ধাপ 1: টাইম-সিরিজ আউটপুট ফলাফলে "ক্ষেত্রে লেবেল" রূপান্তর প্রয়োগ করুন:
ধাপ 2: মানচিত্র প্যারামিটার "অবস্থান ডেটা" টেবিল মোডে পরিবর্তন করুন এবং প্রাসঙ্গিক ক্ষেত্রগুলি ম্যাপ করুন:
এই দুটি ধাপ আপনাকে মানচিত্রের প্রাসঙ্গিক বিন্দুতে সময়-সিরিজের মান আটকে রাখার অনুমতি দেবে, যেটি RedisTimeSeries-এর “geohash” লেবেল দ্বারা সেট করা হয়েছে। ম্যাপে অবস্থানের নাম প্রদর্শন করতে লেবেল "রাষ্ট্র" ব্যবহার করা হয়৷
৷3. পপ-আপ স্টোর ডেমো
আমি Redis স্ট্রীমসের একজন বড় ভক্ত, 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 ডেটা সোর্স প্লাগ-ইন-এর পরিচায়ক ব্লগ পোস্টে যেমন ব্যাখ্যা করা হয়েছে, গ্রাফনাতে টাইম সিরিজ সহজেই কল্পনা করা যেতে পারে।
কিভাবে Redis স্ট্রিম, RedisTimeSeries, RedisGears এবং Redis ডেটা সোর্স একসাথে কাজ করতে পারে তা প্রদর্শন করতে, আমরা একটি গতিশীল ড্যাশবোর্ডের সাথে পপ-আপ স্টোর ডেমো তৈরি করেছি:
এই Grafana ড্যাশবোর্ড প্রদর্শন করে:
- পণ্য উপলব্ধ: পণ্য কী এর মান, যা অর্ডার সম্পূর্ণ হওয়ার সাথে সাথে হ্রাস পায়
- গ্রাহকদের অর্ডার, অর্ডার প্রসেসিং এবং অর্ডার সম্পন্ন হয়েছে: সারির দৈর্ঘ্য:গ্রাহক, সারি:অর্ডার, এবং সারি:সম্পূর্ণ স্ট্রীম
- গ্রাহক ওভারফ্লো: গ্রাহকের জমা দেওয়া অর্ডার এবং সম্পূর্ণ অর্ডারের মধ্যে পার্থক্য
- গ্রাহক অর্ডারিং: অর্ডার 5 সেকেন্ডের মধ্যে তৈরি হয়
- সারিতে অর্ডারগুলি:৷ আদেশ প্রক্রিয়াকরণের অপেক্ষায়
- সম্পূর্ণ প্রবাহ: অর্ডার 5 সেকেন্ডের মধ্যে সম্পন্ন হয়
আমরা কীভাবে লোড তৈরি করেছি, আমরা যে RedisGears স্ক্রিপ্টগুলি ব্যবহার করেছি এবং TS.RANGE কমান্ড ব্যবহার করে RedisTimeSeries ডেটা জিজ্ঞাসা করার জন্য কীভাবে Redis ডেটা উৎস কনফিগার করব তা দেখতে অনুগ্রহ করে এই প্রকল্পের জন্য GitHub সংগ্রহস্থলটি দেখুন৷
উপসংহার
এই তিনটি বাস্তব-জীবনের পরিস্থিতি বিভিন্ন Redis মডিউল সহ Grafana-এর জন্য Redis ডেটা উৎস ব্যবহার করার উপায় প্রদর্শন করে। আমরা আশা করি তারা আপনাকে এই প্রযুক্তি ব্যবহার করতে এবং আপনার নিজস্ব অ্যাপ্লিকেশন তৈরি করতে অনুপ্রাণিত করবে।
আপনি ভাল সঙ্গ হবে. রেডিস ডেটা সোর্স প্লাগ-ইনটি Grafana সংগ্রহস্থলে প্রকাশিত হওয়ার পর থেকে এটি ইতিমধ্যে 10,000 বারের বেশি ডাউনলোড করা হয়েছে, জনপ্রিয় কমিউনিটি প্লাগ-ইনগুলিতে অন্তর্ভুক্ত যা আপনার Grafana ড্যাশবোর্ডকে উন্নত করতে পারে, Redis ক্লাস্টার, সেন্টিনেল, ইউনিক্স সকেট, এবং এর জন্য সমর্থন যোগ করেছে। অ্যাক্সেস নিয়ন্ত্রণ তালিকা (ACLs):
কিন্তু এখানেই শেষ নয়. একটি redis-cli প্যানেলের মাধ্যমে Grafana কে পর্যবেক্ষণযোগ্যতার বাইরে নিয়ে যাওয়ার জন্য ইন্টারঅ্যাক্টিভিটির সাথে Grafana স্ট্রিমিং ক্ষমতার সমন্বয়ে একটি উত্তেজনাপূর্ণ প্রকল্প সম্পর্কে জানতে Redis Tech ব্লগের সাথে থাকুন৷