1. ভূমিকা
এই ল্যাবে, আপনি গুগল ক্লাউডের একটি এআই-চালিত সহযোগী জেমিনি ব্যবহার করবেন, যার মাধ্যমে আপনি ক্লাউড ফাংশন স্থাপনের সমস্যা সমাধানের জন্য ত্রুটি লগ বিশ্লেষণ করবেন, সমস্যার মূল কারণ চিহ্নিত করবেন এবং কীভাবে এটি সমাধান করবেন তা খুঁজে বের করবেন।
তুমি যা করবে...
- আপনি ক্লাউড শেল টার্মিনাল এবং জিক্লাউড সিএলআই ব্যবহার করে পরিবেশ সেটআপ করবেন, যার মধ্যে প্রাসঙ্গিক গুগল এপিআই সক্ষম করা এবং প্রদত্ত কোড থেকে একটি ক্লাউড ফাংশন তৈরি করা অন্তর্ভুক্ত।
- ক্যাপচার করা তথ্য বোঝার জন্য লগ সারাংশ তৈরি করতে আপনি ক্লাউড লগিং লগ সারাংশ ব্যবহার করবেন।
- সমস্যা সমাধান এবং সমাধানে জেমিনির সহায়তা পেতে আপনি জেমিনির সাথে কথা বলবেন।
তুমি যা শিখবে...
- গুগল ক্লাউড অবজারভেবিলিটি সহ জেমিনি কীভাবে ব্যবহার করবেন এবং সমস্যা সমাধানের জন্য।
- জেমিনির সাহায্যে ক্লাউড ফাংশন লগগুলি কীভাবে খুঁজে পাবেন এবং বুঝবেন।
তোমার যা লাগবে...
- ক্রোম ওয়েব ব্রাউজার
- বিলিং সক্ষম করা একটি Google ক্লাউড প্রকল্প
- একটি গুগল অ্যাকাউন্ট যার মাধ্যমে প্রকল্পে অ্যাক্সেসের অনুমতি রয়েছে এবং আপনাকে API সক্ষম করতে এবং রিসোর্সগুলি পরিচালনা করতে দেয়।
এই ল্যাবটি সকল স্তরের DevOps এবং প্ল্যাটফর্ম ইঞ্জিনিয়ার এবং সফটওয়্যার ডেভেলপারদের জন্য তৈরি, যার মধ্যে নতুনরাও অন্তর্ভুক্ত। আমাদের লক্ষ্য হবে সমস্যা সমাধানে জেমিনির ক্ষমতার সাথে বাস্তব অভিজ্ঞতা অর্জন করা।
2. সেটআপ
এই ল্যাবটি শুরু করার জন্য আপনার যা যা করণীয় তা এই বিভাগে আলোচনা করা হয়েছে।
পরিবেশ কনফিগার করুন
১. https://console.cloud.google.com খুলে ক্লাউড কনসোলে লগ-ইন করুন।
২. এই ল্যাবের জন্য আপনি যে Google Cloud প্রকল্পের সাথে কাজ করার পরিকল্পনা করছেন তা নির্বাচন করুন।

৩. কনসোলে ক্লাউড ফাংশন পৃষ্ঠাটি খুলুন। আপনি নেভিগেশন মেনু থেকে (কনসোল উইন্ডোতে উপরের বাম আইকন ☰) ক্লাউড ফাংশন নির্বাচন করে এটি করতে পারেন।

বিকল্পভাবে, আপনি কনসোলের অনুসন্ধান এলাকায় "ক্লাউড ফাংশন" অনুসন্ধান করতে পারেন:

ফাংশন তালিকার উপরে Create Function বোতামে ক্লিক করুন। 
আপনি যদি আগে এই প্রকল্পে ক্লাউড ফাংশন ব্যবহার না করে থাকেন, তাহলে কাজ করার জন্য আপনাকে Google API গুলি সক্ষম করতে বলা হবে।

চালিয়ে যেতে ENABLE এ ক্লিক করুন।
৪. নতুন ক্লাউড ফাংশনের মৌলিক বৈশিষ্ট্যগুলি সংজ্ঞায়িত করুন।
- নামটি "
codelab-cf" হিসেবে সেট করুন। - "অপ্রমাণিত অনুরোধগুলিকে অনুমতি দিন" বিকল্পটি নির্বাচন করুন।

ধাপটি সম্পূর্ণ করতে, উইন্ডোর নীচে বাম দিকে NEXT বোতামে ক্লিক করুন:

"পরবর্তী" বোতামে ক্লিক করার পর আপনাকে অতিরিক্ত Google API(গুলি) সক্রিয় করতে বলা হতে পারে। ধাপ ৪-এর মতো, "সক্রিয় করুন" বোতামে ক্লিক করুন।

ক্লাউড ফাংশনের রানটাইম এবং কোড সেট আপ করুন
এই কোডল্যাবটি প্রোগ্রামিং ভাষা হিসেবে পাইথন ব্যবহার করে। পাইথনের সাথে অপরিচিত থাকলে চিন্তা করবেন না। এই কোডল্যাবটি সম্পূর্ণ করার জন্য আপনার পাইথনের জ্ঞানের প্রয়োজন হবে না।
৫. ফাংশনের রানটাইম হিসেবে Python 3.11 নির্বাচন করুন।

মনে রাখবেন যে রানটাইম পরিবর্তনের ফলে ইনলাইন এডিটরে দেখানো সোর্স কোডটি পরিবর্তিত হয়।
৬. অটো-জেনারেট কুইকস্টার্ট উদাহরণ পরিবর্তন করতে নিচের কোডটি ইনলাইন এডিটরে কপি করুন।
from google.cloud import storage
import json
import re
client = storage.Client()
def get_object_list(request):
if request.args and 'path' in request.args:
path = request.args['path']
else:
return '{}'
parsed = re.search('gs:\/\/([a-zA-Z0-9_-]{3,63})\/([-a-zA-Z0-9_\+.\/]*)', path)
bucket, prefix = parsed.group(1), parsed.group(2)
blobs = client.list_blobs(bucket, prefix=prefix, delimiter='/')
objects = []
if (blobs):
for blob in blobs:
objects.append(blob.name)
return json.dumps(objects)
এই কোডটি GET অনুরোধ থেকে path অ্যাট্রিবিউটটি পড়ে, বাকেট নামটি সংগ্রহ করার জন্য পাথটি পার্স করে এবং এই পথে সংরক্ষিত বস্তুর একটি তালিকা পেতে Google Cloud Storage API কল করে। ফাংশন ( get_object_list ) একটি অনুরোধ গ্রহণ করে যা একটি Flask অবজেক্ট যা একটি ইনপুট আর্গুমেন্ট হিসাবে এবং বস্তুর নামগুলি একটি JSON অ্যারে হিসাবে ফেরত দেয়।
৭. ইনলাইন এডিটরে থাকা ফাইলের তালিকা থেকে requirements.txt ফাইলটি নির্বাচন করুন। নিচের কোডটি ইনলাইন এডিটরে কপি করে বর্তমান নির্ভরতার তালিকাটি নতুন দিয়ে প্রতিস্থাপন করুন।
google-cloud-storage
৮. ক্লাউড ফাংশন স্থাপন করতে, নীচে বাম দিকে DEPLOY-এ ক্লিক করুন।

স্থাপন প্রক্রিয়া সম্পূর্ণ না হওয়া পর্যন্ত আপনাকে কয়েক মিনিট অপেক্ষা করতে হতে পারে। আপনি যদি সেটআপ নির্দেশাবলী সাবধানে অনুসরণ করেন তবে আপনার স্থাপনা ব্যর্থ হিসাবে রিপোর্ট করা হবে বলে আশা করা উচিত।
৩. সমস্যা খুঁজে বের করা এবং সমাধান করা
এই বিভাগে আপনি সমস্যাটি সনাক্ত করতে এবং সমাধানের উপায় জানতে লগ ব্যাখ্যা বৈশিষ্ট্য এবং অন্যান্য জেমিনি সহায়তা ব্যবহার করবেন।
১. স্থাপনা ব্যর্থ হয়েছে। আপনি একটি ত্রুটি বার্তা দেখতে পাবেন যেখানে আপনাকে অতিরিক্ত তথ্য এবং স্থাপনা লগ দেখার বিকল্প সহ এটি সম্পর্কে জানানো হবে। স্থাপনার লগ দেখতে "লগ দেখুন" এ ক্লিক করুন।

মনে রাখবেন যে ডিপ্লয়মেন্ট লগগুলি একই ব্রাউজারে একটি পৃথক ট্যাবে খোলা হবে। এই কোডল্যাবটি সম্পূর্ণ করার জন্য আপনাকে ট্যাবগুলির মধ্যে নেভিগেট করতে হবে।
মনে রাখবেন, VIEW LOGS এ ক্লিক করার সময় আপনি লগ লাইন দেখতে নাও পেতে পারেন অথবা কেবল কয়েকটি লাইন দেখতে পাবেন। এই ক্ষেত্রে, লগ এক্সপ্লোরারের কোয়েরি প্যানে সময়-পরিসর নির্বাচক ব্যবহার করুন এবং শেষ 30 মিনিট নির্বাচন করুন।

২. খোলা ট্যাবে লগগুলি পর্যালোচনা করুন। লক্ষ্য করুন যে লগ সারাংশগুলি ব্যতিক্রমের কলস্ট্যাকের একাধিক লাইনের মতো দেখায়। কারণ ক্লাউড ফাংশন stdout বা stderr এ মুদ্রিত টেক্সট ক্যাপচার করে এবং প্রতিটি লাইনকে একটি পৃথক লগ এন্ট্রি হিসেবে লেখে। অন্যান্য লগ লাইনগুলি প্রস্থান ত্রুটি কোড সম্পর্কে তথ্যের পাশাপাশি ক্লাউড ফাংশন এবং ক্লাউড রান API দ্বারা রিপোর্ট করা অতিরিক্ত তথ্যের সারসংক্ষেপ করে।

আপনি যেকোনো লাইনে ক্লিক করে একটি নির্দিষ্ট লগ সম্পর্কে আরও তথ্য দেখতে পারেন। প্রসারিত লগগুলিতে অতিরিক্ত UI উপাদান থাকে যা আপনাকে লগ সম্পর্কে সমস্ত তথ্য অনুলিপি করতে, লগ এন্ট্রির সমস্ত ডেটা প্রদর্শনের জন্য সমস্ত ক্ষেত্র প্রসারিত করতে এবং জেমিনি ব্যবহার করে লগ এন্ট্রি ব্যাখ্যা করতে দেয়।
৪. এক্সেপশন কলস্ট্যাকটি খুব বেশি তথ্যবহুল নয়। এক্সেপশনের স্ট্যাক ট্রেস লগের শেষ অংশটি খুঁজে পেতে লগগুলি দেখুন। এটি " Container called exit(1) " লেখা লাইন। নিম্নলিখিত লগ সারাংশটি বলে:
functions_framework.exceptions.MissingTargetException: File /workspace/main.py is expected to contain...
এটি তদন্তের জন্য একটি ভালো প্রার্থী বলে মনে হচ্ছে। লগ এন্ট্রিটি প্রসারিত করতে এই লাইনে ক্লিক করুন। তারপর নির্বাচিত লগ সম্পর্কে অতিরিক্ত তথ্য দেখতে " এই লগ এন্ট্রি ব্যাখ্যা করুন " বোতামে ক্লিক করুন।

যদি এই প্রকল্পে আগে জেমিনি ব্যবহার না করা হয়ে থাকে, তাহলে আপনাকে একটি প্রয়োজনীয় API সক্ষম করতে বলা হবে। যদি আপনাকে API সক্ষম করতে বলা হয়, তাহলে এগিয়ে যেতে ENABLE এ ক্লিক করুন।

মনে রাখবেন যে মাঝে মাঝে জেমিনি প্রম্পট করার সময় আপনি একটি ত্রুটি পেতে পারেন। এই ধরনের ঘটনায়, প্রতিক্রিয়া পেতে আপনার প্রম্পট অপারেশনটি আরও একবার পুনরাবৃত্তি করুন। উদাহরণস্বরূপ, " এই লগ এন্ট্রি ব্যাখ্যা করুন " বোতামটি আবার ক্লিক করুন।
৫. জেমিনি কর্তৃক প্রদত্ত ব্যাখ্যা পর্যালোচনা করুন। যদি প্রদত্ত ব্যাখ্যা যথেষ্ট বা অস্পষ্ট না হয়, তাহলে নিম্নলিখিত প্রম্পটগুলির মধ্যে একটি ব্যবহার করে অথবা আপনার নিজস্ব প্রশ্ন তৈরি করে জেমিনিকে আরও তথ্য প্রদান করতে বলুন।
আপনি কি এই লগ সম্পর্কে আরও তথ্য দিতে পারবেন?
আপনি কি ত্রুটি সম্পর্কে আরও তথ্য প্রদান করতে পারেন?
৬. তারপর সমস্যা সমাধানের জন্য পরামর্শের জন্য জেমিনিকে জিজ্ঞাসা করুন। উদাহরণস্বরূপ, জেমিনিকে জিজ্ঞাসা করুন।
এই সমস্যা কিভাবে সমাধান করবেন?
এই ত্রুটি সমাধানের জন্য একটি সমাধান প্রস্তাব করুন
এই ত্রুটিটি কীভাবে ঠিক করতে পারি তার পরামর্শ দিন।
বর্তমান প্রেক্ষাপট এবং আপনার প্রম্পটের শব্দ এবং বিন্যাসের উপর নির্ভর করে জেমিনি প্রতিক্রিয়া পরিবর্তিত হতে পারে। আশা করা হচ্ছে যে জেমিনি ক্লাউড ফাংশনের সোর্স কোডে hello_http নামের একটি ফাংশন আছে কিনা তা নিশ্চিত করার জন্য সুপারিশ করবে।
৭. আপনি বর্তমানে ক্লাউড ফাংশন লগ দেখানো ট্যাবটি দেখতে পাচ্ছেন। ত্রুটি সহ ক্লাউড ফাংশন স্থাপন পৃষ্ঠাটি দেখানো পূর্ববর্তী ট্যাবটি নির্বাচন করুন এবং সম্পাদনা ক্লিক করুন।

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

৯. ইনলাইন এডিটর দেখতে নীচে NEXT এ ক্লিক করুন। Gemini সুপারিশ অনুসরণ করুন এবং ফাংশনের নাম get_order_list থেকে hello_http এ পরিবর্তন করুন।
সম্পাদনা শেষ করার পর DEPLOY এ ক্লিক করুন।
স্থাপন প্রক্রিয়া সম্পন্ন না হওয়া পর্যন্ত আপনাকে কয়েক মিনিট অপেক্ষা করতে হতে পারে। নিশ্চিত করুন যে স্থাপন সফলভাবে সম্পন্ন হয়েছে এবং কোনও ত্রুটির বার্তা উপস্থিত হচ্ছে না।
মনে রাখবেন যে স্থাপনা প্রক্রিয়া সম্পূর্ণ না হওয়া পর্যন্ত কনসোল আপনাকে শেষ ত্রুটি বার্তাটি দেখাতে পারে।
১০. curl ব্যবহার করে নিম্নলিখিত HTTPS অনুরোধটি পাঠিয়ে ক্লাউড ফাংশনটি কার্যকর কিনা তা পরীক্ষা করুন। আপনি ক্লাউড শেল ব্যবহার করতে পারেন অথবা curl এবং gcloud CLI ইনস্টল করা যেকোনো টার্মিনাল থেকে এটি করতে পারেন। ক্লাউড শেল টার্মিনাল থেকে নিম্নলিখিত কমান্ডটি কার্যকর করুন।
curl -m 70 -X GET \
https://us-central1-${GOOGLE_CLOUD_PROJECT}.cloudfunctions.net/\
codelab-cf?path=gs://cloud-samples-data/generative-ai/image/ \
-H "Authorization: bearer $(gcloud auth print-identity-token)"
মনে রাখবেন যে টার্মিনাল থেকে এই কমান্ডটি চালানোর জন্য আপনাকে gcloud CLI ব্যবহার করে প্রমাণীকরণ করতে হবে এবং আপনার প্রকল্প আইডির মান পরিবেশগত পরিবর্তনশীল GOOGLE_CLOUD_PROJECT এ সেট করতে হবে।
বোনাস
পাইথন রানটাইম নির্বাচন করার সময়, hello_http ফাংশনের নাম HTTP ট্রিগার করা ক্লাউড ফাংশনের জন্য একটি ডিফল্ট এন্ট্রি পয়েন্ট হিসাবে সংজ্ঞায়িত করা হয়েছিল। বিকল্প সমাধান হল সোর্স কোডে ফাংশনের নাম হিসাবে get_order_list রাখা এবং রানটাইম ফিল্ড থেকে ডানদিকে ইনলাইন এডিটরের উপরে অবস্থিত ক্লাউড ফাংশনের এন্ট্রি পয়েন্ট ফিল্ডটি আপডেট করা:

hello_http থেকে get_order_list এন্ট্রি পয়েন্ট পরিবর্তন করলে ডিপ্লয়মেন্টের সমস্যা সমাধান হবে।
৪. পরিষ্কার করা
পরিষ্কার করার জন্য আপনি হয় প্রকল্পটি বন্ধ করতে পারেন অথবা ক্লাউড ফাংশন ইনস্ট্যান্সটি মুছে ফেলতে পারেন। আপনি কনসোল ব্যবহার করে অথবা নীচের মত CLI কমান্ড ব্যবহার করে ক্লাউড ফাংশনগুলি মুছে ফেলতে পারেন:
gcloud functions delete codelab-cf --region=us-central1
৫. অভিনন্দন!
অভিনন্দন - আপনি আপনার অ্যাপ্লিকেশনের সমস্যা সমাধান এবং সমস্যা সমাধানের জন্য জেমিনি সফলভাবে ব্যবহার করেছেন এবং এখন বুঝতে পারছেন যে এটি কীভাবে লগ বুঝতে এবং গুগল ক্লাউড সম্পর্কে প্রশ্নের উত্তর পেতে সহায়তা করতে পারে।