Google Stackdriver ডিবাগ, ট্রেস, লগিং এবং লগপয়েন্ট ব্যবহার করে

এই টিউটোরিয়ালটি আপনাকে Google Stackdriver- এর একটি সফরে নিয়ে যায়, যা আপনাকে আপনার Google ক্লাউড প্ল্যাটফর্ম অ্যাপ্লিকেশনগুলির সাথে নিম্নলিখিতগুলি করতে দেয়:

  • অ্যাপ ইঞ্জিন, কম্পিউট ইঞ্জিন এবং কন্টেইনার ইঞ্জিনে চলমান আপনার অ্যাপ্লিকেশনগুলিতে একটি ডিবাগ স্ন্যাপশট নিন।
  • অ্যাপ্লিকেশন লগ দেখুন.
  • মেট্রিক্স সেটআপ করুন, তাদের মনিটর করুন এবং সতর্কতা পান।
  • আপনার API কলগুলি ট্রেস করুন এবং প্রতিক্রিয়ার সময় এবং আপনার কোডে সম্ভাব্য বাধাগুলির একটি ব্রেকডাউন পান৷
  • একটি চলমান অ্যাপ্লিকেশনে লগ পয়েন্ট যোগ করুন , আপনার অ্যাপ স্থাপনের প্রয়োজন ছাড়াই। এটি সত্যিই একটি অনন্য (এবং আশা করি দরকারী) বৈশিষ্ট্য।

এই টিউটোরিয়ালে, আমরা স্ক্র্যাচ থেকে নিম্নলিখিত কাজ করতে যাচ্ছি:

  1. একটি Google ক্লাউড প্ল্যাটফর্ম প্রকল্প তৈরি করুন (বিশেষভাবে অ্যাপ ইঞ্জিন)
  2. Google ক্লাউড প্ল্যাটফর্ম প্রজেক্ট সোর্স রিপোজিটরি সেটআপ করুন
  3. Github থেকে উপলব্ধ স্ট্যান্ডার্ড গেস্টবুক পাইথন অ্যাপ্লিকেশন উত্স ব্যবহার করুন
  4. কোড স্থাপন করুন
  5. চলমান অ্যাপ্লিকেশনটির ডিবাগ স্ন্যাপশট কিভাবে আমরা পেতে পারি তা দেখুন
  6. লগিং এবং অ্যাপ্লিকেশন কল ট্রেস দেখুন
  7. বর্তমান চলমান অ্যাপ্লিকেশনে লগপয়েন্ট যোগ করুন। এই বৈশিষ্ট্যটি প্রাথমিকভাবে এই ব্লগ পোস্টে কভার করা হয়েছিল: কোনো রিস্টার্ট ছাড়াই একটি অ্যাপ্লিকেশনে অ্যাপ্লিকেশন লগ যোগ করুন

চল শুরু করি.

এই বিষয়বস্তুটি প্রাথমিকভাবে রোমিন ইরানি দ্বারা তৈরি করা হয়েছিল এবং এখানে পোস্ট করা হয়েছিল

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

আপনার যদি ইতিমধ্যে একটি Google অ্যাকাউন্ট না থাকে (Gmail বা Google Apps), তাহলে আপনাকে অবশ্যই একটি তৈরি করতে হবে। Google ক্লাউড প্ল্যাটফর্ম কনসোলে সাইন-ইন করুন ( console.cloud.google.com ) এবং একটি নতুন প্রকল্প তৈরি করুন:

2016-02-10 12:45:26.png এর স্ক্রিনশট

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

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

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

Google ক্লাউড প্ল্যাটফর্মের নতুন ব্যবহারকারীরা $300 বিনামূল্যের ট্রায়ালের জন্য যোগ্য৷

গুগল ক্লাউড শেল

এই কোডল্যাবে আমরা Google ক্লাউড শেল ব্যবহার করব, ক্লাউডে চলমান একটি কমান্ড লাইন পরিবেশ।

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

Google ক্লাউড শেল সক্রিয় করতে, বিকাশকারী কনসোল থেকে উপরের ডানদিকের বোতামে ক্লিক করুন (এটি পরিবেশের সাথে সংযোগ করতে এবং সংযোগ করতে মাত্র কয়েক মুহূর্ত লাগবে):

activateCloudShell.png

তারপর পরিষেবার শর্তাবলী স্বীকার করুন এবং "স্টার্ট ক্লাউড শেল" লিঙ্কে ক্লিক করুন:

x.png

স্ক্রীন শট 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 খুঁজছেন? সেটআপ ধাপে আপনি কোন আইডি ব্যবহার করেছেন তা দেখুন বা কনসোল ড্যাশবোর্ডে দেখুন:

Project_ID.png

গুরুত্বপূর্ণ: অবশেষে, ডিফল্ট জোন এবং প্রকল্প কনফিগারেশন সেট করুন:

gcloud config set compute/zone us-central1-f

আপনি বিভিন্ন জোন বিভিন্ন চয়ন করতে পারেন. অঞ্চল এবং অঞ্চল ডকুমেন্টেশনে আরও জানুন।

সক্রিয় StackDriver APIs দেখুন

আপনার প্রকল্পের জন্য সক্রিয় করা হয়েছে যে API গুলো একবার দেখে নেওয়া যাক। নীচে দেখানো হিসাবে API ড্যাশবোর্ড খুঁজতে অনুসন্ধান বার ব্যবহার করুন.

আপনার প্রকল্পের জন্য সক্রিয় করা হয়েছে এমন নির্দিষ্ট APIগুলি পর্যবেক্ষণ করুন:

প্রতিটি Google ক্লাউড প্ল্যাটফর্ম প্রকল্প ব্যক্তিগত গিট হোস্টিং অফার করে তবে আমাদের প্রথমে কাজ করার জন্য একটি ডিফল্ট সংগ্রহস্থল তৈরি করতে হবে। কনসোল অনুসন্ধান বাক্স ব্যবহার করে উত্স সংগ্রহস্থলে নেভিগেট করুন:

"ডিফল্ট" নামে একটি নতুন কোড সংগ্রহস্থল তৈরি করতে "রিপোজিটরি তৈরি করুন" এ ক্লিক করুন:

ক্লাউড শেল ব্যবহার করে, আমরা এখন এই ডিরেক্টরিটিকে আমাদের গুগল ক্লাউড শেল ইনস্ট্যান্সে ক্লোন করতে যাচ্ছি। এটি করার জন্য, আসুন প্রথমে আমাদের Google ক্লাউড শেল ইনস্ট্যান্সে একটি ডিরেক্টরি তৈরি করি এবং নীচে দেখানো হিসাবে এটিতে নেভিগেট করি (নমুনা আউটপুট):

mkdir stackdriver-demo
cd stackdriver-demo/

এখন, আমরা নিচে দেখানো gcloud কমান্ডের মাধ্যমে এখানে ডিফল্ট সংগ্রহস্থল ক্লোন করতে পারি:

gcloud source repos clone default

এটি হল কনসোল আউটপুট যা আপনাকে দেখতে হবে:

Cloning into '/home/gcp123_student/default'...
warning: You appear to have cloned an empty repository.
Project [qwiklabs-gcp-1234abc1234] repository [default] was cloned to [/home/gcp123_student/default].

দারুণ! আমাদের সেট আপ করা গিট রিমোটগুলির মধ্যে একটু গভীর খনন করার জন্য একটু সময় নেওয়া যাক। এটি অগত্যা নয় তবে এমন কিছু যাতে আপনি পর্দার আড়ালে কী ঘটেছে তা আরও ভালভাবে বুঝতে পারেন।

তৈরি করা ডিফল্ট ডিরেক্টরিতে যান এবং নিচের মতো git remote -v কমান্ডটি ফায়ার করুন

cd default
git remote -v

এটি হল কনসোল আউটপুট যা আপনার অনুরূপ কিছু দেখতে হবে:

origin https://source.developers.google.com/p/qwiklabs-gcp-1234abc1234/r/default (fetch)
origin https://source.developers.google.com/p/qwiklabs-gcp-1234abc1234/r/default (push)

আপনি দেখতে পাচ্ছেন যে এটি সঠিকভাবে গিট রিপোজিটরিতে নির্দেশ করে যা আমাদের GCP প্রকল্পের সাথে যুক্ত।

Github থেকে গেস্টবুক অ্যাপ্লিকেশন টানুন

আমরা যে অ্যাপ্লিকেশনটি ব্যবহার করতে যাচ্ছি সেটি হল গেস্টবুক নামে একটি আদর্শ অ্যাপ ইঞ্জিন অ্যাপ্লিকেশন এবং এটি অফিসিয়াল Google ক্লাউড প্ল্যাটফর্ম Github সংগ্রহস্থলে উপলব্ধ৷ এই অ্যাপ্লিকেশনটি শুরু করার জন্য অফিসিয়াল ডকুমেন্টেশনেরও অংশ। Github প্রকল্পটি এখানে উপলব্ধ: https://github.com/GoogleCloudPlatform/appengine-guestbook-python

আমরা এখন আমাদের ক্লাউড শেল ইনস্ট্যান্সে এই কোড টানতে যাচ্ছি। কমান্ড এবং এর আউটপুট এখানে দেখানো হয়েছে:

git pull https://github.com/GoogleCloudPlatform/appengine-guestbook-python

এটি হল কনসোল আউটপুট যা আপনাকে দেখতে হবে:

remote: Counting objects: 485, done.
remote: Total 485 (delta 0), reused 0 (delta 0), pack-reused 485
Receiving objects: 100% (485/485), 436.42 KiB | 163.00 KiB/s, done.
Resolving deltas: 100% (195/195), done.
From https://github.com/GoogleCloudPlatform/appengine-guestbook-python
* branch HEAD -> FETCH_HEAD

আমাদের কাছে এখন আমাদের Google ক্লাউড শেল ইন্সট্যান্সে স্থানীয়ভাবে উপস্থিত সমস্ত কোড রয়েছে। আপনি Github প্রকল্প থেকে টানা হয়েছে যে বিভিন্ন ফাইল দেখতে পারেন.

ক্লাউড শেল ব্যবহার করে বর্তমান কোডটি প্রজেক্ট গিট রিপোজিটরিতে পুশ করুন

এখন এই কোডটিকে GCP প্রোজেক্ট গিট রিপোজিটরিতে পুশ করা যাক, যাতে আমরা আমাদের কোডের জন্য ব্রেকপয়েন্ট, লগপয়েন্ট এবং আরও অনেক কিছু সেট করতে পারি। মনে রাখবেন যে এটি একটি বাধ্যতামূলক পদক্ষেপ নয় কারণ আপনি সরাসরি Github, আপনার স্থানীয় মেশিন এবং আপনার উত্স কোড লিঙ্ক করার জন্য অন্যান্য উপায়গুলির সাথে একীভূত করতে পারেন।

কিন্তু এখানে আমাদের উদ্দেশ্যের জন্য, আমরা এই কোডটিকে জিসিপি প্রজেক্ট গিট রিপোজিটরিতে পুশ করব। এটি নীচে দেখানো স্ট্যান্ডার্ড গিট পুশ কমান্ডের মাধ্যমে করা হয়:

git push origin master

এটি হল কনসোল আউটপুট যা আপনাকে দেখতে হবে:

Counting objects: 485, done.
Compressing objects: 100% (280/280), done.
Writing objects: 100% (485/485), 436.42 KiB | 0 bytes/s, done.
Total 485 (delta 195), reused 485 (delta 195)
remote: Storing objects: 100% (485/485), done.
remote: Processing commits: 100% (152/152), done.
To https://source.developers.google.com/p/qwiklabs-gcp-1234abc1234/r/default
* [new branch] master -> master

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

আমরা এখন আমাদের গেস্টবুক অ্যাপ ইঞ্জিন অ্যাপ্লিকেশন স্থাপন করার জন্য প্রস্তুত। অ্যাপটি স্থাপন করতে, নিশ্চিত করুন যে আপনি Google ক্লাউড শেল এবং ডিফল্ট ডিরেক্টরিতে আছেন যেমনটি আমরা সব সময় ছিলাম। নিচে দেখানো হিসাবে gcloud app deploy কমান্ড ব্যবহার করুন:

gcloud app deploy --version 1

একটি অঞ্চল নির্বাচন করতে বলা হলে, [1] us-east1 নির্বাচন করুন।

এটি হল কনসোল আউটপুট যা আপনাকে দেখতে হবে:

You are about to deploy the following services:
— qwiklabs-gcp-1234abc1234/default/1 (from [/home/gcp123-student/default/app.yaml])
Deployed URL: [https://qwiklabs-gcp-1234abc1234.appspot.com]
Do you want to continue (Y/n)? Y
Beginning deployment of service [default]...
File upload done.
Updating service [default]...done.
Deployed service [default] to https://qwiklabs-gcp-1234abc1234.appspot.com]

মনে রাখবেন যে আমরা অ্যাপ ডিপ্লয় কমান্ডে একটি সংস্করণ প্যারামিটার প্রদান করেছি। আমরা এটিকে "1" এর মান দিয়েছি।

যেহেতু গেস্টবুক অ্যাপ্লিকেশনটি অবিচলতার জন্য Google ক্লাউড ডেটাস্টোর ব্যবহার করে, তাই আমাদের ডেটাস্টোর সূচীগুলি আপডেট করতে হবে। সূচীগুলি index.yaml ফাইলে নির্দিষ্ট করা হয়েছে এবং আমরা নীচে দেখানো হিসাবে gcloud datastore create-indexes কমান্ডটি ব্যবহার করি:

gcloud datastore create-indexes index.yaml

এটি হল কনসোল আউটপুট যা আপনাকে দেখতে হবে:

You are about to update the following configurations:
— qwiklabs-gcp-1234abc1234/index From: [/home/gcp123_student/default/index.yaml]
Do you want to continue (Y/n)? Y

ডেটাস্টোর সূচীগুলি আপডেট হতে কিছুটা সময় লাগতে পারে। স্ট্যাটাস চেক করতে, "ডেটাস্টোর ইনডেক্স" অনুসন্ধান করুন এবং ইনডেক্সে ক্লিক করুন। যখন সূচীগুলি তৈরি হচ্ছে, আপনি নীচের হিসাবে দেখানো "সূচীকরণ" এর মান সহ একটি স্থিতি দেখতে পাবেন:

আমরা কম্পিউট → অ্যাপ ইঞ্জিনে গিয়ে এবং তারপরে নীচে দেখানো সংস্করণে ক্লিক করে সংস্করণ 1 সহ আমাদের অ্যাপ স্থাপন এবং উপলব্ধ কিনা তা পরীক্ষা করতে পারি:

এখন সবকিছুই ভালো দেখা উচিত এবং আপনি https://<PROJECT_ID>.appspot.com এ গিয়ে আপনার প্রকল্পটি একবার দেখে নিতে পারেন। আবার, ডেটাস্টোর সূচীগুলি প্রস্তুত হতে কয়েক মিনিট সময় লাগতে পারে, তাই যদি অ্যাপ্লিকেশনটি আপনাকে একটি ত্রুটি দেয় (উদাহরণস্বরূপ: অভ্যন্তরীণ সার্ভার ত্রুটি), কয়েক মিনিট পরে আবার চেষ্টা করুন৷

আসুন এখন লগ ইন করে এবং নীচে দেখানো কয়েকটি গেস্টবুক এন্ট্রি তৈরি করে অ্যাপ্লিকেশন ব্যবহার করি:

দারুণ! আমরা এখন স্ট্যাকড্রাইভার বৈশিষ্ট্যগুলিতে ডুব দেওয়ার জন্য প্রস্তুত।

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

গেস্টবুক অ্যাপ্লিকেশনের জন্য এখন এটি করা যাক। আমরা একটি স্ন্যাপশট চাইতে যাচ্ছি যদি কেউ হোম পেজে অনুরোধ করে এবং বিশেষভাবে আমরা এটি চাই যেখানে এটি বর্তমানে ডেটাস্টোরে থাকা শুভেচ্ছার তালিকা পুনরুদ্ধার করে।

এর জন্য কোডটি guestbook.py ফাইলে রয়েছে। এবং বিশেষভাবে, ডেটাস্টোর থেকে শুভেচ্ছার তালিকা পুনরুদ্ধার করার পরে আমরা রানটাইমে কোডটি পরীক্ষা করা শুরু করতে আগ্রহী। এটি লাইন # 72 এ করা হয়। সুতরাং আমরা লাইন 74-এ একটি ব্রেকপয়েন্ট রাখতে পারি, যাতে আমরা জানি যে #72 কার্যকর হবে।

এটি করতে, হয় AppEngine সংস্করণ ভিউ থেকে "ডিবাগ" এ ক্লিক করুন অথবা Stackdriver → Debug এ যান। এটি নীচে দেখানো স্ক্রিনটি প্রদর্শন করবে। আপনাকে যা করতে হবে তা হল বাম দিকের ফাইলটি ( guestbook.py ) নির্বাচন করুন, তারপর দেখানো লাইন নম্বরে ক্লিক করুন৷

এটি উপরের লাল বাক্সে হাইলাইট করা একটি বার্তা দেখাবে যে এটি একটি স্ন্যাপশট ট্রিগার হওয়ার জন্য অপেক্ষা করছে। এখন, আমাদের যা করতে হবে তা হল আমাদের পৃষ্ঠাতে আঘাত করা

https://<PROJECT_ID>.appspot.com

একবার আপনি এটি করলে, স্ন্যাপশটটি সক্রিয় হয়ে যাবে এবং আপনি দেখতে পাবেন যে ভেরিয়েবল এবং কল স্ট্যাক বিভাগগুলি নীচে দেখানো হয়েছে। ভেরিয়েবলগুলি কীভাবে প্রদর্শিত হয় তা দেখুন এবং আপনি মানগুলি পরীক্ষা করতে তাদের প্রসারিত করতে পারেন। এই সুপার দরকারী.

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

একটি খুব সহজ বৈশিষ্ট্য হল যে কোনো সময় একটি স্ন্যাপশট পুনরায় নেওয়া। যেকোনো সময় ক্যামেরা আইকনে ক্লিক করুন এবং এটি আবার নিচের চিত্রের মতো স্ন্যাপশট হিট হওয়ার জন্য অপেক্ষা করবে:

আপনি নির্দিষ্ট ভেরিয়েবল ট্র্যাক করার জন্য নীচে দেখানো হিসাবে এক্সপ্রেশন ক্ষেত্র ব্যবহার করতে পারেন। উদাহরণস্বরূপ আমরা জানি যে আমাদের একটি পরিবর্তনশীল অভিবাদন রয়েছে এবং আমরা এর মান পরিদর্শন করতে আগ্রহী, যে মুহূর্তে একটি স্ন্যাপশট হিট হয়। নীচের স্ক্রিনশটে দেখানো হিসাবে আমরা শুভেচ্ছা ভেরিয়েবল রাখতে পারি। যখন স্ন্যাপশটটি আঘাত করা হয়, তখন এটি দেখানো মানগুলি পূরণ করবে।

আপনি যদি স্ন্যাপশটটি শুধুমাত্র একটি নির্দিষ্ট শর্তে সক্রিয় করতে চান, তাহলে আপনি নীচে দেখানো হিসাবে শর্ত ক্ষেত্রটি ব্যবহার করতে পারেন। এখানে আমরা বলছি যে স্ন্যাপশটটি কেবল তখনই ঘটতে হবে যদি শুভেচ্ছা সংখ্যা 1 এর বেশি হয়। আপনি চাইলে এটি নিয়ে পরীক্ষা করুন।

আপনার ওয়েব অ্যাপ্লিকেশানের কর্মক্ষমতা আপনার সেট করা প্রয়োজনীয়তাগুলির উপর নির্ভর করে তা নিশ্চিত করা খুবই গুরুত্বপূর্ণ৷ স্ট্যাকড্রাইভার ট্রেস হল একটি মূল টুল যা আপনাকে আপনার অ্যাপ্লিকেশনের লেটেন্সি বুঝতে সাহায্য করে।

এটি সমস্ত অ্যাপ ইঞ্জিন অ্যাপ্লিকেশনের জন্য ডিফল্টরূপে সক্রিয় করা হয়েছে এবং বিভিন্ন কল জুড়ে বিচ্ছেদ সহ আমাদের সমস্ত শেষ পয়েন্টগুলির জন্য আমাদের খুব সহজ কার্যক্ষমতার বিবরণ দেয়।

আমাদের ক্ষেত্রে, আমরা হোম পেজে ("/") হিট করছি এবং গেস্টবুক এন্ট্রিগুলি দেখছি / যোগ করছি। লেটেন্সি সম্পর্কে আমাদের আরও বলার জন্য ট্রেসের জন্য এটি যথেষ্ট। শুধু স্ট্যাকড্রাইভার ট্রেসেস ওভারভিউতে নেভিগেট করুন এবং আমরা নীচে দেখানো হিসাবে একটি স্ক্রিনশট দেখতে পাই। সাম্প্রতিক ট্রেস এবং তাদের বিলম্ব লক্ষ্য করুন.

আমরা যদি ট্রেসের যেকোনো একটিতে ক্লিক করি অর্থাৎ URI লিঙ্কে ক্লিক করি, তাহলে নিচের মতো বিস্তারিত ট্রেস দেখাবে:

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

আপনি Stackdriver Logging-এ নেভিগেট করে যে কোনো সময় আপনার অ্যাপ্লিকেশন লগ দেখতে পারেন (নিচে দেখানো হয়েছে)। বিভিন্ন GCP পরিষেবা → লগের ধরন → লগ স্তর → তারিখ এবং আরও অনেক কিছু থেকে শুরু করে একাধিক ফিল্টার উপলব্ধ রয়েছে৷

নীচের স্ক্রিনশটটি আমাদের অ্যাপ ইঞ্জিন অ্যাপ্লিকেশনের লগ এবং ডিফল্ট সংস্করণ 1 দেখায়৷

logging.png

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

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

এটি ঠিক আছে কিন্তু আপনি যদি এই লগ স্টেটমেন্টগুলিকে আপনার চলমান অ্যাপ্লিকেশনে যুক্ত করতে পারেন (এখন তাদের লগপয়েন্ট বলি) তাহলে কী হবে। এর মানে আমাদের অ্যাপ্লিকেশন বন্ধ করার, কোড পরিবর্তন করা এবং পুনরায় স্থাপন করার প্রক্রিয়ার মধ্য দিয়ে যেতে হবে না। পরিবর্তে, আমরা লগপয়েন্ট সমর্থন ব্যবহার করে আমাদের অ্যাপ্লিকেশনের বাইরে থেকে আমাদের লগপয়েন্টগুলির তালিকা পরিচালনা করতে পারি৷

এখনও ক্লাউড শেল থেকে, আমাদের কনফিগার করা লগপয়েন্টগুলির বর্তমান তালিকাটি পরীক্ষা করা যাক (যা অবশ্যই 0 হওয়া উচিত)। এটি নিচে দেখানো gcloud কমান্ডের মাধ্যমে করা হয়:

gcloud debug logpoints list

এটি হল কনসোল আউটপুট যা আপনাকে দেখতে হবে:

Debug target not specified. Using default target: default-1
Listed 0 items.

এখন, আমরা চলমান অ্যাপ্লিকেশনটিতে একটি লগপয়েন্ট যুক্ত করতে যাচ্ছি। একটি লগপয়েন্ট যোগ করতে, আমাদের নিম্নলিখিত জিনিসগুলি করতে হবে:

  • সোর্স কোড ফাইল এবং লাইন নম্বর সনাক্ত করুন যেখানে আমরা লগপয়েন্ট যোগ করতে চাই।
  • লগ বার্তা সনাক্ত করুন. এই লগ বার্তা হার্ডকোড বা এমনকি একটি অভিব্যক্তি হতে পারে.

আমাদের ক্ষেত্রে, আমরা logpoints create কমান্ডের মাধ্যমে রেখা #74-এ গেস্টবুক.py ফাইলে একটি লগপয়েন্ট যোগ করতে যাচ্ছি যা নীচে দেখানো হয়েছে:

gcloud debug logpoints create guestbook.py:74 "Fetched greetings from Datastore. Count of greetings : {len(greetings)}"

এটি হল কনসোল আউটপুট যা আপনাকে দেখতে হবে:

Debug target not specified. Using default target: default-1
— id: 53538243519d4-f9a0-bdbce
location: guestbook.py:74
logLevel: INFO
logMessageFormat: Fetched greetings from Datastore. Count of greetings : {len(greetings)}
condition: None
status: ACTIVE

আমরা filename:linenumber এবং উপরে লগ বার্তা প্রদান করেছি। মনে রাখবেন যে আমাদের লগ বার্তাটিতে একটি অভিব্যক্তিও রয়েছে যা ডেটাস্টোর থেকে আমরা যে অভিবাদনগুলি পুনরুদ্ধার করেছি তার সংখ্যা প্রিন্ট করবে৷

কমান্ডটি লগপয়েন্ট যোগ করা হয়েছে এমন বার্তার সাথে ফিরে আসে। আমাদের ক্লাউড শেল থেকে একটি স্ক্রিনশট নীচে দেখানো হয়েছে:

এখন, আপনি যদি লগপয়েন্ট তালিকা কমান্ডটি ফায়ার করেন, আপনি নিম্নলিখিত আউটপুটটি দেখতে পাবেন:

gcloud debug logpoints list

এটি হল কনসোল আউটপুট যা আপনাকে দেখতে হবে:

Debug target not specified. Using default target: default-1
STATUS LOCATION CONDITION LOG_LEVEL LOG_MESSAGE_FORMAT ID
ACTIVE
guestbook.py:74 INFO Fetched greetings from Datastore. Count of greetings : {len(greetings)} 53538243519d4-f9a0-bdbce

এটিকে কার্যকরভাবে দেখতে, আমরা আবার https://<PROJECT_ID>.appspot.com এ হোম পেজে আঘাত করতে পারি। এটি কোডটি শুরু করবে এবং এর ফলে আমাদের লগপয়েন্ট হবে। মনে রাখবেন এটি আমাদের অ্যাপ্লিকেশন লগগুলিতে ডিফল্টরূপে লগ হয়ে যাবে৷ সুতরাং আমাদের যা করতে হবে তা হল নীচে দেখানো হিসাবে আরও একবার স্ট্যাকড্রাইভার লগিং পরিদর্শন করুন:

বিশেষ অনুরোধে ক্লিক করুন এবং Voila! বিশদ বিবরণে, আপনি দেখতে পাবেন আমাদের লগপয়েন্টটি বরখাস্ত হচ্ছে এবং লগ বার্তাটি দেখানো হয়েছে।

আমরা আশা করি আপনি এই টিউটোরিয়ালটি উপভোগ করেছেন। স্ট্যাকড্রাইভার প্ল্যাটফর্ম টেবিলে নিয়ে আসে এমন কয়েকটি ক্ষমতাকে এটি স্পর্শ করে। অন্বেষণ করার জন্য আরো অনেক আছে. আরও Google ক্লাউড প্ল্যাটফর্ম টিউটোরিয়ালের জন্য https://rominirani.com/- এ রোমিন ইরানির ব্লগ (এই কোডল্যাবের মূল লেখক) দেখুন।

আপনি "আপনার অ্যাপ্লিকেশনের স্বাস্থ্যের মধ্যে আরও ভাল দৃশ্যমানতা পেতে স্ট্যাকড্রাইভারের পর্যবেক্ষণ এবং লগিং ব্যবহার করা" নামে এই অন্য কোডল্যাবটিও দেখতে পারেন।

যদি আপনার কোন প্রতিক্রিয়া থাকে বা এই কোডল্যাব নিয়ে সমস্যা রিপোর্ট করতে চান, তাহলে এই পৃষ্ঠার নীচে বাম দিকে "অনুগ্রহ করে একটি বাগ খুঁজুন" লিঙ্কটি ব্যবহার করুন।