กำหนดเส้นทางการแจ้งเตือนการตรวจสอบ 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 ของระบบคลาวด์ การใช้งาน Codelab นี้น่าจะไม่มีค่าใช้จ่ายใดๆ หากมี หากต้องการปิดทรัพยากรเพื่อไม่ให้มีการเรียกเก็บเงินนอกเหนือจากบทแนะนำนี้ คุณสามารถลบทรัพยากรที่คุณสร้างหรือลบทั้งโปรเจ็กต์ได้ ผู้ใช้ใหม่ของ Google Cloud จะมีสิทธิ์เข้าร่วมโปรแกรมทดลองใช้ฟรี$300 USD

เริ่มต้น Cloud Shell

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

จากคอนโซล Google Cloud ให้คลิกไอคอน 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 ได้โดยทำดังนี้

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

ตอนนี้คุณควรเห็นช่องทางนั้นในรายการช่องทาง และหลังจากนั้น 2-3 วินาที ก็คุณจะเห็นช่องทางนั้นเริ่มทํางานใน Google Cloud Console ด้วย

8399d528ccbd4c20.png

ตอนนี้คุณก็พร้อมใช้ช่องแล้ว

5. สร้างเวิร์กโฟลว์

คุณต้องมีปลายทางใน Google Cloud เพื่อรับเหตุการณ์จากผู้ให้บริการ Eventarc รองรับปลายทางเหตุการณ์จำนวนหนึ่ง เช่น Cloud Run, เวิร์กโฟลว์ และบริการ 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 ก็ได้

เพื่อความง่าย ให้ใช้บัญชีบริการประมวลผลเริ่มต้นและมอบบทบาท 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 จบแล้ว คุณสามารถไปที่ Codelab ที่ 2 เพื่อดูวิธีตอบสนองต่อการแจ้งเตือนการตรวจสอบของ Datadog ด้วย Workflows

สรุปประเด็นที่ได้พูดถึง

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