هشدارهای نظارت مسیر داده داگ به Google Cloud با Eventarc (قسمت 2)

1. مقدمه

cb762f29e9183a3f.png3c7ca8629bc25d9c.png1c05e3d0c2bd2b45.png

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. راه اندازی و الزامات

تنظیم محیط خود به خود

  1. به Google Cloud Console وارد شوید و یک پروژه جدید ایجاد کنید یا از یک موجود استفاده مجدد کنید. اگر قبلاً یک حساب Gmail یا Google Workspace ندارید، باید یک حساب ایجاد کنید .

b35bf95b8bf3d5d8.png

a99b7ace416376c4.png

bd84a6d3004737c5.png

  • نام پروژه نام نمایشی برای شرکت کنندگان این پروژه است. این یک رشته کاراکتری است که توسط API های Google استفاده نمی شود و می توانید هر زمان که بخواهید آن را به روز کنید.
  • شناسه پروژه باید در تمام پروژه‌های Google Cloud منحصربه‌فرد باشد و تغییرناپذیر باشد (پس از تنظیم نمی‌توان آن را تغییر داد). Cloud Console به طور خودکار یک رشته منحصر به فرد تولید می کند. معمولاً برای شما مهم نیست که چیست. در اکثر کدها، باید به شناسه پروژه ارجاع دهید (و معمولاً به عنوان PROJECT_ID شناخته می‌شود)، بنابراین اگر آن را دوست ندارید، یک نمونه تصادفی دیگر ایجاد کنید، یا می‌توانید شناسه پروژه را امتحان کنید و ببینید در دسترس است. سپس پس از ایجاد پروژه "یخ زده" می شود.
  • یک مقدار سوم وجود دارد، یک شماره پروژه که برخی از API ها از آن استفاده می کنند. در مورد هر سه این مقادیر در مستندات بیشتر بیاموزید.
  1. در مرحله بعد، برای استفاده از منابع Cloud/APIها، باید صورتحساب را در کنسول Cloud فعال کنید . اجرا کردن از طریق این کد لبه نباید هزینه زیادی داشته باشد، اگر اصلاً باشد. برای اینکه منابع را خاموش کنید تا بیش از این آموزش متحمل صورتحساب نشوید، دستورالعمل‌های «پاک‌سازی» را که در انتهای Codelab یافت می‌شود دنبال کنید. کاربران جدید Google Cloud واجد شرایط برنامه آزمایشی رایگان 300 دلاری هستند.

Cloud Shell را راه اندازی کنید

در حالی که Google Cloud را می توان از راه دور از لپ تاپ شما کار کرد، در این کد لبه از Google Cloud Shell استفاده خواهید کرد، یک محیط خط فرمان که در Cloud اجرا می شود.

از Google Cloud Console ، روی نماد Cloud Shell در نوار ابزار بالا سمت راست کلیک کنید:

55efc1aaa7a4d3ad.png

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

7ffe5cbb04455448.png

این ماشین مجازی با تمام ابزارهای توسعه که شما نیاز دارید بارگذاری شده است. این یک فهرست اصلی 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 ببینید:

8399d528ccbd4c20.png

وضعیت کانال باید 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 را جستجو کنید:

cf1ffa6547fba3e4.png

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

31b365a31bc50cc8.png

ادغام را با آپلود کلید حساب سرویس در قسمت Upload Private Key File و سپس کلیک بر روی Install Integration نصب کنید:

92e475e4da7f826.png

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

66fdf2d26e4710d.png

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 مشاهده کنید:

78a51374c1d0c11e.png

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 ، یک مانیتور با موارد زیر ایجاد کنید:

  1. روش تشخیص را انتخاب کنید: Threshold .
  2. معیار را تعریف کنید: gcp.gce.instance.is_running از (همه جا) sum by (همه چیز)
  3. تنظیم شرایط هشدار:
  4. زمانی فعال شود که معیار at least once در 5 minutes آخر below آستانه باشد
  5. آستانه هشدار: < 2
  6. به تیم خود اطلاع دهید: @eventarc_<your-project-id>_<your-region>_<your-channel-name>
  7. مثال نام مانیتور: 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 این مورد را شناسایی و هشدار دهید:

50f93d560b6c1973.png

هنگامی که مانیتور Datadog هشدار داد، باید ببینید که این هشدار از طریق Eventarc به Workflows می رود. اگر گزارش‌های Workflow را بررسی کنید، باید ببینید که Workflows تفاوت بین تعداد نمونه فعلی و تعداد نمونه مورد انتظار را بررسی می‌کند:

2022-03-28 09:30:53.371 BST instanceCount->1 diffInstanceCount->1

با ایجاد یک نمونه VM جدید با پیشوند datadog-instance-## به آن هشدار پاسخ می دهد.

در پایان، شما همچنان 2 ماشین مجازی در پروژه خود خواهید داشت، یکی در ابتدا و دیگری توسط Workflows پس از هشدار Datadog ایجاد شده است!

11e42028e7142690.png

10. تبریک می گویم

تبریک می گویم، شما نرم افزار کد را تمام کردید!

آنچه را پوشش داده ایم

  • چگونه یکپارچه سازی Google Cloud در Datadog را فعال کنیم.
  • نحوه ایجاد یک گردش کار برای بررسی و ایجاد ماشین های مجازی موتور محاسباتی.
  • نحوه اتصال هشدارهای مانیتورینگ Datadog به Workflows با Eventarc.
  • نحوه ایجاد مانیتور Datadog و هشدار در مورد حذف VM.