1. مقدمه
Eventarc اتصال سرویس های Google Cloud را با رویدادها از منابع مختلف آسان می کند. این به شما امکان میدهد معماریهای رویداد محور بسازید که در آن ریزسرویسها بهطور سست کوپل شده و توزیع میشوند. همچنین از انتقال رویداد، تحویل، امنیت، مجوز، و مدیریت خطا برای شما مراقبت می کند که چابکی توسعه دهنده و انعطاف پذیری برنامه را بهبود می بخشد.
Datadog یک پلت فرم نظارت و امنیت برای برنامه های کاربردی ابری است. این ردیابیها، معیارها و گزارشها را با هم ترکیب میکند تا برنامهها، زیرساختها و خدمات شخص ثالث شما را قابل مشاهده کند.
Workflows یک پلت فرم ارکستراسیون کاملاً مدیریت شده است که خدمات را به ترتیبی که شما تعریف می کنید به نام گردش کار اجرا می کند. این گردشهای کاری میتوانند سرویسهای میزبانی شده در Cloud Run یا Cloud Function، سرویسهای Google Cloud مانند Cloud Vision AI و BigQuery و هر API مبتنی بر HTTP را ترکیب کنند.
در اولین کد لبه ، یاد گرفتید که چگونه هشدارهای نظارتی Datadog را با Eventarc به Google Cloud هدایت کنید. در این دومین کد لبه، یاد خواهید گرفت که چگونه با Workflows به هشدارهای مانیتورینگ Datadog پاسخ دهید. به طور خاص، شما 2 ماشین مجازی موتور محاسباتی ایجاد کرده و آنها را با یک مانیتور Datadog نظارت خواهید کرد. هنگامی که 1 ماشین مجازی حذف شد، هشداری از Datadog به Workflows از طریق Eventarc دریافت خواهید کرد. به نوبه خود، Workflows VM حذف شده را دوباره ایجاد می کند تا تعداد VM های در حال اجرا را به 2 برگرداند.
چیزی که یاد خواهید گرفت
- چگونه یکپارچه سازی Google Cloud در Datadog را فعال کنیم.
- نحوه ایجاد یک گردش کار برای بررسی و ایجاد ماشین های مجازی موتور محاسباتی.
- نحوه اتصال هشدارهای مانیتورینگ Datadog به Workflows با Eventarc.
- نحوه ایجاد مانیتور Datadog و هشدار در مورد حذف VM.
2. راه اندازی و الزامات
تنظیم محیط خود به خود
- به Google Cloud Console وارد شوید و یک پروژه جدید ایجاد کنید یا از یک موجود استفاده مجدد کنید. اگر قبلاً یک حساب Gmail یا Google Workspace ندارید، باید یک حساب ایجاد کنید .
- نام پروژه نام نمایشی برای شرکت کنندگان این پروژه است. این یک رشته کاراکتری است که توسط API های Google استفاده نمی شود و می توانید هر زمان که بخواهید آن را به روز کنید.
- شناسه پروژه باید در تمام پروژههای Google Cloud منحصربهفرد باشد و تغییرناپذیر باشد (پس از تنظیم نمیتوان آن را تغییر داد). Cloud Console به طور خودکار یک رشته منحصر به فرد تولید می کند. معمولاً برای شما مهم نیست که چیست. در اکثر کدها، باید به شناسه پروژه ارجاع دهید (و معمولاً به عنوان
PROJECT_ID
شناخته میشود)، بنابراین اگر آن را دوست ندارید، یک نمونه تصادفی دیگر ایجاد کنید، یا میتوانید شناسه پروژه را امتحان کنید و ببینید در دسترس است. سپس پس از ایجاد پروژه "یخ زده" می شود. - یک مقدار سوم وجود دارد، یک شماره پروژه که برخی از API ها از آن استفاده می کنند. در مورد هر سه این مقادیر در مستندات بیشتر بیاموزید.
- در مرحله بعد، برای استفاده از منابع Cloud/APIها، باید صورتحساب را در کنسول Cloud فعال کنید . اجرا کردن از طریق این کد لبه نباید هزینه زیادی داشته باشد، اگر اصلاً باشد. برای اینکه منابع را خاموش کنید تا بیش از این آموزش متحمل صورتحساب نشوید، دستورالعملهای «پاکسازی» را که در انتهای Codelab یافت میشود دنبال کنید. کاربران جدید Google Cloud واجد شرایط برنامه آزمایشی رایگان 300 دلاری هستند.
Cloud Shell را راه اندازی کنید
در حالی که Google Cloud را می توان از راه دور از لپ تاپ شما کار کرد، در این کد لبه از Google Cloud Shell استفاده خواهید کرد، یک محیط خط فرمان که در Cloud اجرا می شود.
از Google Cloud Console ، روی نماد Cloud Shell در نوار ابزار بالا سمت راست کلیک کنید:
تهیه و اتصال به محیط فقط چند لحظه طول می کشد. وقتی تمام شد، باید چیزی شبیه به این را ببینید:
این ماشین مجازی با تمام ابزارهای توسعه که شما نیاز دارید بارگذاری شده است. این یک فهرست اصلی 5 گیگابایتی دائمی را ارائه می دهد و در Google Cloud اجرا می شود و عملکرد و احراز هویت شبکه را تا حد زیادی افزایش می دهد. تمام کارهای شما در این آزمایشگاه به سادگی با یک مرورگر قابل انجام است.
gcloud را راه اندازی کنید
در Cloud Shell، ID پروژه خود را تنظیم کرده و آن را به عنوان متغیر 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
3. کانال Datadog را بررسی کنید
مطمئن شوید که کانال Datadog که در اولین کدلب ایجاد کرده اید فعال باشد. در 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'
همچنین میتوانید وضعیت کانال را در Google Cloud Console ببینید:
وضعیت کانال باید ACTIVE
باشد. اگر نه، به اولین کد لبه بازگردید و مراحل ایجاد و فعال کردن کانال با Datadog را دنبال کنید.
4. یکپارچه سازی Google Cloud Datadog را فعال کنید
برای استفاده از Datadog برای نظارت بر پروژه، باید API های مورد نیاز برای Datadog را فعال کنید، یک حساب سرویس ایجاد کنید و حساب سرویس را به Datadog متصل کنید.
API ها را برای Datadog فعال کنید
gcloud services enable compute.googleapis.com \ cloudasset.googleapis.com \ monitoring.googleapis.com
یک حساب کاربری ایجاد کنید
ادغام Google Cloud Datadog از یک حساب سرویس برای برقراری تماس با Cloud Logging API برای جمعآوری معیارهای سطح گره از نمونههای Compute Engine شما استفاده میکند.
یک حساب سرویس برای 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
را جستجو کنید:
ماوس را روی Google Cloud Platform
نگه دارید تا به صفحه Install
بروید:
ادغام را با آپلود کلید حساب سرویس در قسمت Upload Private Key File
و سپس کلیک بر روی Install Integration
نصب کنید:
پس از تکمیل ادغام، Datadog به طور خودکار تعدادی داشبورد مرتبط با Google Cloud را در Dashboards
ایجاد می کند:
5. ماشین های مجازی موتور محاسباتی ایجاد کنید
سپس، چند ماشین مجازی موتور محاسباتی (VM) ایجاد کنید. شما این ماشین های مجازی را با یک مانیتور Datadog نظارت خواهید کرد و با یک گردش کار در Google Cloud به هشدارهای Datadog پاسخ می دهید.
۲ ماشین مجازی موتور محاسباتی ایجاد کنید:
gcloud compute instances create instance-1 instance-2 --zone us-central1-a
شما باید ماشین های مجازی را ببینید که در یک دقیقه یا بیشتر در Cloud Console ساخته و اجرا می شوند. پس از مدتی (معمولاً 10 دقیقه)، باید این ماشینهای مجازی را در Datadog در داشبورد Google Compute Engine
در زیر Dashboards
مشاهده کنید:
6. یک گردش کار ایجاد کنید
اکنون که 2 ماشین مجازی در حال اجرا دارید، یک گردش کاری ایجاد کنید که به هشدارهای مانیتور Datadog پاسخ می دهد. گردش کار میتواند به اندازه دلخواه شما پیچیده باشد، اما در این مورد، گردش کار تعداد نمونههای VM در حال اجرا را بررسی میکند و اگر کمتر از 2 باشد، نمونههای VM جدیدی ایجاد میکند تا مطمئن شود که 2 VM همیشه در حال اجرا هستند.
یک فایل 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}
توجه داشته باشید که گردش کار یک رویداد را به عنوان پارامتر دریافت می کند. این رویداد از پایش Datadog از طریق Eventarc خواهد بود. پس از دریافت رویداد، گردش کار تعداد نمونه های در حال اجرا را بررسی می کند و در صورت نیاز نمونه های VM جدیدی ایجاد می کند.
گسترش گردش کار:
WORKFLOW_NAME=workflow-datadog2 gcloud workflows deploy $WORKFLOW_NAME \ --source workflow-datadog2.yaml \ --location $REGION
گردش کار مستقر است اما هنوز اجرا نمی شود. هنگامی که هشدار Datadog دریافت می شود، توسط یک ماشه Eventarc اجرا می شود.
7. یک ماشه Eventarc ایجاد کنید
اکنون آماده هستید که رویدادها را از ارائه دهنده Datadog به Workflows با یک تریگر Eventarc متصل کنید. شما از کانال و حساب سرویسی که در اولین کد لبه راه اندازی کرده اید استفاده خواهید کرد.
یک ماشه با کانال 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
8. یک مانیتور Datadog ایجاد کنید
اکنون یک مانیتور Datadog ایجاد کرده و آن را به Eventarc متصل خواهید کرد.
مانیتور تعداد ماشین های مجازی موتور محاسباتی در حال اجرا را بررسی می کند و اگر کمتر از 2 باشد، هشدار می دهد.
برای ایجاد مانیتور در 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
در پایین فشار دهید تا مانیتور ایجاد شود.
9. مانیتور و ماشه را تست کنید
برای آزمایش مانیتور Datadog، تریگر Eventarc و در نهایت گردش کار، یکی از VM ها را حذف خواهید کرد:
gcloud compute instances delete instance-2 --zone us-central1-a
پس از چند ثانیه، باید شاهد حذف نمونه در Google Cloud Console باشید.
برای نمایش این تغییر در Datadog کمی تأخیر وجود دارد. پس از مدتی (معمولاً 10 دقیقه)، باید مانیتور را در Datadog مشاهده کنید تا در بخش Manage Monitors
این مورد را شناسایی و هشدار دهید:
هنگامی که مانیتور Datadog هشدار داد، باید ببینید که این هشدار از طریق Eventarc به Workflows می رود. اگر گزارشهای Workflow را بررسی کنید، باید ببینید که Workflows تفاوت بین تعداد نمونه فعلی و تعداد نمونه مورد انتظار را بررسی میکند:
2022-03-28 09:30:53.371 BST instanceCount->1 diffInstanceCount->1
با ایجاد یک نمونه VM جدید با پیشوند datadog-instance-##
به آن هشدار پاسخ می دهد.
در پایان، شما همچنان 2 ماشین مجازی در پروژه خود خواهید داشت، یکی در ابتدا و دیگری توسط Workflows پس از هشدار Datadog ایجاد شده است!
10. تبریک می گویم
تبریک می گویم، شما نرم افزار کد را تمام کردید!
آنچه را پوشش داده ایم
- چگونه یکپارچه سازی Google Cloud در Datadog را فعال کنیم.
- نحوه ایجاد یک گردش کار برای بررسی و ایجاد ماشین های مجازی موتور محاسباتی.
- نحوه اتصال هشدارهای مانیتورینگ Datadog به Workflows با Eventarc.
- نحوه ایجاد مانیتور Datadog و هشدار در مورد حذف VM.