هشدارها: بررسی Uptime برای موضوعات Pub/Sub

۱. مقدمه

آخرین به‌روزرسانی: ۲۱ ژوئن ۲۰۲۳

هشدار در مورد بررسی‌های آپتایم برای در دسترس بودن

هشدار در مورد بررسی‌های آپتایم به شما این امکان را می‌دهد که به سرعت مشکلاتی را که ممکن است بر خدمات شما تأثیر بگذارند، شناسایی و حل کنید. با هشدار در مورد قطعی‌ها، می‌توانید اقداماتی را برای به حداقل رساندن تأثیر بر کاربران و مشتریان خود انجام دهید.

بررسی‌های آپتایم در فواصل زمانی انجام می‌شوند که کوتاه‌ترین آنها ۶۰ ثانیه است. در صورت نیاز به جزئیات بیشتر از ۶۰ ثانیه، نظارت بر کدهای خطا به عنوان رویدادهای پویا از طریق هشدارهای مبتنی بر لاگ به عنوان یک شاخص اضافی برای عدم دسترسی نیز می‌تواند مفید باشد. اگر فاصله زمانی ۶۰ ثانیه یا بیشتر قابل قبول باشد، بررسی‌های آپتایم راهی آسان برای اندازه‌گیری سرویس شما با کمی پیکربندی اضافی است.

اگر سرویسی در دسترس نباشد، بررسی آپتایم (زمان روشن بودن سرور) حتی اگر ترافیکی وجود نداشته باشد، مشکل را تشخیص می‌دهد. از سوی دیگر، ترافیک می‌تواند تحت تأثیر عواملی مانند تعمیر و نگهداری، ارتقاء و حتی عوامل خارجی سیستم، مانند آب و هوای بد یا رویدادهای ورزشی که باعث اختلال در استفاده می‌شوند، قرار گیرد.

برای اطلاعات بیشتر در مورد زمان استفاده از بررسی‌های آپتایم، لطفاً به «اطمینان از آپتایم منابع گوگل کلود» مراجعه کنید.

انتشار/زیرموضوعات به عنوان کانال اطلاع رسانی هشدار

یک موضوع 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 را مستقر کنید
  • ایجاد موضوعات عمومی/فرعی
  • ایجاد بررسی‌های آپتایم
  • ایجاد هشدارها

۲. راه‌اندازی

یک پروژه Google Cloud انتخاب یا ایجاد کنید

برای انتخاب یک پروژه موجود، از منوی کشویی استفاده کنید:

b35bf95b8bf3d5d8.png

برای ایجاد یک پروژه جدید در گوگل کلود، می‌توانید مراحل زیر را دنبال کنید:

  1. به کنسول پلتفرم ابری گوگل بروید.
  2. روی دکمه ایجاد پروژه کلیک کنید.
  3. یک نام برای پروژه خود وارد کنید.
  4. یک حساب پرداخت برای پروژه خود انتخاب کنید.
  5. روی دکمه‌ی ایجاد کلیک کنید.

پروژه شما ایجاد می‌شود و به داشبورد پروژه هدایت می‌شوید. از آنجا می‌توانید از سرویس‌های ابری گوگل استفاده کنید.

در اینجا جزئیات بیشتری در مورد هر مرحله آورده شده است:

  • نام: نام پروژه شما باید در سازمان شما منحصر به فرد باشد.
  • حساب صورتحساب: می‌توانید از یک حساب صورتحساب موجود استفاده کنید یا یک حساب جدید ایجاد کنید.
  • ایجاد: پس از وارد کردن تمام اطلاعات مورد نیاز، روی دکمه ایجاد کلیک کنید تا پروژه شما ایجاد شود.

برای اطلاعات بیشتر، لطفاً به مستندات Google Cloud در مورد ایجاد پروژه‌ها مراجعه کنید.

۳. برنامه API را مستقر کنید

برنامه یا API نمونه در مورد چیست؟

برنامه ما یک برنامه API موجودی ساده است که یک نقطه پایانی API REST را با چند عملیات برای فهرست کردن اقلام موجودی و دریافت تعداد موجودی هر کالا ارائه می‌دهد.

زمانی که API را مستقر کردیم و فرض کردیم که در آدرس https://<somehost> میزبانی می‌شود، می‌توانیم به نقاط انتهایی API به صورت زیر دسترسی پیدا کنیم:

https://<somehost>/inventory

این لیست تمام اقلام محصول را با سطوح موجودی موجود نشان می‌دهد.

https://<somehost>/inventory/{productid}

این یک رکورد واحد با شناسه محصول و سطح موجودی در دسترس برای آن محصول ارائه می‌دهد.

داده‌های پاسخ برگشتی با فرمت JSON هستند.

توجه : این برنامه API فقط برای اهداف آزمایشی است و نشان‌دهنده یک پیاده‌سازی API امن و قوی نیست. هدف از ارائه آن، در دسترس قرار دادن یک برنامه سریع برای بررسی هدف اصلی آزمایشگاه، یعنی عملیات ابری گوگل، است.

داده‌های نمونه و درخواست/پاسخ API

این برنامه برای ساده نگه داشتن امور، در قسمت بک‌اند به پایگاه داده وابسته نیست. این برنامه شامل ۳ شناسه محصول نمونه و سطح موجودی آنها است.

شناسه محصول

سطح موجودی در دسترس

۱-۱

۱۰

آی-۲

۲۰

آی-۳

۳۰

نمونه درخواست و پاسخ API در زیر نشان داده شده است:

درخواست API

پاسخ API

https://<somehost>/inventory

[ { "I-1": 10، "I-2": 20، "I-3": 30 }]

https://<somehost>/inventory/I-1

{"شناسه محصول": "I-1", "تعداد": 10}

https://<somehost>/inventory/I-2

{"شناسه محصول": "I-2", "تعداد": 20}

https://<somehost>/inventory/I-200

{"شناسه محصول": I-200، "تعداد": -1}

مخزن را کلون کنید

اگرچه می‌توان از راه دور و از طریق لپ‌تاپ، گوگل کلود را مدیریت کرد، اما در این آزمایشگاه کد، از گوگل کلود شل ، یک محیط خط فرمان که در فضای ابری اجرا می‌شود، استفاده خواهید کرد.

از کنسول GCP روی آیکون Cloud Shell در نوار ابزار بالا سمت راست کلیک کنید:

bce75f34b2c53987.png

آماده‌سازی و اتصال به محیط فقط چند لحظه طول می‌کشد. وقتی تمام شد، باید چیزی شبیه به این را ببینید:

f6ef2b5f13479f3a.png

این ماشین مجازی مجهز به تمام ابزارهای توسعه مورد نیاز شماست. این ماشین یک دایرکتوری خانگی پایدار ۵ گیگابایتی ارائه می‌دهد و بر روی Google Cloud اجرا می‌شود که عملکرد شبکه و احراز هویت را تا حد زیادی افزایش می‌دهد. تمام کارهای شما در این آزمایشگاه را می‌توان به سادگی با یک مرورگر انجام داد.

راه اندازی جی کلود

در Cloud Shell، شناسه پروژه خود را تنظیم کرده و آن را به عنوان متغیر PROJECT_ID ذخیره کنید.

PROJECT_ID=[YOUR-PROJECT-ID]

set config gcloud project $PROJECT_ID

حالا، دستور زیر را اجرا کنید:

clone $ git https://github.com/rominirani/cloud-code-sample-repository.git

این کار باعث ایجاد پوشه‌ای با عنوان cloud-code-sample-repository در این پوشه می‌شود.

(اختیاری) برنامه را روی Cloud Shell اجرا کنید

شما می‌توانید با دنبال کردن مراحل زیر، برنامه را به صورت محلی اجرا کنید:

  1. از طریق ترمینال، با استفاده از دستور زیر به نسخه پایتون API بروید:

cloud-code-sample-repository $ cd

$ cd python-flask-api

  1. در ترمینال، دستور زیر را وارد کنید (در زمان نوشتن این مطلب، Cloud Shell با پایتون ۳.۹.x نصب شده ارائه می‌شود و ما از نسخه پیش‌فرض استفاده خواهیم کرد. اگر قصد دارید آن را به صورت محلی روی لپ‌تاپ خود اجرا کنید، می‌توانید از پایتون ۳.۸+ استفاده کنید):

app.py python $ .py

  1. برای شروع سرور پایتون به صورت محلی می‌توانید دستور زیر را اجرا کنید.

1f798fbddfdc2c8e.png46edf454cc70c5a6.png

روی پیش‌نمایش روی پورت ۸۰۸۰ کلیک کنید. ۵. این یک پنجره مرورگر باز می‌کند. شما یک خطای ۴۰۴ خواهید دید و مشکلی نیست. URL را اصلاح کنید و آن را به «/inventory» بعد از نام میزبان تغییر دهید.

مثلاً روی دستگاه من، به این شکل است:

https://8080-cs-557561579860-default.cs-asia-southeast1-yelo.cloudshell.dev/inventory

این لیست اقلام موجودی را همانطور که قبلاً توضیح داده شد نمایش می‌دهد:

709d57ee2f0137e4.png

  1. اکنون می‌توانید با رفتن به ترمینال و فشردن کلیدهای Ctrl-C، سرور را متوقف کنید.

برنامه را مستقر کنید

اکنون این برنامه API را در Cloud Run مستقر خواهیم کرد. این فرآیند شامل استفاده از کلاینت خط فرمان gcloud برای اجرای دستور جهت استقرار کد در Cloud Run است .

از ترمینال، دستور gcloud زیر را اجرا کنید:

$ gcloud run deploy --source .

این کار سوالات متعددی از شما خواهد پرسید که برخی از نکات آن در زیر ذکر شده است:

  1. نام سرویس (python-flask-api): یا با این پیش‌فرض پیش بروید یا چیزی شبیه به my-inventory-api انتخاب کنید.
  2. API [run.googleapis.com] در پروژه [613162942481] فعال نشده است. آیا می‌خواهید آن را فعال کرده و دوباره امتحان کنید (این کار چند دقیقه طول می‌کشد)؟ (بله/خیر)؟ بله
  3. لطفا یک منطقه را مشخص کنید: 31 (us-west-1) را انتخاب کنید
  4. API [artifactregistry.googleapis.com] در پروژه [613162942481] فعال نشده است. آیا می‌خواهید آن را فعال کرده و دوباره امتحان کنید (این کار چند دقیقه طول می‌کشد)؟ (بله/خیر)؟ بله
  5. استقرار از منبع به یک مخزن Docker در رجیستری Artifact برای ذخیره کانتینرهای ساخته شده نیاز دارد. یک مخزن با نام [cloud-run-source-deploy] در منطقه [us-west1] ایجاد خواهد شد.
  6. آیا می‌خواهید ادامه دهید (بله/خیر)؟ بله
  7. آیا به [my-inventory-api] (y/N) اجازه فراخوانی‌های احراز هویت نشده داده می‌شود؟ بله

در نهایت، این فرآیند شروع می‌شود تا کد منبع شما گرفته شود، آن را کانتینرایز (containerize) کنید، به Artifact Registry منتقل کنید و سپس سرویس Cloud Run + revision را مستقر کنید. شما باید در طول این فرآیند صبور باشید (ممکن است ۳-۴ دقیقه طول بکشد) و باید ببینید که فرآیند با نمایش URL سرویس به شما تکمیل می‌شود.

یک نمونه اجرا در زیر نشان داده شده است:

87ba8dbf88e8cfa4.png

اپلیکیشن را تست کنید

اکنون که برنامه را در Cloud Run مستقر کرده‌ایم، می‌توانید به صورت زیر به برنامه API دسترسی پیدا کنید:

  1. به آدرس اینترنتی سرویس (Service URL) که در مرحله قبل به آن اشاره کردیم توجه کنید. برای مثال، در تنظیمات من، این آدرس به صورت https://my-inventory-api-bt2r5243dq-uw.a.run.app نمایش داده می‌شود. بیایید آن را <SERVICE_URL> بنامیم.
  2. یک مرورگر باز کنید و به ۳ آدرس اینترنتی زیر برای نقاط پایانی API دسترسی پیدا کنید:
  3. <SERVICE_URL>/inventory
  4. <SERVICE_URL>/inventory/I-1
  5. <SERVICE_URL>/inventory/I-100

باید مطابق با مشخصاتی باشد که در بخش قبلی با نمونه درخواست و پاسخ API ارائه داده بودیم.

جزئیات خدمات را از Cloud Run دریافت کنید

ما سرویس API خود را در Cloud Run، یک محیط محاسباتی بدون سرور، مستقر کردیم. می‌توانیم در هر زمانی از طریق کنسول Google Cloud به سرویس Cloud Run دسترسی داشته باشیم.

از منوی اصلی، به Cloud Run بروید. این کار لیست سرویس‌هایی را که در Cloud Run اجرا کرده‌اید نمایش می‌دهد. باید سرویسی را که اخیراً مستقر کرده‌اید، ببینید. بسته به نامی که انتخاب کرده‌اید، باید چیزی شبیه به این را ببینید:

2633965c4bc957cc.png

برای مشاهده جزئیات، روی نام سرویس کلیک کنید. نمونه جزئیات در زیر نشان داده شده است:

۳۳۰۴۲ae۶۴۳۲۲ce۰۷.png

به URL توجه کنید، که چیزی جز URL سرویس نیست که می‌توانید آن را در مرورگر تایپ کنید و به API موجودی که ما مستقر کرده‌ایم دسترسی پیدا کنید. به Metrics و سایر جزئیات توجه کنید.

بیایید همین حالا با Google Cloud Operations Suite شروع کنیم.

۴. یک موضوع عمومی/زیرموضوعی برای دریافت اعلان هشدار ایجاد کنید

برای ایجاد یک موضوع Pub/Sub، می‌توانید این مراحل را در کنسول Google Cloud دنبال کنید:

  1. در کادر جستجو، عبارت Pub/Sub را جستجو کنید و به Pub/Sub بروید. ۹۳۵۰۲۸bd8f6328ef.png
  2. اگر هنوز به تب موضوعات (Topics) نرسیده‌اید، روی آن کلیک کنید. 7fd8bf91386a88fd.png
  3. روی دکمه ایجاد موضوع کلیک کنید. cd9d197f9023c41b.png
  4. یک نام برای موضوع خود وارد کنید.

۱۷۳f۳۱۳b۴a۳c۴۹۳۴.png

  1. روی دکمه‌ی ایجاد کلیک کنید. ca9a02477da21a44.png
  2. با استفاده از دکمه‌ی کپی، نام موضوع را کپی کنید. برای بخش بعدی به آن نیاز خواهید داشت.

20848252ee83df93.png

۵. یک بررسی آپتایم ایجاد کنید

برای ایجاد بررسی آپتایم برای برنامه Google Cloud Run:

  1. به کنسول پلتفرم ابری گوگل بروید.
  2. روی برگه نظارت کلیک کنید.
  3. روی برگه بررسی‌های زمان کارکرد (Uptime Checks) کلیک کنید.
  4. در نزدیکی بالای صفحه، روی دکمه‌ی «ایجاد بررسی زمان فعالیت» کلیک کنید.

۹۶۵۶۱۷۹۹ca500777.png

  1. از مقادیر زیر استفاده کنید:
  2. پروتکل: HTTPS
  3. نوع منبع: آدرس اینترنتی
  4. نام میزبان: بخش آدرس اینترنتی سرویس Cloud Run را بدون https وارد کنید. نمونه‌ای از آن در صفحه زیر آمده است. اگر از آدرس اینترنتی سرویس مطمئن نیستید، از کنسول اصلی Google Cloud به Cloud Run بروید و همانطور که قبلاً توضیح داده شد، به جزئیات سرویس Cloud Run بروید تا آدرس اینترنتی سرویس را دریافت کنید.
  5. مسیر: سالم
  6. فرکانس بررسی: ۱ دقیقه

342865c6d921ff41.png

  1. روی ادامه کلیک کنید
  2. تطبیق محتوا فعال است.
  3. عبارت «همه خوب هستند» را در قسمت محتوای پاسخ وارد کنید؛ این رشته هنگام ارسال پاسخ‌های کامل، از قبل در برنامه وجود دارد.
  4. نگه داشتن

6c9ad336b5479478.png

  1. کد پاسخ HTTP قابل قبول را روی Response Code Classes تنظیم کنید و 2xx را به عنوان تنها کلاس کد پاسخ قرار دهید. به این ترتیب، فقط کدهای پاسخ با 2xx برای رشته ارزیابی می‌شوند و هر چیز دیگری به طور خودکار به عنوان یک بررسی ناموفق محسوب می‌شود. 5a75d8a9e8a11dd4.png
  2. روی ادامه کلیک کنید
  3. موضوع Cloud Pub/Sub را به عنوان کانال اعلان انتخاب کنید و روی تأیید کلیک کنید.

d00db9f6ac56d07c.png

  1. روی ادامه کلیک کنید
  2. یک عنوان قابل تشخیص اضافه کنید d639135da780cce3.png
  3. روی دکمه تست کلیک کنید

۹۶۸۷۵۳a۶۶ed۴۳a۷۵.png

  1. پس از آماده شدن، دکمه ایجاد را بررسی و کلیک کنید 72e5e2081a36d902.png

بررسی آپتایم شما ایجاد می‌شود و شروع به نظارت بر برنامه Cloud Run شما خواهد کرد. می‌توانید وضعیت بررسی آپتایم خود را در برگه Uptime Checks مشاهده کنید.

3fd026b0c07ef4ec.png

۶. تبریک

تبریک می‌گویم، شما با موفقیت Uptime Check خود را برای ارسال هشدار به Pub/Sub پیکربندی کردید!