ক্লাউড ফাংশনের জন্য স্ট্যাকড্রাইভার লগিং এবং স্ট্যাকড্রাইভার ট্রেস ব্যবহার করুন

ক্লাউড ফাংশনের জন্য স্ট্যাকড্রাইভার লগিং এবং স্ট্যাকড্রাইভার ট্রেস ব্যবহার করুন

এই কোডল্যাব সম্পর্কে

subjectঅক্টো ৭, ২০২০-এ শেষবার আপডেট করা হয়েছে
account_circleএকজন Googler-এর লেখা

1. ভূমিকা

এই কোডল্যাবে, আপনি ক্লাউড ফাংশনগুলির সাথে কাজ করে এমন সমস্ত বিকাশকারীদের জন্য উপলব্ধ লগিং এবং মনিটরিং সরঞ্জামগুলির সুবিধা নিতে শিখবেন৷ সরঞ্জামগুলি প্রতিটি ক্লাউড ফাংশনের সাথে আসে যা আপনি সমস্ত সমর্থিত ভাষা জুড়ে স্থাপন করেন এবং আপনার সার্ভারহীন কোড লেখা এবং পরিচালনা করার সময় আপনাকে আরও উত্পাদনশীল হতে সক্ষম করতে হবে।

5815064fec87444b.png

আপনি একটি HTTP-ট্রিগার করা ক্লাউড ফাংশন ব্যবহার করবেন, তবে আপনি যা কভার করেন তা অন্যান্য ভাষা এবং অন্যান্য ইভেন্ট দ্বারা ট্রিগার করা ক্লাউড ফাংশনগুলিতেও প্রযোজ্য।

2. সেটআপ এবং প্রয়োজনীয়তা

স্ব-গতিসম্পন্ন পরিবেশ সেটআপ

  1. ক্লাউড কনসোলে সাইন ইন করুন এবং একটি নতুন প্রকল্প তৈরি করুন বা বিদ্যমান একটি পুনরায় ব্যবহার করুন৷ (যদি আপনার ইতিমধ্যেই একটি Gmail বা G Suite অ্যাকাউন্ট না থাকে তবে আপনাকে অবশ্যই একটি তৈরি করতে হবে।)

dMbN6g9RawQj_VXCSYpdYncY-DbaRzr2GbnwoV7jFf1u3avxJtmGPmKpMYgiaMH-qu80a_NJ9p2IIXFppYk8x3wyymZXavjglNLJJhuXieCemXuD0pdYncY-DbaRzr2GbnwoV7jFf1u3avxJtmGPmKpMYgiaMH-qu80a_NJ9p2IIXFppYk8x3wyymZXavjglNLJJhuXieCemXuD0pdYncY5Gv3GU Zw

ci9Oe6PgnbNuSYlMyvbXF1JdQyiHoEgnhl4PlV_MFagm2ppzhueRkqX4eLjJllZco_2zCp0V0bpTupUSKji9KkQyWqj11pqit1K1faS1V6aFxLpGtQd5Q55

8-tA_Lheyo8SscAVKrGii2coplQp2_D1Iosb2ViABY0UUO1A8cimXUu6Wf1R9zJIRExL5OB2j946aIiFtyKTzxDcNnuznmR45vZ2HMoK3oK3o67gCu67jCGUJCGUX67j

প্রজেক্ট আইডিটি মনে রাখবেন, সমস্ত Google ক্লাউড প্রকল্প জুড়ে একটি অনন্য নাম (উপরের নামটি ইতিমধ্যে নেওয়া হয়েছে এবং আপনার জন্য কাজ করবে না, দুঃখিত!)। এটি পরে এই কোডল্যাবে PROJECT_ID হিসাবে উল্লেখ করা হবে।

  1. এর পরে, Google ক্লাউড সংস্থানগুলি ব্যবহার করার জন্য আপনাকে ক্লাউড কনসোলে বিলিং সক্ষম করতে হবে৷

এই কোডল্যাবের মাধ্যমে চালানোর জন্য খুব বেশি খরচ করা উচিত নয়, যদি কিছু থাকে। "ক্লিনিং আপ" বিভাগে যে কোনও নির্দেশাবলী অনুসরণ করতে ভুলবেন না যা আপনাকে কীভাবে সংস্থানগুলি বন্ধ করতে হবে তা পরামর্শ দেয় যাতে আপনি এই টিউটোরিয়ালের বাইরে বিলিং করতে না পারেন৷ Google ক্লাউডের নতুন ব্যবহারকারীরা $300USD ফ্রি ট্রায়াল প্রোগ্রামের জন্য যোগ্য৷

মেঘের শেল

ক্লাউড ফাংশন, এবং এর লগিং এবং পর্যবেক্ষণ ক্ষমতা আপনার ল্যাপটপ থেকে দূরবর্তীভাবে ব্যবহার করা যেতে পারে, আপনি ক্লাউড শেল ব্যবহার করবেন, একটি কমান্ড-লাইন পরিবেশ Google ক্লাউডে চলমান।

এই ডেবিয়ান-ভিত্তিক ভার্চুয়াল মেশিনটি আপনার প্রয়োজনীয় সমস্ত বিকাশের সরঞ্জামগুলির সাথে লোড করা হয়েছে। এটি একটি ক্রমাগত 5GB হোম ডিরেক্টরি অফার করে এবং Google ক্লাউডে চলে, যা নেটওয়ার্ক কর্মক্ষমতা এবং প্রমাণীকরণকে ব্যাপকভাবে উন্নত করে। এর মানে হল যে এই কোডল্যাবের জন্য আপনার যা দরকার তা হল একটি ব্রাউজার (হ্যাঁ, এটি একটি Chromebook এ কাজ করে)।

  1. ক্লাউড কনসোল থেকে ক্লাউড শেল সক্রিয় করতে, কেবল ক্লাউড শেল সক্রিয় করুন ক্লিক করুন fEbHefbRynwXpq1vj2wJw6Dr17O0np8l-WOekxAZYlZQIORsWQE_xJl-cNhogjATLn-YxLVz8CgLvIW1Ncc0yXKJsfzJGMYgUeLsVBzxNg74Bg7fz7 kP-X3Q (পরিবেশের সাথে সংযোগ স্থাপন এবং সংযোগের জন্য এটি শুধুমাত্র কয়েক মুহূর্ত নিতে হবে)।

I5aEsuNurCxHoDFjZRZrKBdarPPKPoKuExYpdagmdaOLKe7eig3DAKJitIKyuOpuwmrMAyZhp5AXpmD_k66cBuc1aUnWlJeSfo_aTKPY9aNMurhfeggN1NYp1NYp1CJ

স্ক্রীন শট 2017-06-14 10.13.43 PM.png এ

একবার ক্লাউড শেলের সাথে সংযুক্ত হয়ে গেলে, আপনি দেখতে পাবেন যে আপনি ইতিমধ্যেই প্রমাণীকৃত এবং প্রকল্পটি ইতিমধ্যেই আপনার 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 খুঁজছেন? সেটআপ ধাপে আপনি কোন আইডি ব্যবহার করেছেন তা দেখুন বা ক্লাউড কনসোল ড্যাশবোর্ডে দেখুন:

R7chO4PKQfLC3bvFBNZJALLTUiCgyLEq_67ECX7ohs_0ZnSjC7GxDNxWrJJUaoM53LnqABYamrBJhCuXF-J9XBzuUgaz7VvaxNrkP2TAn93DrxBzuUgaz7VvaxNrkP2TAn93DrxX7ohs-5GZXH52T

ক্লাউড শেল ডিফল্টরূপে কিছু এনভায়রনমেন্ট ভেরিয়েবলও সেট করে, যা আপনার ভবিষ্যত কমান্ড চালানোর সময় কার্যকর হতে পারে।

echo $GOOGLE_CLOUD_PROJECT

কমান্ড আউটপুট

<PROJECT_ID>
  1. অবশেষে, ডিফল্ট জোন এবং প্রকল্প কনফিগারেশন সেট করুন।
gcloud config set compute/zone us-central1-f

আপনি বিভিন্ন জোন বিভিন্ন চয়ন করতে পারেন. আরও তথ্যের জন্য, অঞ্চল এবং অঞ্চল দেখুন।

3. একটি সাধারণ ক্লাউড ফাংশন স্থাপন করুন

নিরীক্ষণ করার জন্য কিছু করার জন্য, একটি "হ্যালো, ওয়ার্ল্ড" ক্লাউড ফাংশন তৈরি করুন। Google ক্লাউড কনসোলের বাম মেনুতে, ক্লাউড ফাংশনে ক্লিক করুন, তারপরে ফাংশন তৈরি করুন ক্লিক করুন।

3c13aa20af602aa7.png

আপনার নতুন ক্লাউড ফাংশনের নাম হিসাবে "হ্যালো-মনিটর" লিখুন।

fa6816c96d6d5b94.png

সোর্স কোডের জন্য সমস্ত ডিফল্ট রাখুন। (তবে, আপনি চাইলে ভিন্ন ভাষা/রানটাইম বেছে নিতে পারেন।)

7aadf164450484e.png

অবশেষে, তৈরি করুন ক্লিক করুন।

dc74cd21000d6c91.png

আপনি আপনার ক্লাউড ফাংশনটি এর পাশে একটি সবুজ চেকমার্ক সহ তালিকাভুক্ত দেখতে পাবেন, যার অর্থ এটি আহ্বান করার জন্য প্রস্তুত৷

5363a34eb001d5ed.png

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. লগ মাধ্যমে নেভিগেট

আপনার ক্লাউড ফাংশন বিশদ দৃশ্য থেকে, লগ দেখুন ক্লিক করুন।

b24157fd3376e6a8.png

এটি আপনাকে আপনার প্রকল্পের স্ট্যাকড্রাইভার লগিং বিভাগে নিয়ে যাবে, আপনাকে শুধুমাত্র আপনার ক্লাউড ফাংশন লগগুলি দেখাবে।

5a36fa75d2fb0165.png

আপনার ক্লাউড ফাংশনে সমস্ত অনুরোধের একটি 200 স্ট্যাটাস কোড ফেরত দেওয়া উচিত।

লগগুলি দেখার সময়, আপনি নিম্নলিখিতগুলি করতে পারেন:

  • লগ লেভেল দ্বারা ফিল্টার করুন (আপনার ক্ষেত্রে, সমস্ত লগ debug লেভেল)।
  • একটি নির্দিষ্ট সময়সীমা নির্বাচন করুন (আপেক্ষিক বা পরম)।
  • লগ স্ট্রিমিং সক্ষম করুন ( প্লে সহ 751a4600016f34a7.png পর্দার শীর্ষে)।
  • লগ এন্ট্রির একটি লিঙ্ক কপি করুন (টিমের সদস্যদের সাথে ভাগ করার জন্য)।
  • সম্পদ প্রসঙ্গে একটি লগ এন্ট্রি দেখান।
  • একটি লগ এন্ট্রি পিন করুন (একটি ভিজ্যুয়াল কিউ হিসাবে)।
  • BigQuery, ক্লাউড স্টোরেজ, বা Pub/Sub-এ লগ রপ্তানি করুন (অথবা কেবল JSON বা CSV ফাইল হিসাবে ডাউনলোড করুন)।

6. ফাংশন আপডেট করুন

ক্লাউড কনসোল ব্যবহার করে, ফাংশনের বিশদ বিবরণে নেভিগেট করুন এবং প্রতি সেকেন্ডে আহ্বানের সংখ্যা এবং তাদের সম্পাদনের সময় আপনার লোড টেস্টারের সাথে তৈরি করা স্পাইকটি পর্যবেক্ষণ করুন।

aaee3159bbe395d3.png7ed347101da5eca0.png

লেটেন্সি এবং RPC কলগুলি পর্যবেক্ষণ করার জন্য আরও একটি বিস্তারিত টুল হল স্ট্যাকড্রাইভার ট্রেস, কিন্তু আপনি এটি ব্যবহার করার আগে, আপনাকে আপনার ক্লাউড ফাংশনে কিছু পরিবর্তন করতে হবে। নিম্নলিখিতগুলি করুন:

  1. নির্ভরতা হিসাবে জীবন রক্ষাকারী node-emoji প্যাকেজ যোগ করুন।
  2. নোড-ইমোজি মডিউল ব্যবহার করতে ফাংশন কোড আপডেট করুন এবং কিছু লেটেন্সি প্রবর্তন করুন।
  3. ক্লাউড ফাংশনের জন্য স্ট্যাকড্রাইভার ট্রেস সক্ষম করতে একটি পরিবেশ পরিবর্তনশীল যোগ করুন।

ফাংশন বিবরণ থেকে, ফাংশন পরিবর্তন করতে সম্পাদনা ক্লিক করুন।

39b0f8f98b18a6c0.png

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 সেট করুন:

9205bd277b76aa21.png

Save এ ক্লিক করুন।

ক্লাউড শেল-এ ফিরে যান এবং নতুন স্থাপন করা ক্লাউড ফাংশনে কিছু লোড জেনারেট করতে কমান্ডটি স্মরণ করুন:

$ echo "GET https://<region>-<project-id>.cloudfunctions.net/hello-monitor" \
   | vegeta attack -rate=5 -duration=120s \
   > results.bin

এখন আপনি অন্য কোন সেটআপ প্রয়োজনীয়তা ছাড়াই উত্পাদিত ট্রেসের তালিকা পর্যবেক্ষণ করতে প্রস্তুত এবং আপনার কোডে কোনও নির্দিষ্ট ট্রেসিং লাইব্রেরি নেই!

7. আপডেট করা ক্লাউড ফাংশন ট্রেস করুন

বাম-হাতের মেনু ব্যবহার করে, ট্রেস তালিকাতে নেভিগেট করুন ( স্ট্যাকড্রাইভার ট্রেসের অধীনে)।

576373f38cad6f8.png

আপনি নিম্নলিখিত স্ক্রিনশট অনুরূপ কিছু দেখতে হবে:

44a36b758b49f88f.png

এটি এটিকে বেশ স্পষ্ট করে তুলতে হবে যে আপনার ক্লাউড ফাংশনে প্রবর্তিত লেটেন্সি প্রকৃতপক্ষে 300 মিলিসেকেন্ডে পরিমাপ করা হয়।

গ্রাফের প্রতিটি বিন্দু একটি অনুরোধ যার জন্য আপনি বিস্তারিত তথ্য দেখতে পারেন, যেমন টাইমস্ট্যাম্প, HTTP পদ্ধতি এবং স্থিতি, এর লেবেল, সংশ্লিষ্ট লগ এন্ট্রির একটি লিঙ্ক এবং ক্লাউড ফাংশন করে যে কোনো পরবর্তী RPC কল।

5815064fec87444b.png

আপনি যদি জুম ইন করতে চান তবে গ্রাফটিতে ক্লিক করুন এবং টেনে আনুন। ট্রেস গ্রাফে একটি কাস্টম সময় সীমা নির্বাচন করা হচ্ছে

জুম আউট করতে, পৃষ্ঠার শীর্ষে জুম পূর্বাবস্থায় ক্লিক করুন৷

যেহেতু আপনি একটি একক ক্লাউড ফাংশন স্থাপন করেছেন, গ্রাফটি hello-monitor URI-তে শুধুমাত্র GET অনুরোধগুলি দেখায়, তবে আপনি HTTP পদ্ধতি (GET, POST, DELETE) দ্বারা HTTP স্থিতি (2XX, 3XX) বা অনুরোধ ফিল্টার ব্যবহার করে ট্রেসগুলি ফিল্টার করতে পারেন .

বামদিকের মেনুতে ওভারভিউতে নেভিগেট করুন:

e920cfca2a50899e.png

এই ওভারভিউ পৃষ্ঠা থেকে, আপনি সাম্প্রতিক ট্রেস এবং অন্যান্য অন্তর্দৃষ্টি খুঁজে পেতে পারেন।

ef5a45647967d275.png

আপনি একটি URI অনুরোধ ফিল্টার, একটি HTTP পদ্ধতি, একটি HTTP স্থিতি এবং একটি সময় সীমার সংমিশ্রণের উপর ভিত্তি করে কাস্টম রিপোর্ট তৈরি করার ক্ষমতাও খুঁজে পেতে পারেন। এমনকি এটি আপনাকে একটি সময় বেসলাইনের সাথে উত্পন্ন মানগুলির তুলনা করতে দেয়।

5bd34e9d13b47fb6.png

আপনি যদি পর্যাপ্ত ডেটা পয়েন্ট সহ সঠিক সময়সীমা সেট আপ করতে পরিচালনা করেন তবে আপনি একটি প্রতিবেদন তৈরি করতে পারেন যা প্রাথমিক ক্লাউড ফাংশন এবং নতুনটির মধ্যে গুরুত্বপূর্ণ লেটেন্সি পরিবর্তন দেখায়৷

2cc0e9a3212b91bb.png

2e7b1ebf2f0a2b4f.png

এই ধরনের একটি কাস্টম রিপোর্ট যখন একটি কর্মক্ষমতা সমস্যা প্রবর্তিত হয়েছিল তা খুঁজে বের করতে এবং একটি পরিষেবা স্তর নির্দেশক (SLI) ট্র্যাক করতে ব্যবহার করা যেতে পারে, যেমন শেষ-ব্যবহারকারীর অনুরোধ লেটেন্সি৷

8. সম্পদ পরিষ্কার করার সময়

যে কোডল্যাব শেষ!

যদিও ক্লাউড ফাংশন এবং স্ট্যাকড্রাইভার টুল সার্ভারহীন প্ল্যাটফর্ম যা ব্যবহার না করার সময় খরচ বহন করে না, একজন ভালো ক্লাউড নাগরিক হোন এবং আপনার ক্লাউড ফাংশন মুছুন। ক্লাউড ফাংশনের অধীনে ওভারভিউতে কেবল hello-monitor নির্বাচন করুন এবং মুছুন ক্লিক করুন।

aceb633cf70a4a27.png