ক্লাউড ফাংশনের জন্য স্ট্যাকড্রাইভার লগিং এবং স্ট্যাকড্রাইভার ট্রেস ব্যবহার করুন
এই কোডল্যাব সম্পর্কে
1. ভূমিকা
এই কোডল্যাবে, আপনি ক্লাউড ফাংশনগুলির সাথে কাজ করে এমন সমস্ত বিকাশকারীদের জন্য উপলব্ধ লগিং এবং মনিটরিং সরঞ্জামগুলির সুবিধা নিতে শিখবেন৷ সরঞ্জামগুলি প্রতিটি ক্লাউড ফাংশনের সাথে আসে যা আপনি সমস্ত সমর্থিত ভাষা জুড়ে স্থাপন করেন এবং আপনার সার্ভারহীন কোড লেখা এবং পরিচালনা করার সময় আপনাকে আরও উত্পাদনশীল হতে সক্ষম করতে হবে।
আপনি একটি HTTP-ট্রিগার করা ক্লাউড ফাংশন ব্যবহার করবেন, তবে আপনি যা কভার করেন তা অন্যান্য ভাষা এবং অন্যান্য ইভেন্ট দ্বারা ট্রিগার করা ক্লাউড ফাংশনগুলিতেও প্রযোজ্য।
2. সেটআপ এবং প্রয়োজনীয়তা
স্ব-গতিসম্পন্ন পরিবেশ সেটআপ
- ক্লাউড কনসোলে সাইন ইন করুন এবং একটি নতুন প্রকল্প তৈরি করুন বা বিদ্যমান একটি পুনরায় ব্যবহার করুন৷ (যদি আপনার ইতিমধ্যেই একটি Gmail বা G Suite অ্যাকাউন্ট না থাকে তবে আপনাকে অবশ্যই একটি তৈরি করতে হবে।)
প্রজেক্ট আইডিটি মনে রাখবেন, সমস্ত Google ক্লাউড প্রকল্প জুড়ে একটি অনন্য নাম (উপরের নামটি ইতিমধ্যে নেওয়া হয়েছে এবং আপনার জন্য কাজ করবে না, দুঃখিত!)। এটি পরে এই কোডল্যাবে PROJECT_ID
হিসাবে উল্লেখ করা হবে।
- এর পরে, Google ক্লাউড সংস্থানগুলি ব্যবহার করার জন্য আপনাকে ক্লাউড কনসোলে বিলিং সক্ষম করতে হবে৷
এই কোডল্যাবের মাধ্যমে চালানোর জন্য খুব বেশি খরচ করা উচিত নয়, যদি কিছু থাকে। "ক্লিনিং আপ" বিভাগে যে কোনও নির্দেশাবলী অনুসরণ করতে ভুলবেন না যা আপনাকে কীভাবে সংস্থানগুলি বন্ধ করতে হবে তা পরামর্শ দেয় যাতে আপনি এই টিউটোরিয়ালের বাইরে বিলিং করতে না পারেন৷ Google ক্লাউডের নতুন ব্যবহারকারীরা $300USD ফ্রি ট্রায়াল প্রোগ্রামের জন্য যোগ্য৷
মেঘের শেল
ক্লাউড ফাংশন, এবং এর লগিং এবং পর্যবেক্ষণ ক্ষমতা আপনার ল্যাপটপ থেকে দূরবর্তীভাবে ব্যবহার করা যেতে পারে, আপনি ক্লাউড শেল ব্যবহার করবেন, একটি কমান্ড-লাইন পরিবেশ Google ক্লাউডে চলমান।
এই ডেবিয়ান-ভিত্তিক ভার্চুয়াল মেশিনটি আপনার প্রয়োজনীয় সমস্ত বিকাশের সরঞ্জামগুলির সাথে লোড করা হয়েছে। এটি একটি ক্রমাগত 5GB হোম ডিরেক্টরি অফার করে এবং Google ক্লাউডে চলে, যা নেটওয়ার্ক কর্মক্ষমতা এবং প্রমাণীকরণকে ব্যাপকভাবে উন্নত করে। এর মানে হল যে এই কোডল্যাবের জন্য আপনার যা দরকার তা হল একটি ব্রাউজার (হ্যাঁ, এটি একটি Chromebook এ কাজ করে)।
- ক্লাউড কনসোল থেকে ক্লাউড শেল সক্রিয় করতে, কেবল ক্লাউড শেল সক্রিয় করুন ক্লিক করুন
(পরিবেশের সাথে সংযোগ স্থাপন এবং সংযোগের জন্য এটি শুধুমাত্র কয়েক মুহূর্ত নিতে হবে)।
একবার ক্লাউড শেলের সাথে সংযুক্ত হয়ে গেলে, আপনি দেখতে পাবেন যে আপনি ইতিমধ্যেই প্রমাণীকৃত এবং প্রকল্পটি ইতিমধ্যেই আপনার PROJECT_ID
তে সেট করা আছে।
gcloud auth list
কমান্ড আউটপুট
Credentialed accounts: - <myaccount>@<mydomain>.com (active)
gcloud config list project
কমান্ড আউটপুট
[core] project = <PROJECT_ID>
যদি, কোন কারণে, প্রকল্পটি সেট করা না হয়, কেবল নিম্নলিখিত কমান্ডটি জারি করুন:
gcloud config set project <PROJECT_ID>
আপনার PROJECT_ID
খুঁজছেন? সেটআপ ধাপে আপনি কোন আইডি ব্যবহার করেছেন তা দেখুন বা ক্লাউড কনসোল ড্যাশবোর্ডে দেখুন:
ক্লাউড শেল ডিফল্টরূপে কিছু এনভায়রনমেন্ট ভেরিয়েবলও সেট করে, যা আপনার ভবিষ্যত কমান্ড চালানোর সময় কার্যকর হতে পারে।
echo $GOOGLE_CLOUD_PROJECT
কমান্ড আউটপুট
<PROJECT_ID>
- অবশেষে, ডিফল্ট জোন এবং প্রকল্প কনফিগারেশন সেট করুন।
gcloud config set compute/zone us-central1-f
আপনি বিভিন্ন জোন বিভিন্ন চয়ন করতে পারেন. আরও তথ্যের জন্য, অঞ্চল এবং অঞ্চল দেখুন।
3. একটি সাধারণ ক্লাউড ফাংশন স্থাপন করুন
নিরীক্ষণ করার জন্য কিছু করার জন্য, একটি "হ্যালো, ওয়ার্ল্ড" ক্লাউড ফাংশন তৈরি করুন। Google ক্লাউড কনসোলের বাম মেনুতে, ক্লাউড ফাংশনে ক্লিক করুন, তারপরে ফাংশন তৈরি করুন ক্লিক করুন।
আপনার নতুন ক্লাউড ফাংশনের নাম হিসাবে "হ্যালো-মনিটর" লিখুন।
সোর্স কোডের জন্য সমস্ত ডিফল্ট রাখুন। (তবে, আপনি চাইলে ভিন্ন ভাষা/রানটাইম বেছে নিতে পারেন।)
অবশেষে, তৈরি করুন ক্লিক করুন।
আপনি আপনার ক্লাউড ফাংশনটি এর পাশে একটি সবুজ চেকমার্ক সহ তালিকাভুক্ত দেখতে পাবেন, যার অর্থ এটি আহ্বান করার জন্য প্রস্তুত৷
4. ক্লাউড ফাংশন পরীক্ষা করুন এবং লোড জেনারেটর ব্যবহার করে ট্রাফিক পাঠান
এখন যেহেতু ক্লাউড ফাংশন সফলভাবে স্থাপন করা হয়েছে, কমান্ড লাইন থেকে এটি পরীক্ষা করুন।
প্রথমে, ক্লাউড শেল ব্যবহার করে, নিম্নলিখিত কমান্ডটি নির্গত করুন:
$ gcloud functions describe hello-monitor
এটি httpsTrigger
এর জন্য একটি URL সহ ক্লাউড ফাংশনের একটি বিবরণ ফেরত দেবে, যা ক্লাউড ফাংশন চালু করার জন্য HTTP(S) এন্ডপয়েন্ট। এটি নিম্নলিখিত মত হওয়া উচিত: https://<region>-<project-id>.cloudfunctions.net/hello-monitor.
ক্লাউড ফাংশন ট্রিগার করা এখন সেই URL-এ curl
কমান্ড ব্যবহার করার মতোই সহজ হওয়া উচিত।
$ curl https://<region>-<project-id>.cloudfunctions.net/hello-monitor Hello World!
এখন Vegeta ব্যবহার করুন, একটি সহজ HTTP লোড-টেস্টিং টুল। এটি ইনস্টল করতে, ক্লাউড শেল থেকে, কেবল নিম্নলিখিত কমান্ডটি টাইপ করুন:
$ go get -u github.com/tsenart/vegeta
আপনার ক্লাউড ফাংশনে কিছু ট্রাফিক পাঠাতে (কয়েক মিনিটের জন্য প্রতি সেকেন্ডে পাঁচটি অনুরোধ), নিম্নলিখিত কমান্ডটি ব্যবহার করুন:
$ echo "GET https://<region>-<project-id>.cloudfunctions.net/hello-monitor" \ | vegeta attack -rate=5 -duration=120s \ > results.bin
5. লগ মাধ্যমে নেভিগেট
আপনার ক্লাউড ফাংশন বিশদ দৃশ্য থেকে, লগ দেখুন ক্লিক করুন।
এটি আপনাকে আপনার প্রকল্পের স্ট্যাকড্রাইভার লগিং বিভাগে নিয়ে যাবে, আপনাকে শুধুমাত্র আপনার ক্লাউড ফাংশন লগগুলি দেখাবে।
আপনার ক্লাউড ফাংশনে সমস্ত অনুরোধের একটি 200 স্ট্যাটাস কোড ফেরত দেওয়া উচিত।
লগগুলি দেখার সময়, আপনি নিম্নলিখিতগুলি করতে পারেন:
- লগ লেভেল দ্বারা ফিল্টার করুন (আপনার ক্ষেত্রে, সমস্ত লগ
debug
লেভেল)। - একটি নির্দিষ্ট সময়সীমা নির্বাচন করুন (আপেক্ষিক বা পরম)।
- লগ স্ট্রিমিং সক্ষম করুন ( প্লে সহ
পর্দার শীর্ষে)।
- লগ এন্ট্রির একটি লিঙ্ক কপি করুন (টিমের সদস্যদের সাথে ভাগ করার জন্য)।
- সম্পদ প্রসঙ্গে একটি লগ এন্ট্রি দেখান।
- একটি লগ এন্ট্রি পিন করুন (একটি ভিজ্যুয়াল কিউ হিসাবে)।
- BigQuery, ক্লাউড স্টোরেজ, বা Pub/Sub-এ লগ রপ্তানি করুন (অথবা কেবল JSON বা CSV ফাইল হিসাবে ডাউনলোড করুন)।
6. ফাংশন আপডেট করুন
ক্লাউড কনসোল ব্যবহার করে, ফাংশনের বিশদ বিবরণে নেভিগেট করুন এবং প্রতি সেকেন্ডে আহ্বানের সংখ্যা এবং তাদের সম্পাদনের সময় আপনার লোড টেস্টারের সাথে তৈরি করা স্পাইকটি পর্যবেক্ষণ করুন।
লেটেন্সি এবং RPC কলগুলি পর্যবেক্ষণ করার জন্য আরও একটি বিস্তারিত টুল হল স্ট্যাকড্রাইভার ট্রেস, কিন্তু আপনি এটি ব্যবহার করার আগে, আপনাকে আপনার ক্লাউড ফাংশনে কিছু পরিবর্তন করতে হবে। নিম্নলিখিতগুলি করুন:
- নির্ভরতা হিসাবে জীবন রক্ষাকারী
node-emoji
প্যাকেজ যোগ করুন। - নোড-ইমোজি মডিউল ব্যবহার করতে ফাংশন কোড আপডেট করুন এবং কিছু লেটেন্সি প্রবর্তন করুন।
- ক্লাউড ফাংশনের জন্য স্ট্যাকড্রাইভার ট্রেস সক্ষম করতে একটি পরিবেশ পরিবর্তনশীল যোগ করুন।
ফাংশন বিবরণ থেকে, ফাংশন পরিবর্তন করতে সম্পাদনা ক্লিক করুন।
node-emoji
প্যাকেজের জন্য নির্ভরতা যোগ করতে package.json
ফাইলটি সম্পাদনা করুন।
{
"name": "sample-http",
"version": "0.0.1",
"dependencies": {
"node-emoji": "^1.8.1"
}
}
index.js
এর বিষয়বস্তুকে নিম্নলিখিতগুলিতে পরিবর্তন করে প্রকৃত ফাংশন সম্পাদনা করুন:
const emoji = require('node-emoji');
exports.helloWorld = (req, res) => {
let message = req.query.message || req.body.message || 'Hello World!';
// add some latency, functions are too quick!
setTimeout(function() {
message += emoji.random().emoji;
res.status(200).send(message);
}, (3 * 100)); // 300ms
};
এটি 300 মিলিসেকেন্ডের জন্য বিরতির পরে ক্লাউড ফাংশন দ্বারা ফিরে আসা বার্তাটিতে একটি এলোমেলো ইমোজি যুক্ত করে৷
অবশেষে, GOOGLE_CLOUD_TRACE_ENABLED
নামে একটি ক্লাউড ফাংশন এনভায়রনমেন্ট ভেরিয়েবল যোগ করুন এবং নিম্নরূপ true
সেট করুন:
Save এ ক্লিক করুন।
ক্লাউড শেল-এ ফিরে যান এবং নতুন স্থাপন করা ক্লাউড ফাংশনে কিছু লোড জেনারেট করতে কমান্ডটি স্মরণ করুন:
$ echo "GET https://<region>-<project-id>.cloudfunctions.net/hello-monitor" \ | vegeta attack -rate=5 -duration=120s \ > results.bin
এখন আপনি অন্য কোন সেটআপ প্রয়োজনীয়তা ছাড়াই উত্পাদিত ট্রেসের তালিকা পর্যবেক্ষণ করতে প্রস্তুত এবং আপনার কোডে কোনও নির্দিষ্ট ট্রেসিং লাইব্রেরি নেই!
7. আপডেট করা ক্লাউড ফাংশন ট্রেস করুন
বাম-হাতের মেনু ব্যবহার করে, ট্রেস তালিকাতে নেভিগেট করুন ( স্ট্যাকড্রাইভার ট্রেসের অধীনে)।
আপনি নিম্নলিখিত স্ক্রিনশট অনুরূপ কিছু দেখতে হবে:
এটি এটিকে বেশ স্পষ্ট করে তুলতে হবে যে আপনার ক্লাউড ফাংশনে প্রবর্তিত লেটেন্সি প্রকৃতপক্ষে 300 মিলিসেকেন্ডে পরিমাপ করা হয়।
গ্রাফের প্রতিটি বিন্দু একটি অনুরোধ যার জন্য আপনি বিস্তারিত তথ্য দেখতে পারেন, যেমন টাইমস্ট্যাম্প, HTTP পদ্ধতি এবং স্থিতি, এর লেবেল, সংশ্লিষ্ট লগ এন্ট্রির একটি লিঙ্ক এবং ক্লাউড ফাংশন করে যে কোনো পরবর্তী RPC কল।
আপনি যদি জুম ইন করতে চান তবে গ্রাফটিতে ক্লিক করুন এবং টেনে আনুন।
জুম আউট করতে, পৃষ্ঠার শীর্ষে জুম পূর্বাবস্থায় ক্লিক করুন৷
যেহেতু আপনি একটি একক ক্লাউড ফাংশন স্থাপন করেছেন, গ্রাফটি hello-monitor
URI-তে শুধুমাত্র GET
অনুরোধগুলি দেখায়, তবে আপনি HTTP পদ্ধতি (GET, POST, DELETE) দ্বারা HTTP স্থিতি (2XX, 3XX) বা অনুরোধ ফিল্টার ব্যবহার করে ট্রেসগুলি ফিল্টার করতে পারেন .
বামদিকের মেনুতে ওভারভিউতে নেভিগেট করুন:
এই ওভারভিউ পৃষ্ঠা থেকে, আপনি সাম্প্রতিক ট্রেস এবং অন্যান্য অন্তর্দৃষ্টি খুঁজে পেতে পারেন।
আপনি একটি URI অনুরোধ ফিল্টার, একটি HTTP পদ্ধতি, একটি HTTP স্থিতি এবং একটি সময় সীমার সংমিশ্রণের উপর ভিত্তি করে কাস্টম রিপোর্ট তৈরি করার ক্ষমতাও খুঁজে পেতে পারেন। এমনকি এটি আপনাকে একটি সময় বেসলাইনের সাথে উত্পন্ন মানগুলির তুলনা করতে দেয়।
আপনি যদি পর্যাপ্ত ডেটা পয়েন্ট সহ সঠিক সময়সীমা সেট আপ করতে পরিচালনা করেন তবে আপনি একটি প্রতিবেদন তৈরি করতে পারেন যা প্রাথমিক ক্লাউড ফাংশন এবং নতুনটির মধ্যে গুরুত্বপূর্ণ লেটেন্সি পরিবর্তন দেখায়৷
এই ধরনের একটি কাস্টম রিপোর্ট যখন একটি কর্মক্ষমতা সমস্যা প্রবর্তিত হয়েছিল তা খুঁজে বের করতে এবং একটি পরিষেবা স্তর নির্দেশক (SLI) ট্র্যাক করতে ব্যবহার করা যেতে পারে, যেমন শেষ-ব্যবহারকারীর অনুরোধ লেটেন্সি৷
8. সম্পদ পরিষ্কার করার সময়
যে কোডল্যাব শেষ!
যদিও ক্লাউড ফাংশন এবং স্ট্যাকড্রাইভার টুল সার্ভারহীন প্ল্যাটফর্ম যা ব্যবহার না করার সময় খরচ বহন করে না, একজন ভালো ক্লাউড নাগরিক হোন এবং আপনার ক্লাউড ফাংশন মুছুন। ক্লাউড ফাংশনের অধীনে ওভারভিউতে কেবল hello-monitor
নির্বাচন করুন এবং মুছুন ক্লিক করুন।