1. معرفی
آخرین به روز رسانی: 21 ژوئن 2023
هشدار در مورد خطاهای مبتنی بر گزارش برای در دسترس بودن
هشدارهای مبتنی بر گزارش را می توان با نظارت بر رویدادها یا الگوهای خاص در گزارش ها برای تعیین در دسترس بودن برنامه مورد استفاده قرار داد*.* با هشدار در مورد قطع یا سایر مشکلات مواجهه با کاربر، می توانید اقداماتی را برای به حداقل رساندن تأثیر بر روی کاربران و مشتریان خود انجام دهید. .
در حالی که بررسیهای آپتایم یک تصویر کلی از در دسترس بودن ارائه میدهند، ممکن است استفاده از پیامهای خطای مشتقشده از گزارشها بهعنوان شاخصهایی از انواع خاصی از در دسترس نبودن، و درک نسبتی از کاربران که مشکلی را تجربه میکنند، دقیقتر باشد.
خطاها می توانند به دلایل مختلفی از جمله اشتباهات کاربر گرفته تا تعمیر و نگهداری سیستم، ارتقاء و حتی عوامل خارجی سیستم مانند آب و هوای بد ایجاد شوند. نکته کلیدی در هشدار، تلاش برای پیشبینی همه علل احتمالی نیست، بلکه انتخاب چند علامت کلیدی است که میتواند شروعی برای عیبیابی باشد.
موضوعات میخانه / فرعی به عنوان یک کانال اعلان هشدار
یک موضوع Pub/Sub را می توان به عنوان یک کانال اعلان Google Cloud Monitoring برای ارسال هشدارها به اشتراک Pub/Sub استفاده کرد. این به شما امکان می دهد تا هشدارهای Cloud Monitoring خود را با سیستم های دیگر، از جمله خدمات اطلاع رسانی شخص ثالث، ادغام کنید.
برای استفاده از موضوع Pub/Sub به عنوان کانال اطلاع رسانی، ابتدا باید یک موضوع Pub/Sub و یک اشتراک Pub/Sub ایجاد کنید. سپس، باید یک کانال اطلاع رسانی Cloud Monitoring ایجاد کنید که از موضوع Pub/Sub به عنوان مقصد استفاده می کند.
هنگامی که یک هشدار فعال می شود، Cloud Monitoring پیامی به موضوع Pub/Sub ارسال می کند. پس از آن، مشترک اشتراک Pub/Sub می تواند پیام را پردازش کرده و اقدام مناسب را انجام دهد.
چیزی که خواهی ساخت
در این نرم افزار کد، شما قصد دارید یک برنامه را مستقر کنید، یک موضوع Pub/Sub ایجاد کنید، و یک هشدار مبتنی بر گزارش ایجاد کنید که خطاها را در قسمت خاصی از برنامه بررسی می کند و از موضوع Pub/Sub به عنوان کانال اطلاع رسانی استفاده می کند.
چیزی که یاد خواهید گرفت
- چگونه یک موضوع Pub/Sub ایجاد کنیم
- چگونه یک هشدار مبتنی بر گزارش ایجاد کنیم
این کد لبه روی ایجاد هشدار برای خطاها متمرکز شده است. مفاهیم غیر مرتبط و کد برنامه حذف شده و برای شما ارائه شده است تا به سادگی کپی و جایگذاری کنید.
آنچه شما نیاز دارید
- یک حساب Google Cloud با مجوزهای زیر:
- استقرار برنامه های Cloud Run
- موضوعات Pub/Sub ایجاد کنید
- ایجاد هشدار
2. راه اندازی
یک پروژه Google Cloud را انتخاب یا ایجاد کنید
برای انتخاب یک پروژه موجود، از منوی کشویی استفاده کنید:
برای ایجاد یک پروژه جدید در Google Cloud، می توانید این مراحل را دنبال کنید:
- به کنسول Google Cloud Platform بروید.
- روی دکمه Create Project کلیک کنید.
- یک نام برای پروژه خود وارد کنید.
- یک حساب صورتحساب برای پروژه خود انتخاب کنید.
- روی دکمه Create کلیک کنید.
پروژه شما ایجاد می شود و به داشبورد پروژه منتقل می شوید. از آنجا می توانید استفاده از سرویس های Google Cloud را شروع کنید.
در اینجا برخی از جزئیات اضافی در مورد هر مرحله آورده شده است:
- نام: نام پروژه شما باید در سازمان شما منحصر به فرد باشد.
- حساب صورتحساب: میتوانید از یک حساب صورتحساب موجود استفاده کنید یا یک حساب جدید ایجاد کنید.
- ایجاد: پس از وارد کردن تمام اطلاعات مورد نیاز، روی دکمه Create کلیک کنید تا پروژه شما ایجاد شود.
برای اطلاعات بیشتر، لطفاً به مستندات Google Cloud درباره ایجاد پروژهها مراجعه کنید.
3. برنامه API را مستقر کنید
نمونه برنامه یا API در مورد چیست؟
برنامه ما یک برنامه ساده Inventory API است که یک نقطه پایانی REST API را با چند عملیات برای فهرست کردن اقلام موجودی و دریافت تعداد موجودی اقلام خاص نشان می دهد.
هنگامی که API را مستقر می کنیم و فرض می کنیم که در https://<somehost> میزبانی می شود، می توانیم به صورت زیر به نقاط انتهایی API دسترسی پیدا کنیم:
https://<somehost>/inventory
این همه اقلام محصول را با سطوح موجودی موجود فهرست می کند.
https://<somehost>/inventory/{productid}
این یک رکورد واحد با سطح موجودی محصول و موجودی آن محصول را فراهم می کند.
داده های پاسخ برگشتی فرمت JSON هستند.
توجه : این برنامه API فقط برای اهداف آزمایشی است و اجرای API ایمن و قوی را نشان نمی دهد. منظور این است که یک برنامه کاربردی سریع در دسترس ما باشد تا هدف کلیدی آزمایشگاه، یعنی عملیات Google Cloud را بررسی کنیم.
داده های نمونه و درخواست/پاسخ API
این برنامه برای ساده نگه داشتن کارها توسط یک پایگاه داده در باطن ارائه نمی شود. این شامل 3 شناسه محصول نمونه و سطح موجودی موجود آنها است.
شناسه محصول | سطح موجودی در دست |
I-1 | 10 |
I-2 | 20 |
I-3 | 30 |
نمونه درخواست و پاسخ API در زیر نشان داده شده است:
درخواست API | پاسخ API |
https://<somehost>/inventory | [ { "I-1": 10، "I-2": 20، "I-3": 30 }] |
https://<somehost>/inventory/I-1 | { "productid": "I-1", "qty": 10} |
https://<somehost>/inventory/I-2 | { "productid": "I-2", "qty": 20} |
https://<somehost>/inventory/I-200 | { "productid": I-200، "qty": -1} |
Repository را شبیه سازی کنید
در حالی که Google Cloud را می توان از راه دور از لپ تاپ شما کار کرد، در این کد لبه از Google Cloud Shell استفاده خواهید کرد، یک محیط خط فرمان که در Cloud اجرا می شود.
از کنسول GCP روی نماد Cloud Shell در نوار ابزار بالا سمت راست کلیک کنید:
تهیه و اتصال به محیط فقط چند لحظه طول می کشد. وقتی تمام شد، باید چیزی شبیه به این را ببینید:
این ماشین مجازی با تمام ابزارهای توسعه مورد نیاز شما بارگذاری شده است. این یک فهرست اصلی 5 گیگابایتی دائمی را ارائه می دهد و در Google Cloud اجرا می شود و عملکرد و احراز هویت شبکه را تا حد زیادی افزایش می دهد. تمام کارهای شما در این آزمایشگاه به سادگی با یک مرورگر قابل انجام است.
gcloud را راه اندازی کنید
در Cloud Shell، ID پروژه خود را تنظیم کرده و آن را به عنوان متغیر PROJECT_ID ذخیره کنید.
PROJECT_ID=[YOUR-PROJECT-ID]
project
config
set
gcloud
$PROJECT_ID
حال دستور زیر را اجرا کنید:
clone
git
$
https://github.com/rominirani/cloud-code-sample-repository.git
با این کار یک پوشه با عنوان cloud-code-sample-repository در این پوشه ایجاد می شود.
(اختیاری) برنامه را در Cloud Shell اجرا کنید
با دنبال کردن مراحل زیر می توانید برنامه را به صورت محلی اجرا کنید:
- از ترمینال، با دستور زیر به نسخه Python API بروید:
$
cd
cloud-code-sample-repository
$
cd
python-flask-api
- در ترمینال دستور زیر را ارائه دهید (در زمان نگارش، Cloud Shell با Python 3.9.x نصب شده است و ما از نسخه پیش فرض استفاده می کنیم. اگر قصد دارید آن را به صورت محلی روی لپ تاپ خود اجرا کنید، می توانید با Python 3.8+ استفاده کنید. ) :
$
python
app.py
- می توانید دستور زیر را برای راه اندازی سرور پایتون به صورت محلی اجرا کنید.
روی Preview در پورت 8080 کلیک کنید. 5. با این کار یک پنجره مرورگر باز می شود. خطای 404 را خواهید دید و این مشکلی ندارد. URL را تغییر دهید و آن را به داشتن /inventory بعد از نام میزبان تغییر دهید.
به عنوان مثال در دستگاه من، به نظر می رسد این است:
https://8080-cs-557561579860-default.cs-asia-southeast1-yelo.cloudshell.dev/inventory
با این کار لیست اقلام موجودی همانطور که قبلا توضیح داده شد نمایش داده می شود:
- اکنون می توانید با رفتن به ترمینال و فشار دادن Ctrl-C سرور را متوقف کنید
برنامه را مستقر کنید
اکنون این برنامه API را در Cloud Run مستقر خواهیم کرد. این فرآیند شامل استفاده از سرویس گیرنده خط فرمان gcloud برای اجرای فرمان استقرار کد در Cloud Run بود.
از ترمینال دستور gcloud زیر را بدهید:
$ gcloud run deploy --source .
با این کار چندین سوال از شما پرسیده می شود که در زیر به برخی از آنها اشاره می شود:
- نام سرویس (python-flask-api): یا با این پیش فرض بروید یا چیزی مانند my-inventory-api را انتخاب کنید
- API [run.googleapis.com] در پروژه [613162942481] فعال نیست. آیا میخواهید فعال کنید و دوباره امتحان کنید (چند دقیقه طول میکشد)؟ (y/N)؟ Y
- لطفاً یک منطقه را مشخص کنید: 31 را انتخاب کنید (us-west-1)
- API [artifactregistry.googleapis.com] در پروژه [613162942481] فعال نیست. آیا میخواهید فعال کنید و دوباره امتحان کنید (چند دقیقه طول میکشد)؟ (y/N)؟ Y
- استقرار از منبع به یک مخزن Artifact Registry Docker برای ذخیره کانتینرهای ساخته شده نیاز دارد. یک مخزن به نام [cloud-run-source-deploy] در منطقه [us-west1] ایجاد خواهد شد.
- آیا می خواهید ادامه دهید (Y/n)؟ Y
- فراخوانهای احراز هویت نشده به [my-inventory-api] (y/N) اجازه داده شود؟ Y
در نهایت، این فرآیند دریافت کد منبع شما، ذخیره سازی آن، فشار دادن آن به رجیستری Artifact و سپس استقرار سرویس Cloud Run + ویرایش را آغاز می کند. شما باید در این فرآیند صبور باشید (3-4 دقیقه طول می کشد) و باید مشاهده کنید که با نشانی اینترنتی سرویس به شما نشان داده شده است.
یک نمونه اجرا در زیر نشان داده شده است:
برنامه را تست کنید
اکنون که برنامه را در Cloud Run مستقر کرده ایم، می توانید به صورت زیر به برنامه API دسترسی داشته باشید:
- به آدرس سرویس مربوط به مرحله قبل توجه کنید. به عنوان مثال، در تنظیمات من، به صورت
https://my-inventory-api-bt2r5243dq-uw.a.run.app
نشان داده می شود. بیایید این را<SERVICE_URL>
بنامیم. - یک مرورگر باز کنید و به 3 URL زیر برای نقاط پایانی API دسترسی پیدا کنید:
-
<SERVICE_URL>/inventory
-
<SERVICE_URL>/inventory/I-1
-
<SERVICE_URL>/inventory/I-100
باید مطابق مشخصاتی باشد که در بخش قبلی با نمونه درخواست و پاسخ API ارائه کرده بودیم.
جزئیات خدمات را از Cloud Run دریافت کنید
ما سرویس API خود را در Cloud Run، یک محیط محاسباتی بدون سرور، مستقر کردیم. ما میتوانیم در هر زمانی از سرویس Cloud Run از طریق کنسول Google Cloud بازدید کنیم.
از منوی اصلی به Cloud Run بروید. با این کار لیست سرویس هایی که در Cloud Run اجرا می کنید نمایش داده می شود. باید سرویسی را که به تازگی مستقر کرده اید ببینید. بسته به نامی که انتخاب کرده اید، باید چیزی شبیه به این ببینید:
برای مشاهده جزئیات روی نام سرویس کلیک کنید. جزئیات نمونه در زیر نشان داده شده است:
به URL توجه کنید، که چیزی نیست جز نشانی اینترنتی سرویس که می توانید آن را به مرورگر وارد کنید و به Inventory API که ما به تازگی راه اندازی کرده ایم، دسترسی پیدا کنید. معیارها و جزئیات دیگر را بررسی کنید.
بیایید اکنون با Google Cloud Operations Suite شروع کنیم.
4. یک Pub/Sub Topic برای دریافت اعلان هشدار ایجاد کنید
برای ایجاد یک موضوع Pub/Sub، میتوانید این مراحل را در Google Cloud Console دنبال کنید:
- Pub/Sub را در کادر جستجو جستجو کنید و به Pub/Sub بروید.
- اگر قبلاً آنجا نیستید، روی تب Topics کلیک کنید.
- روی دکمه Create Topic کلیک کنید.
- یک نام قابل تشخیص برای موضوع خود وارد کنید.
- روی دکمه Create کلیک کنید.
- نام موضوع را با استفاده از دکمه نماد کپی کپی کنید. برای بخش بعدی به آن نیاز خواهید داشت.
5. یک خط مشی هشدار برای خطاها ایجاد کنید
بررسی گزارش های خطا
برای مشاهده گزارش خطاهای برنامه:
روی تب Logging کلیک کنید.
این یک رابط گزارش را نشان می دهد که در آن می توانید به طور خاص منابع مختلف (پروژه، منابع ابری Google، نام سرویس ها و غیره) را به همراه سطوح گزارش برای فیلتر کردن پیام های گزارش در صورت لزوم انتخاب یا لغو انتخاب کنید.
با ارائه شناسه های محصول که یکی از I-1، I-2 و I-3 نیستند، چند درخواست نامعتبر را به سرویس موجودی شبیه سازی کنید. به عنوان مثال یک درخواست نادرست است:
https://<SERVICE_URL>/inventory/I-999
وقتی شناسه محصول نادرستی در Query ارائه شده باشد، اکنون همه هشدارهایی را که توسط API ما ایجاد شده اند جستجو می کنیم.
ایجاد یک خط مشی هشدار مبتنی بر گزارش سفارشی برای خطاها
فرض کنید می خواهیم مراقب وقوع یک پیام خطای بسیار خاص برای بخشی از برنامه باشیم. اگر متوجه تعداد زیادی خطا برای جستجوی شناسه محصولات شدیم، بگویید. این مشکل نشانه بسیاری از مشکلات احتمالی است (لینک بد، ناهماهنگی پایگاه داده یا شمارش ربات سایت ما). در حالی که تصور هر علت بالقوه دشوار یا غیرممکن است، برنامه ای که حتی یک بار این پیام را ارسال می کند یک مسئله سطح بالایی است که ما می خواهیم از آن آگاه باشیم. برای هشدار در مورد آن، باید یک خط مشی بر اساس داده های موجود در گزارش های خطای خود ایجاد کنیم.
- در Query Box، پارامترهای query زیر را وارد کنید:
resource.type="cloud_run_revision"
textPayload =~ "هشدار در برنامه: درخواست موجودی برای محصول نادرست دریافت شد"
باید چیزی شبیه این باشد:
- روی Run Query کلیک کنید. سپس تمام درخواست هایی که وارد شده و دارای این مشکل هستند را به شما نشان می دهد.
- برای تبدیل موارد فوق به یک هشدار، روی دکمه ایجاد هشدار که در لاگ اکسپلورر درست در زیر فیلد پرس و جو، در سمت راست مشاهده می کنید، کلیک کنید:
- این فرم برای ایجاد یک خط مشی هشدار مبتنی بر گزارش ظاهر می شود.
- از پرس و جو اولیه برای لاگها برای درج در هشدار استفاده کنید:
resource.type="cloud_run_revision"
textPayload
=~
"WARNING
in
app:
request
inventory
for
productid"
incorrect
Received
"
- فرکانس اعلان و مدت زمان حادثه را تنظیم کنید. برای اهداف مثال، می توانید از حداقل مقادیر برای هر یک استفاده کنید:
- در نهایت برای "چه کسی باید مطلع شود؟" کانال اطلاع رسانی Pub/Sub را که قبلا ایجاد کرده اید انتخاب کنید:
- روی ذخیره کلیک کنید. برای مشاهده و مدیریت خطمشی هشدار، از صفحه هشدار دیدن کنید و زیر خطمشیها را بررسی کنید:
6. تبریک می گویم
تبریک میگوییم، شما با موفقیت بررسی Uptime خود را برای ارسال هشدار به Pub/Sub پیکربندی کردید!