هشدارهای نظارتی Route Datadog به Google Cloud با Eventarc (قسمت 1)

1. مقدمه

cb762f29e9183a3f.png3c7ca8629bc25d9c.png

Eventarc اتصال سرویس های Google Cloud را با رویدادها از منابع مختلف آسان می کند. این به شما امکان می‌دهد معماری‌های رویداد محور بسازید که در آن ریزسرویس‌ها به‌طور سست کوپل شده و توزیع می‌شوند. همچنین از انتقال رویداد، تحویل، امنیت، مجوز، و مدیریت خطا برای شما مراقبت می کند که چابکی توسعه دهنده و انعطاف پذیری برنامه را بهبود می بخشد.

Datadog یک پلت فرم نظارت و امنیت برای برنامه های کاربردی ابری است. این ردیابی‌ها، معیارها و گزارش‌ها را با هم ترکیب می‌کند تا برنامه‌ها، زیرساخت‌ها و خدمات شخص ثالث شما را قابل مشاهده کند.

در این اولین کد لبه، یاد خواهید گرفت که چگونه یک هشدار ساده نظارتی Datadog را با Eventarc به Google Cloud هدایت کنید.

چیزی که یاد خواهید گرفت

  • چگونه ارائه دهنده Datadog را کشف کنیم.
  • نحوه راه اندازی یک کانال برای ارائه دهنده Datadog.
  • نحوه ایجاد یک گردش کار برای ثبت رویدادها
  • نحوه ایجاد تریگر Eventarc با کانال.
  • نحوه ایجاد مانیتور Datadog
  • نحوه تست مانیتور Datadog، تریگر Eventarc و گردش کار.

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 فعال کنید . اجرا کردن از طریق این کد لبه نباید هزینه زیادی داشته باشد، اگر اصلاً باشد. برای اینکه منابع را خاموش کنید تا بیش از این آموزش متحمل صورتحساب نشوید، می توانید منابعی را که ایجاد کرده اید حذف کنید یا کل پروژه را حذف کنید. کاربران جدید 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 \
  eventarc.googleapis.com \
  eventarcpublishing.googleapis.com \
  workflows.googleapis.com \
  workflowexecutions.googleapis.com

3. ارائه دهنده Datadog را کشف کنید

ارائه‌دهنده Eventarc سرویس یا موجودی است که می‌تواند رویدادها را مستقیماً به Google Cloud ارسال کند که سپس به پروژه شما هدایت می‌شوند. ارائه دهندگان شخص ثالث، مانند Datadog، ارائه دهندگان غیر Google Cloud هستند که از طریق Eventarc با Google Cloud یکپارچه شده اند.

در Cloud Shell، دستور زیر را اجرا کنید تا لیست Google Cloud و ارائه دهندگان شخص ثالث را ببینید:

gcloud eventarc providers list

این ارائه‌دهندگان Google Cloud و شخص ثالث و مکان‌هایی که در آن‌ها در دسترس هستند را فهرست می‌کند:

NAME: storage.googleapis.com
LOCATION: asia

NAME: cloudaudit.googleapis.com
LOCATION: asia

NAME: pubsub.googleapis.com
LOCATION: asia

...

با این دستور می توانید لیست را به ارائه دهندگان شخص ثالث محدود کنید:

gcloud eventarc providers list --filter='eventTypes.type!~^google*'

باید Datadog را در لیست ببینید:

NAME: datadog
LOCATION: us-central1

همچنین می‌توانید ارائه‌دهنده Datadog را برای مشاهده رویدادهایی که پشتیبانی می‌کند توصیف کنید:

gcloud eventarc providers describe datadog --location $REGION

displayName: Datadog
eventTypes:
- type: datadog.v1.alert
name: projects/project-id/locations/us-central1/providers/datadog

4. یک کانال راه اندازی کنید

شما باید یک کانال راه اندازی کنید تا پروژه خود را با یک ارائه دهنده یکپارچه کنید. این شامل ایجاد یک کانال، بازیابی جزئیات کانال و ارسال آن جزئیات به ارائه دهنده است. هنگامی که ارائه دهنده اتصال به کانال را راه اندازی کرد، ارائه دهنده می تواند شروع به ارسال رویدادها به پروژه شما کند.

یک کانال ایجاد کنید

می توانید با استفاده از gcloud یک کانال برای ارائه دهنده Datadog ایجاد کنید:

CHANNEL_NAME=datadog-channel
gcloud eventarc channels create $CHANNEL_NAME \
   --provider datadog \
   --location $REGION

همچنین می‌توانید آن را از بخش کانال‌های صفحه Eventarc در Google Cloud Console ایجاد کنید:

d03a7173b25e5ea6.png

بازیابی جزئیات کانال

پس از ایجاد کانال، جزئیات کانال را از gcloud بازیابی کنید:

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: PENDING
uid: 183d3323-8cas-4e95-8d72-7d8c8b27cf9e
updateTime: '2022-03-09T09:53:48.290217299Z'

به طور مشابه، می‌توانید کانال را از Google Cloud Console ببینید:

80d8b2b6a46cb4c5.png

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

  • PENDING — کانال با موفقیت ایجاد شد و یک نشانه فعال سازی برای ایجاد ارتباط با ارائه دهنده موجود است. برای تغییر وضعیت کانال از PENDING به ACTIVE ، رمز باید به ارائه دهنده داده شود و ظرف 24 ساعت پس از ایجاد کانال برای اتصال کانال استفاده شود.
  • ACTIVE — کانال با موفقیت با ارائه دهنده متصل شد. یک کانال ACTIVE آماده دریافت و مسیریابی رویدادها از ارائه دهنده است.
  • INACTIVE - کانال نمی تواند رویدادها را دریافت کند و دوباره فعال شود. ارائه دهنده یا از این کانال قطع شده است یا رمز فعال سازی کانال منقضی شده است و ارائه دهنده متصل نیست. برای برقراری مجدد ارتباط با یک ارائه دهنده، باید یک کانال جدید برای ارائه دهنده ایجاد کنید.

توکن فعال سازی یک توکن یکبار مصرف و با محدودیت زمانی است که برای ایجاد ارتباط بین ارائه دهنده و پروژه مشترک استفاده می شود. فقط یک ارائه دهنده خاص که در طول فرآیند ایجاد کانال انتخاب شده است می تواند از توکن استفاده کند. ژتون تا 24 ساعت پس از ایجاد کانال معتبر است. پس از 24 ساعت، کانال INACTIVE می شود.

جزئیات کانال را برای ارائه دهنده ارسال کنید

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

  • نام کانال (به عنوان مثال projects/project-id/locations/us-central1/channels/datadog-channel )
  • رمز فعال سازی (به عنوان مثال so5g4Kdasda7y2MSasdaGn8njB2 )

وارد Datadog شوید، به صفحه ادغام بروید و مطمئن شوید که Google Eventarc یکپارچه شده است:

9736bd517e1fa19a.png

در قسمت پیکربندی Google Eventarc، نام کامل کانال و کد فعال سازی را وارد کنید:

a17f522075cdd92e.png

اکنون باید کانال را در لیست کانال ها مشاهده کنید و پس از چند ثانیه، فعال شدن کانال را در Google Cloud Console نیز مشاهده کنید:

8399d528ccbd4c20.png

اکنون، شما آماده استفاده از کانال هستید!

5. یک گردش کار ایجاد کنید

برای دریافت رویدادها از ارائه دهنده، به یک مقصد در Google Cloud نیاز دارید. Eventarc از تعدادی مقصد رویداد مانند Cloud Run، Workflows، خدمات Kubernetes پشتیبانی می کند. در این مورد، یک گردش کار را برای ثبت رویدادهای دریافتی به سادگی اجرا کنید.

یک فایل workflow-datadog1.yaml با محتویات زیر ایجاد کنید:

main:
  params: [event]
  steps:
  - logStep:
      call: sys.log
      args:
        data: ${event}

توجه داشته باشید که گردش کار یک رویداد را به عنوان پارامتر دریافت می کند. این رویداد از پایش Datadog از طریق Eventarc خواهد بود. پس از دریافت رویداد، گردش کار به سادگی رویداد دریافت شده را ثبت می کند.

گسترش گردش کار:

WORKFLOW_NAME=workflow-datadog1
gcloud workflows deploy $WORKFLOW_NAME \
  --source workflow-datadog1.yaml \
  --location $REGION

گردش کار مستقر است اما هنوز اجرا نمی شود. هنگامی که هشدار Datadog دریافت می شود، توسط یک ماشه Eventarc اجرا می شود.

6. یک تریگر Eventarc ایجاد کنید

اکنون آماده هستید که رویدادها را از ارائه دهنده Datadog به Workflows با یک تریگر Eventarc متصل کنید.

پیکربندی حساب سرویس

هنگام ایجاد تریگر به یک حساب سرویس با نقش eventarc.eventReceiver نیاز دارید. می توانید یک حساب سرویس اختصاصی ایجاد کنید یا از حساب پیش فرض سرویس محاسباتی استفاده کنید.

برای سادگی، از حساب پیش فرض سرویس محاسباتی استفاده کنید و نقش eventarc.eventReceiver را اعطا کنید:

PROJECT_NUMBER=$(gcloud projects describe $PROJECT_ID --format='value(projectNumber)')

gcloud projects add-iam-policy-binding $PROJECT_ID \
    --member serviceAccount:$PROJECT_NUMBER-compute@developer.gserviceaccount.com \
    --role roles/eventarc.eventReceiver

یک ماشه ایجاد کنید

یک ماشه با کانال Datadog، نوع رویداد و همچنین مقصد گردش کار ایجاد کنید:

gcloud eventarc triggers create datadog-trigger1 \
  --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-trigger1
TYPE: datadog.v1.alert
DESTINATION: Workflows: workflow-datadog1
ACTIVE: Yes

7. یک مانیتور Datadog ایجاد کنید

اکنون یک مانیتور Datadog ایجاد کرده و آن را به Eventarc متصل خواهید کرد.

این یک مانیتور از نوع Hello World با مقادیر پیش فرض خواهد بود. شما به صورت دستی آن را برای ایجاد هشدارهای نظارتی فعال می کنید که به نوبه خود یک رویداد Eventarc در Google Cloud ایجاد می کند.

برای ایجاد مانیتور در Datadog، وارد Datadog شوید . ماوس را روی Monitors در منوی اصلی نگه دارید و در منوی فرعی روی New Monitor کلیک کنید. انواع مانیتورهای زیادی وجود دارد. نوع مانیتور Metric را انتخاب کنید.

در صفحه New Monitor ، پیش فرض های مراحل 1 و 2 را رها کنید.

  • در مرحله 3، Alert threshold را روی 1 تنظیم کنید
  • در مرحله 4، Test monitor for Eventarc به عنوان نام مانیتور تنظیم کنید و Notify your team روی @eventarc_<your-project-id>_<your-region>_<your-channel-name> تنظیم کنید.

صفحه مانیتور را برای مرحله بعدی که مانیتور را آزمایش می کنید باز نگه دارید.

8. مانیتور و ماشه را تست کنید

برای آزمایش مانیتور Datadog و ماشه Eventarc، مانیتور را به صورت دستی فعال می کنید.

در پایین صفحه ایجاد مانیتور، روی دکمه Test Notifications کلیک کنید:

32ccf1cc47b01150.png

سپس روی دکمه Run Test کلیک کنید:

7f2ff70ec673007b.png

این باید انتقال حالت را در مانیتور شبیه سازی کند و یک رویداد Eventarc را راه اندازی کند.

workflow-datadog1 بررسی کنید. باید ببینید که یک اجرای جدید وجود دارد:

adf7cd97ca2e8da7.png

جزئیات اجرا را بررسی کنید. باید نوع رویداد Datadog datadog.v1.alert تولید شده از هشدار نظارت را در ورودی گردش کار و همچنین در گزارش‌ها مشاهده کنید:

dc78fd8460e5fc0e.png

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

تبریک می گویم، شما نرم افزار کد را تمام کردید! برای یادگیری نحوه پاسخگویی به هشدارهای مانیتورینگ Datadog با Workflows، می‌توانید به کد دوم بروید.

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

  • چگونه ارائه دهنده Datadog را کشف کنیم.
  • نحوه راه اندازی یک کانال برای ارائه دهنده Datadog.
  • نحوه ایجاد یک گردش کار برای ثبت رویدادها
  • نحوه ایجاد تریگر Eventarc با کانال.
  • نحوه ایجاد مانیتور Datadog
  • نحوه تست مانیتور Datadog، تریگر Eventarc و گردش کار.