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

۱. مقدمه

cb762f29e9183a3f.png3c7ca8629bc25d9c.png

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

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

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

آنچه یاد خواهید گرفت

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

۲. تنظیمات و الزامات

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

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

b35bf95b8bf3d5d8.png

a99b7ace416376c4.png

bd84a6d3004737c5.png

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

شروع پوسته ابری

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

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

55efc1aaa7a4d3ad.png

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

7ffe5cbb04455448.png

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

جی کلود را تنظیم کنید

در 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 \
  eventarc.googleapis.com \
  eventarcpublishing.googleapis.com \
  workflows.googleapis.com \
  workflowexecutions.googleapis.com

۳. ارائه دهنده 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

۴. یک کانال راه‌اندازی کنید

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

ایجاد کانال

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

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

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

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'

به طور مشابه، می‌توانید کانال را از کنسول ابری گوگل مشاهده کنید:

80d8b2b6a46cb4c5.png

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

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

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

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

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

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

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

9736bd517e1fa19a.png

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

a17f522075cd92e.png

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

8399d528ccbd4c20.png

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

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

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

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

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

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

گردش کار را مستقر کنید:

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

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

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

اکنون آماده‌اید تا رویدادها را از ارائه‌دهنده Datadog به Workflows با یک trigger 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

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

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

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

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

در صفحه New Monitor ، مقادیر پیش‌فرض را برای مراحل ۱ و ۲ رها کنید.

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

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

۸. مانیتور و تریگر را آزمایش کنید

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

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

32ccf1cc47b01150.png

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

7f2ff70ec673007b.png

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

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

adf7cd97ca2e8da7.png

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

dc78fd8460e5fc0e.png

۹. تبریک

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

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

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