۱. مقدمه



Eventarc اتصال سرویسهای Google Cloud را با رویدادهایی از منابع مختلف آسان میکند. این به شما امکان میدهد معماریهای مبتنی بر رویداد بسازید که در آنها میکروسرویسها به صورت آزادانه جفت و توزیع شدهاند. همچنین از دریافت، تحویل، امنیت، مجوزدهی و مدیریت خطا برای شما مراقبت میکند که چابکی توسعهدهنده و انعطافپذیری برنامه را بهبود میبخشد.
دیتاداگ یک پلتفرم نظارت و امنیت برای برنامههای ابری است. این پلتفرم، ردیابیها، معیارها و گزارشهای سرتاسری را گرد هم میآورد تا برنامهها، زیرساختها و سرویسهای شخص ثالث شما را قابل مشاهده کند.
گردشهای کاری (Workflows) یک پلتفرم هماهنگسازی کاملاً مدیریتشده است که سرویسها را به ترتیبی که شما تعریف میکنید و گردش کار نامیده میشود، اجرا میکند. این گردشهای کاری میتوانند سرویسهای میزبانیشده در Cloud Run یا Cloud Functions، سرویسهای Google Cloud مانند Cloud Vision AI و BigQuery و هر API مبتنی بر HTTP را با هم ترکیب کنند.
در اولین آزمایشگاه کد ، یاد گرفتید که چگونه هشدارهای مانیتورینگ Datadog را با Eventarc به Google Cloud هدایت کنید. در این آزمایشگاه کد دوم، یاد خواهید گرفت که چگونه با Workflows به هشدارهای مانیتورینگ Datadog پاسخ دهید. به طور خاص، شما 2 ماشین مجازی Compute Engine ایجاد خواهید کرد و آنها را با یک مانیتور Datadog مانیتور خواهید کرد. به محض اینکه یکی از ماشینهای مجازی حذف شود، از طریق Eventarc از Datadog به Workflows هشداری دریافت خواهید کرد. در عوض، Workflows ماشین مجازی حذف شده را دوباره ایجاد میکند تا تعداد ماشینهای مجازی در حال اجرا به 2 عدد برگردد.
آنچه یاد خواهید گرفت
- نحوه فعال کردن ادغام Google Cloud در Datadog.
- نحوه ایجاد یک گردش کار برای بررسی و ایجاد ماشینهای مجازی موتور محاسباتی.
- نحوه اتصال هشدارهای نظارتی Datadog به گردشهای کاری با Eventarc.
- نحوه ایجاد یک مانیتور Datadog و هشدار در مورد حذف ماشینهای مجازی.
۲. تنظیمات و الزامات
تنظیم محیط خودتنظیم
- وارد کنسول گوگل کلود شوید و یک پروژه جدید ایجاد کنید یا از یک پروژه موجود دوباره استفاده کنید. اگر از قبل حساب جیمیل یا گوگل ورک اسپیس ندارید، باید یکی ایجاد کنید .



- نام پروژه ، نام نمایشی برای شرکتکنندگان این پروژه است. این یک رشته کاراکتری است که توسط APIهای گوگل استفاده نمیشود و شما میتوانید آن را در هر زمانی بهروزرسانی کنید.
- شناسه پروژه باید در تمام پروژههای گوگل کلود منحصر به فرد باشد و تغییرناپذیر است (پس از تنظیم، قابل تغییر نیست). کنسول کلود به طور خودکار یک رشته منحصر به فرد تولید میکند؛ معمولاً برای شما مهم نیست که چیست. در اکثر آزمایشگاههای کد، باید به شناسه پروژه ارجاع دهید (و معمولاً با نام
PROJECT_IDشناخته میشود)، بنابراین اگر آن را دوست ندارید، یک شناسه تصادفی دیگر ایجاد کنید، یا میتوانید شناسه خودتان را امتحان کنید و ببینید آیا در دسترس است یا خیر. سپس پس از ایجاد پروژه، آن "منجمد" میشود. - یک مقدار سوم هم وجود دارد، شماره پروژه که برخی از APIها از آن استفاده میکنند. برای اطلاعات بیشتر در مورد هر سه این مقادیر به مستندات مراجعه کنید.
- در مرحله بعد، برای استفاده از منابع/APIهای ابری، باید پرداخت صورتحساب را در کنسول ابری فعال کنید . اجرای این آزمایشگاه کد، اگر اصلاً هزینهای نداشته باشد، هزینه زیادی نخواهد داشت. برای خاموش کردن منابع به طوری که پس از این آموزش متحمل پرداخت صورتحساب نشوید، دستورالعملهای «پاکسازی» موجود در انتهای آزمایشگاه کد را دنبال کنید. کاربران جدید Google Cloud واجد شرایط برنامه آزمایشی رایگان ۳۰۰ دلاری هستند.
شروع پوسته ابری
اگرچه میتوان از راه دور و از طریق لپتاپ، گوگل کلود را مدیریت کرد، اما در این آزمایشگاه کد، از گوگل کلود شل ، یک محیط خط فرمان که در فضای ابری اجرا میشود، استفاده خواهید کرد.
از کنسول گوگل کلود ، روی آیکون Cloud Shell در نوار ابزار بالا سمت راست کلیک کنید:

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

این ماشین مجازی مجهز به تمام ابزارهای توسعه مورد نیاز شماست. این ماشین یک دایرکتوری خانگی دائمی ۵ گیگابایتی ارائه میدهد و روی فضای ابری گوگل اجرا میشود که عملکرد شبکه و احراز هویت را تا حد زیادی بهبود میبخشد. تمام کارهای شما در این آزمایشگاه را میتوان به سادگی با یک مرورگر انجام داد.
جی کلود را تنظیم کنید
در Cloud Shell، شناسه پروژه خود را تنظیم کرده و آن را به عنوان متغیر PROJECT_ID ذخیره کنید.
همچنین، متغیر REGION را روی us-central1 تنظیم کنید. این منطقهای است که بعداً منابع را در آن ایجاد خواهید کرد.
PROJECT_ID=[YOUR-PROJECT-ID] REGION=us-central1 gcloud config set core/project $PROJECT_ID
فعال کردن APIها
فعال کردن تمام سرویسهای لازم:
gcloud services enable \ workflows.googleapis.com \ workflowexecutions.googleapis.com
۳. کانال دیتاداگ را تأیید کنید
مطمئن شوید که کانال Datadog که در codelab اول ایجاد کردهاید فعال است. در Cloud Shell، دستور زیر را برای بازیابی جزئیات کانال اجرا کنید:
CHANNEL_NAME=datadog-channel gcloud eventarc channels describe $CHANNEL_NAME --location $REGION
خروجی باید مشابه زیر باشد:
activationToken: so5g4Kdasda7y2MSasdaGn8njB2 createTime: '2022-03-09T09:53:42.428978603Z' name: projects/project-id/locations/us-central1/channels/datadog-channel provider: projects/project-id/locations/us-central1/providers/datadog pubsubTopic: projects/project-id/topics/eventarc-channel-us-central1-datadog-channel-077 state: ACTIVE uid: 183d3323-8cas-4e95-8d72-7d8c8b27cf9e updateTime: '2022-03-09T09:53:48.290217299Z'
همچنین میتوانید وضعیت کانال را در کنسول ابری گوگل مشاهده کنید:

وضعیت کانال باید ACTIVE باشد. در غیر این صورت، به اولین آزمایشگاه کد برگردید و مراحل ایجاد و فعالسازی کانال با Datadog را دنبال کنید.
۴. ادغام گوگل کلود دیتاداگ را فعال کنید
برای استفاده از Datadog برای نظارت بر یک پروژه، باید API های مورد نیاز برای Datadog را فعال کنید، یک حساب کاربری سرویس ایجاد کنید و حساب کاربری سرویس را به Datadog متصل کنید.
فعال کردن APIها برای Datadog
gcloud services enable compute.googleapis.com \ cloudasset.googleapis.com \ monitoring.googleapis.com
ایجاد حساب کاربری سرویس
یکپارچهسازی گوگل کلود دیتاداگ از یک حساب کاربری سرویس برای برقراری تماس با API ثبت وقایع ابری (Cloud Logging API) جهت جمعآوری معیارهای سطح گره از نمونههای موتور محاسباتی شما استفاده میکند.
یک حساب کاربری سرویس برای Datadog ایجاد کنید:
DATADOG_SA_NAME=datadog-service-account
gcloud iam service-accounts create $DATADOG_SA_NAME \
--display-name "Datadog Service Account"
با اعطای نقشهای IAM زیر، حساب سرویس Datadog را برای جمعآوری معیارها، برچسبها، رویدادها و برچسبهای کاربر فعال کنید:
DATADOG_SA_EMAIL=$DATADOG_SA_NAME@$PROJECT_ID.iam.gserviceaccount.com
gcloud projects add-iam-policy-binding $PROJECT_ID \
--member serviceAccount:$DATADOG_SA_EMAIL \
--role roles/cloudasset.viewer
gcloud projects add-iam-policy-binding $PROJECT_ID \
--member serviceAccount:$DATADOG_SA_EMAIL \
--role roles/compute.viewer
gcloud projects add-iam-policy-binding $PROJECT_ID \
--member serviceAccount:$DATADOG_SA_EMAIL \
--role roles/monitoring.viewer
یک کلید حساب کاربری ایجاد و دانلود کنید. برای تکمیل ادغام با Datadog به فایل کلید نیاز دارید.
یک فایل کلید حساب سرویس در دایرکتوری خانگی Cloud Shell خود ایجاد کنید:
gcloud iam service-accounts keys create ~/key.json \ --iam-account $DATADOG_SA_EMAIL
در Cloud Shell، روی More ⁝ کلیک کنید و سپس Download File انتخاب کنید. در فیلد File path ، key.json را وارد کنید. برای دانلود فایل کلید، روی Download کلیک کنید.
حساب سرویس را به Datadog وصل کنید
در حساب Datadog خود، به بخش Integrations بروید و عبارت Google Cloud integration را جستجو کنید:

برای رفتن به صفحه Install نشانگر ماوس را روی Google Cloud Platform نگه دارید:

با آپلود کلید حساب سرویس در بخش Upload Private Key File و سپس کلیک بر روی Install Integration یکپارچهسازی را نصب کنید:

پس از تکمیل ادغام، Datadog به طور خودکار تعدادی داشبورد مرتبط با Google Cloud را در بخش Dashboards ایجاد میکند:

۵. ایجاد ماشینهای مجازی موتور محاسباتی
در مرحله بعد، چند ماشین مجازی (VM) با موتور محاسباتی ایجاد کنید. شما این ماشینهای مجازی را با یک مانیتور Datadog رصد خواهید کرد و با یک گردش کار در Google Cloud به هشدارهای Datadog پاسخ خواهید داد.
دو ماشین مجازی با موتور محاسباتی ایجاد کنید:
gcloud compute instances create instance-1 instance-2 --zone us-central1-a
شما باید ماشینهای مجازی ایجاد شده و در حال اجرا را در عرض یک دقیقه یا بیشتر در کنسول ابری مشاهده کنید. پس از مدتی (معمولاً 10 دقیقه)، باید این ماشینهای مجازی را در Datadog در داشبورد Google Compute Engine در بخش Dashboards نیز مشاهده کنید:

۶. یک گردش کار ایجاد کنید
حالا که دو ماشین مجازی در حال اجرا دارید، یک گردش کار ایجاد کنید که به هشدارهای یک مانیتور Datadog پاسخ دهد. این گردش کار میتواند به هر اندازه که دوست دارید پیچیده باشد، اما در این حالت، گردش کار تعداد نمونههای ماشین مجازی در حال اجرا را بررسی میکند و اگر کمتر از ۲ باشد، نمونههای ماشین مجازی جدیدی ایجاد میکند تا مطمئن شود که همیشه ۲ ماشین مجازی در حال اجرا هستند.
یک فایل workflow-datadog2.yaml با محتوای زیر ایجاد کنید:
main:
params: [event]
steps:
- init:
assign:
- projectId: ${sys.get_env("GOOGLE_CLOUD_PROJECT_ID")}
- zone: "us-central1-a"
- minInstanceCount: 2
- namePattern: "datadog-instance-##"
- listInstances:
call: googleapis.compute.v1.instances.list
args:
project: ${projectId}
zone: ${zone}
result: listResult
- getInstanceCount:
steps:
- initInstanceCount:
assign:
- instanceCount: 0
- setInstanceCount:
switch:
- condition: ${"items" in listResult}
steps:
- stepA:
assign:
- instanceCount: ${len(listResult.items)}
- findDiffInstanceCount:
steps:
- assignDiffInstanceCount:
assign:
- diffInstanceCount: ${minInstanceCount - instanceCount}
- logDiffInstanceCount:
call: sys.log
args:
data: ${"instanceCount->" + string(instanceCount) + " diffInstanceCount->" + string(diffInstanceCount)}
- endEarlyIfNeeded:
switch:
- condition: ${diffInstanceCount < 1}
next: returnResult
- bulkInsert:
call: googleapis.compute.v1.instances.bulkInsert
args:
project: ${projectId}
zone: ${zone}
body:
count: ${diffInstanceCount}
namePattern: ${namePattern}
instanceProperties:
machineType: "e2-micro"
disks:
- autoDelete: true
boot: true
initializeParams:
sourceImage: projects/debian-cloud/global/images/debian-10-buster-v20220310
networkInterfaces:
- network: "global/networks/default"
result: bulkInsertResult
- returnResult:
return: ${bulkInsertResult}
توجه داشته باشید که گردش کار یک رویداد را به عنوان پارامتر دریافت میکند. این رویداد از طریق Eventarc و از طریق مانیتورینگ Datadog ارسال میشود. به محض دریافت رویداد، گردش کار تعداد نمونههای در حال اجرا را بررسی کرده و در صورت نیاز، نمونههای جدید ماشین مجازی ایجاد میکند.
گردش کار را مستقر کنید:
WORKFLOW_NAME=workflow-datadog2 gcloud workflows deploy $WORKFLOW_NAME \ --source workflow-datadog2.yaml \ --location $REGION
گردش کار مستقر شده است اما هنوز اجرا نشده است. این گردش کار توسط یک تریگر Eventarc هنگام دریافت هشدار Datadog اجرا خواهد شد.
۷. یک تریگر Eventarc ایجاد کنید
اکنون آمادهاید تا رویدادها را از ارائهدهنده Datadog به Workflows با یک trigger Eventarc متصل کنید. شما از کانال و حساب سرویسی که در codelab اول تنظیم کردهاید، استفاده خواهید کرد.
یک تریگر با کانال Datadog، نوع رویداد و همچنین یک مقصد گردش کار ایجاد کنید:
PROJECT_NUMBER=$(gcloud projects describe $PROJECT_ID --format='value(projectNumber)') gcloud eventarc triggers create datadog-trigger2 \ --location $REGION \ --destination-workflow $WORKFLOW_NAME \ --destination-workflow-location $REGION \ --channel $CHANNEL_NAME \ --event-filters type=datadog.v1.alert \ --service-account $PROJECT_NUMBER-compute@developer.gserviceaccount.com
میتوانید تریگرها را فهرست کنید تا ببینید تریگر تازه ایجاد شده فعال است یا خیر:
gcloud eventarc triggers list --location $REGION NAME: datadog-trigger2 TYPE: datadog.v1.alert DESTINATION: Workflows: workflow-datadog2 ACTIVE: Yes
۸. یک مانیتور Datadog ایجاد کنید
اکنون یک مانیتور Datadog ایجاد کرده و آن را به Eventarc متصل خواهید کرد.
مانیتور تعداد ماشینهای مجازی Compute Engine در حال اجرا را بررسی میکند و اگر تعداد آنها کمتر از ۲ شود، هشدار میدهد.
برای ایجاد یک مانیتور در Datadog، وارد Datadog شوید . در منوی اصلی، موس را روی Monitors ببرید و در زیرمنو روی New Monitor کلیک کنید. انواع مانیتور زیادی وجود دارد. نوع مانیتور Metric را انتخاب کنید.
در صفحه New Monitor ، یک مانیتور با مشخصات زیر ایجاد کنید:
- روش تشخیص را انتخاب کنید:
Threshold. - معیار را تعریف کنید:
gcp.gce.instance.is_runningاز (همه جا)sum by(همه چیز) - تنظیم شرایط هشدار:
- وقتی معیار
at least onceدر5 minutesگذشتهbelowآستانه باشد، فعال میشود - آستانه هشدار:
< 2 - به تیم خود اطلاع دهید:
@eventarc_<your-project-id>_<your-region>_<your-channel-name> - نام مانیتور مثال:
Compute Engine instances < 2
حالا، برای ایجاد مانیتور، روی Create در پایین صفحه کلیک کنید.
۹. مانیتور و تریگر را آزمایش کنید
برای آزمایش مانیتور Datadog، تریگر Eventarc و در نهایت گردش کار، یکی از ماشینهای مجازی را حذف خواهید کرد:
gcloud compute instances delete instance-2 --zone us-central1-a
بعد از چند ثانیه، باید ببینید که نمونه در کنسول ابری گوگل حذف شده است.
کمی تأخیر برای نمایش این تغییر در Datadog وجود دارد. پس از مدتی (معمولاً 10 دقیقه)، باید مانیتور را در Datadog مشاهده کنید تا این مورد را در بخش Manage Monitors تشخیص داده و هشدار دهد:

به محض اینکه مانیتور Datadog هشدار میدهد، باید ببینید که هشدار از طریق Eventarc به Workflows میرود. اگر لاگهای Workflows را بررسی کنید، باید ببینید که Workflows بررسی میکند تا تفاوت بین تعداد نمونه فعلی و تعداد نمونه مورد انتظار را پیدا کند:
2022-03-28 09:30:53.371 BST instanceCount->1 diffInstanceCount->1
با ایجاد یک نمونه ماشین مجازی جدید با پیشوند datadog-instance-## به آن هشدار پاسخ میدهد.
در نهایت، شما هنوز دو ماشین مجازی در پروژه خود خواهید داشت، یکی که خودتان در ابتدا ایجاد کردهاید و دیگری که توسط Workflows پس از هشدار Datadog ایجاد شده است!

۱۰. تبریک
تبریک میگویم، شما codelab را تمام کردید!
آنچه ما پوشش دادهایم
- نحوه فعال کردن ادغام Google Cloud در Datadog.
- نحوه ایجاد یک گردش کار برای بررسی و ایجاد ماشینهای مجازی موتور محاسباتی.
- نحوه اتصال هشدارهای نظارتی Datadog به گردشهای کاری با Eventarc.
- نحوه ایجاد یک مانیتور Datadog و هشدار در مورد حذف ماشینهای مجازی.