กำหนดเส้นทางการแจ้งเตือนการตรวจสอบ Datadog ไปยัง Google Cloud ด้วย Eventarc (ส่วนที่ 1)

1. บทนำ

cb762f29e9183a3f.png 3c7ca8629bc25d9c.png

Eventarc ช่วยให้เชื่อมต่อบริการของ Google Cloud กับเหตุการณ์จากแหล่งที่มาต่างๆ ได้ง่าย ซึ่งช่วยให้คุณสร้างสถาปัตยกรรมที่ขับเคลื่อนด้วยเหตุการณ์ซึ่ง Microservice มีการเชื่อมต่อแบบหลวมๆ และกระจายอยู่ นอกจากนี้ยังจัดการการส่งผ่านข้อมูลเหตุการณ์ การนำส่ง ความปลอดภัย การให้สิทธิ์ และการจัดการข้อผิดพลาดให้คุณ ซึ่งจะช่วยเพิ่มความคล่องตัวของนักพัฒนาแอปและความยืดหยุ่นของแอปพลิเคชัน

Datadog เป็นแพลตฟอร์มการตรวจสอบและความปลอดภัยสำหรับแอปพลิเคชันระบบคลาวด์ โดยจะรวบรวมการติดตาม เมตริก และบันทึกแบบครบวงจรเพื่อให้แอปพลิเคชัน โครงสร้างพื้นฐาน และบริการของบุคคลที่สามสามารถสังเกตได้

ใน Codelab แรกนี้ คุณจะได้เรียนรู้วิธีกำหนดเส้นทางการแจ้งเตือนการตรวจสอบ Datadog อย่างง่ายไปยัง Google Cloud ด้วย Eventarc

สิ่งที่คุณจะได้เรียนรู้

  • วิธีค้นหาผู้ให้บริการ Datadog
  • วิธีตั้งค่าแชแนลไปยังผู้ให้บริการ Datadog
  • วิธีสร้างเวิร์กโฟลว์เพื่อบันทึกเหตุการณ์
  • วิธีสร้างทริกเกอร์ Eventarc ด้วยแชแนล
  • วิธีสร้างการตรวจสอบ Datadog
  • วิธีทดสอบการตรวจสอบ Datadog, ทริกเกอร์ Eventarc และเวิร์กโฟลว์

2. การตั้งค่าและข้อกำหนด

การตั้งค่าสภาพแวดล้อมแบบเรียนรู้ด้วยตนเอง

  1. ลงชื่อเข้าใช้ Google Cloud Console แล้วสร้างโปรเจ็กต์ใหม่หรือใช้โปรเจ็กต์ที่มีอยู่ซ้ำ หากยังไม่มีบัญชี Gmail หรือ Google Workspace คุณต้องสร้างบัญชี

b35bf95b8bf3d5d8.png

a99b7ace416376c4.png

bd84a6d3004737c5.png

  • ชื่อโปรเจ็กต์คือชื่อที่แสดงสำหรับผู้เข้าร่วมโปรเจ็กต์นี้ ซึ่งเป็นสตริงอักขระที่ Google APIs ไม่ได้ใช้ โดยคุณจะอัปเดตได้ทุกเมื่อ
  • รหัสโปรเจ็กต์ต้องไม่ซ้ำกันในโปรเจ็กต์ Google Cloud ทั้งหมดและเปลี่ยนแปลงไม่ได้ (เปลี่ยนไม่ได้หลังจากตั้งค่าแล้ว) Cloud Console จะสร้างสตริงที่ไม่ซ้ำกันโดยอัตโนมัติ ซึ่งโดยปกติแล้วคุณไม่จำเป็นต้องสนใจว่าสตริงนั้นคืออะไร ใน Codelab ส่วนใหญ่ คุณจะต้องอ้างอิงรหัสโปรเจ็กต์ (โดยปกติจะระบุเป็น PROJECT_ID) หากไม่ชอบรหัสที่สร้างขึ้น คุณก็สร้างรหัสแบบสุ่มอีกรหัสหนึ่งได้ หรือคุณจะลองใช้ชื่อของคุณเองเพื่อดูว่าพร้อมใช้งานหรือไม่ก็ได้ คุณจะเปลี่ยนแปลงรหัสนี้หลังจากขั้นตอนนี้ไม่ได้ และรหัสจะยังคงอยู่ตลอดระยะเวลาของโปรเจ็กต์
  • โปรดทราบว่ายังมีค่าที่ 3 ซึ่งคือหมายเลขโปรเจ็กต์ที่ API บางตัวใช้ ดูข้อมูลเพิ่มเติมเกี่ยวกับค่าทั้ง 3 นี้ได้ในเอกสารประกอบ
  1. จากนั้นคุณจะต้องเปิดใช้การเรียกเก็บเงินใน Cloud Console เพื่อใช้ทรัพยากร/API ของ Cloud การทำตาม Codelab นี้ไม่ควรมีค่าใช้จ่ายมากนัก หรืออาจไม่มีเลย หากต้องการปิดทรัพยากรเพื่อไม่ให้มีการเรียกเก็บเงินนอกเหนือจากบทแนะนำนี้ คุณสามารถลบทรัพยากรที่สร้างขึ้นหรือลบทั้งโปรเจ็กต์ได้ ผู้ใช้ Google Cloud รายใหม่มีสิทธิ์เข้าร่วมโปรแกรมช่วงทดลองใช้ฟรีมูลค่า$300 USD

เริ่มต้น Cloud Shell

แม้ว่าคุณจะใช้งาน Google Cloud จากระยะไกลจากแล็ปท็อปได้ แต่ใน Codelab นี้คุณจะใช้ Google Cloud Shell ซึ่งเป็นสภาพแวดล้อมบรรทัดคำสั่งที่ทำงานในระบบคลาวด์

จาก Google Cloud Console ให้คลิกไอคอน Cloud Shell ในแถบเครื่องมือด้านขวาบน

55efc1aaa7a4d3ad.png

การจัดสรรและเชื่อมต่อกับสภาพแวดล้อมจะใช้เวลาเพียงไม่กี่นาที เมื่อเสร็จแล้ว คุณควรเห็นข้อความคล้ายกับตัวอย่างต่อไปนี้

7ffe5cbb04455448.png

เครื่องเสมือนนี้มาพร้อมเครื่องมือพัฒนาซอฟต์แวร์ทั้งหมดที่คุณต้องการ โดยมีไดเรกทอรีหลักแบบถาวรขนาด 5 GB และทำงานบน Google Cloud ซึ่งช่วยเพิ่มประสิทธิภาพเครือข่ายและการตรวจสอบสิทธิ์ได้อย่างมาก คุณสามารถทำงานทั้งหมดใน Codelab นี้ได้ภายในเบราว์เซอร์ คุณไม่จำเป็นต้องติดตั้งอะไร

ตั้งค่า gcloud

ใน 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

3. ค้นหาผู้ให้บริการ Datadog

ผู้ให้บริการ Eventarc คือบริการหรือเอนทิตีที่สามารถส่งเหตุการณ์ไปยัง Google Cloud ได้โดยตรง จากนั้นระบบจะกำหนดเส้นทางไปยังโปรเจ็กต์ของคุณ ผู้ให้บริการบุคคลที่สาม เช่น Datadog คือผู้ให้บริการที่ไม่ใช่ Google Cloud ซึ่งผสานรวมกับ Google Cloud ผ่าน Eventarc

ใน 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. ตั้งค่าช่อง

คุณต้องตั้งค่าช่องเพื่อผสานรวมโปรเจ็กต์กับผู้ให้บริการ ซึ่งเกี่ยวข้องกับการสร้างช่อง การดึงรายละเอียดช่อง และการส่งรายละเอียดเหล่านั้นไปยังผู้ให้บริการ เมื่อผู้ให้บริการเริ่มต้นการเชื่อมต่อกับช่องแล้ว ผู้ให้บริการจะเริ่มส่งเหตุการณ์ไปยังโปรเจ็กต์ของคุณได้

สร้างช่อง

คุณสร้างแชแนลสำหรับผู้ให้บริการ Datadog ได้โดยใช้ gcloud ดังนี้

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

เวิร์กโฟลว์ได้รับการติดตั้งใช้งานแล้ว แต่ยังไม่ได้ทำงาน โดยจะเรียกใช้โดยทริกเกอร์ Eventarc เมื่อได้รับข้อความแจ้ง Datadog

6. สร้างทริกเกอร์ Eventarc

ตอนนี้คุณพร้อมที่จะเชื่อมต่อเหตุการณ์จากผู้ให้บริการ Datadog กับเวิร์กโฟลว์ด้วยทริกเกอร์ Eventarc แล้ว

กำหนดค่าบัญชีบริการ

คุณต้องมีบัญชีบริการที่มีบทบาท eventarc.eventReceiver เมื่อสร้างทริกเกอร์ คุณจะสร้างบัญชีบริการเฉพาะหรือใช้บัญชีบริการ Compute เริ่มต้นก็ได้

เพื่อความสะดวก ให้ใช้บัญชีบริการ Compute เริ่มต้นและมอบบทบาท 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. ขอแสดงความยินดี

ยินดีด้วย คุณทำ Codelab เสร็จแล้ว คุณสามารถไปที่โค้ดแล็บที่ 2 เพื่อดูวิธีตอบสนองต่อการแจ้งเตือนการตรวจสอบของ Datadog ด้วยเวิร์กโฟลว์

สิ่งที่เราได้พูดถึงไปแล้ว

  • วิธีค้นหาผู้ให้บริการ Datadog
  • วิธีตั้งค่าแชแนลไปยังผู้ให้บริการ Datadog
  • วิธีสร้างเวิร์กโฟลว์เพื่อบันทึกเหตุการณ์
  • วิธีสร้างทริกเกอร์ Eventarc ด้วยแชแนล
  • วิธีสร้างการตรวจสอบ Datadog
  • วิธีทดสอบการตรวจสอบ Datadog, ทริกเกอร์ Eventarc และเวิร์กโฟลว์