1. บทนำ

Eventarc ช่วยให้เชื่อมต่อบริการของ Google Cloud กับเหตุการณ์จากแหล่งที่มาต่างๆ ได้ง่าย ซึ่งช่วยให้คุณสร้างสถาปัตยกรรมที่ขับเคลื่อนด้วยเหตุการณ์ซึ่ง Microservice มีการเชื่อมต่อแบบหลวมๆ และกระจายอยู่ นอกจากนี้ยังจัดการการส่งผ่านข้อมูลเหตุการณ์ การนำส่ง ความปลอดภัย การให้สิทธิ์ และการจัดการข้อผิดพลาดให้คุณ ซึ่งจะช่วยเพิ่มความคล่องตัวของนักพัฒนาแอปและความยืดหยุ่นของแอปพลิเคชัน
Datadog เป็นแพลตฟอร์มการตรวจสอบและความปลอดภัยสำหรับแอปพลิเคชันระบบคลาวด์ โดยจะรวบรวมการติดตาม เมตริก และบันทึกแบบครบวงจรเพื่อให้แอปพลิเคชัน โครงสร้างพื้นฐาน และบริการของบุคคลที่สามสามารถสังเกตได้
เวิร์กโฟลว์คือแพลตฟอร์มการจัดกลุ่มที่มีการจัดการครบวงจรซึ่งเรียกใช้บริการตามลำดับที่คุณกำหนดที่เรียกว่าเวิร์กโฟลว์ เวิร์กโฟลว์เหล่านี้สามารถรวมบริการที่โฮสต์ใน Cloud Run หรือ Cloud Functions, บริการของ Google Cloud เช่น Cloud Vision AI และ BigQuery รวมถึง API ที่อิงตาม HTTP
ใน Codelab แรก คุณได้เรียนรู้วิธีกำหนดเส้นทางการแจ้งเตือนการตรวจสอบ Datadog ไปยัง Google Cloud ด้วย Eventarc ในโค้ดแล็บที่ 2 นี้ คุณจะได้เรียนรู้วิธีตอบสนองต่อการแจ้งเตือนการตรวจสอบ Datadog ด้วยเวิร์กโฟลว์ กล่าวโดยละเอียดคือ คุณจะสร้างเครื่องเสมือน Compute Engine 2 เครื่องและตรวจสอบด้วยมอนิเตอร์ Datadog เมื่อลบ VM 1 รายการแล้ว คุณจะได้รับการแจ้งเตือนจาก Datadog ไปยังเวิร์กโฟลว์ผ่าน Eventarc จากนั้นเวิร์กโฟลว์จะสร้าง VM ที่ลบไปแล้วขึ้นมาใหม่เพื่อให้จำนวน VM ที่ทำงานกลับมาเป็น 2
สิ่งที่คุณจะได้เรียนรู้
- วิธีเปิดใช้การผสานรวม Google Cloud ของ Datadog
- วิธีสร้างเวิร์กโฟลว์เพื่อตรวจสอบและสร้าง VM ของ Compute Engine
- วิธีเชื่อมต่อการแจ้งเตือนการตรวจสอบ Datadog กับเวิร์กโฟลว์ด้วย Eventarc
- วิธีสร้างการตรวจสอบ Datadog และการแจ้งเตือนเมื่อมีการลบ VM
2. การตั้งค่าและข้อกำหนด
การตั้งค่าสภาพแวดล้อมแบบเรียนรู้ด้วยตนเอง
- ลงชื่อเข้าใช้ Google Cloud Console แล้วสร้างโปรเจ็กต์ใหม่หรือใช้โปรเจ็กต์ที่มีอยู่ซ้ำ หากยังไม่มีบัญชี Gmail หรือ Google Workspace คุณต้องสร้างบัญชี



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

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

เครื่องเสมือนนี้มาพร้อมเครื่องมือพัฒนาซอฟต์แวร์ทั้งหมดที่คุณต้องการ โดยมีไดเรกทอรีหลักแบบถาวรขนาด 5 GB และทำงานบน Google Cloud ซึ่งช่วยเพิ่มประสิทธิภาพเครือข่ายและการตรวจสอบสิทธิ์ได้อย่างมาก คุณสามารถทำงานทั้งหมดในห้องทดลองนี้ได้โดยใช้เพียงเบราว์เซอร์
ตั้งค่า 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 \ workflows.googleapis.com \ workflowexecutions.googleapis.com
3. ยืนยันช่อง Datadog
ตรวจสอบว่าช่อง Datadog ที่คุณสร้างใน Codelab แรกใช้งานอยู่ ใน 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 ได้ด้วย โดยทำดังนี้

สถานะของช่องควรเป็น ACTIVE หากยังไม่ได้สร้าง ให้กลับไปที่ Codelab แรกและทำตามขั้นตอนเพื่อสร้างและเปิดใช้งานช่องกับ 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"
เปิดใช้บัญชีบริการ Datadog เพื่อรวบรวมเมตริก แท็ก เหตุการณ์ และป้ายกำกับผู้ใช้โดยให้บทบาท IAM ต่อไปนี้
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 ป้อน key.json ในช่อง File path หากต้องการดาวน์โหลดไฟล์คีย์ ให้คลิก Download
เชื่อมต่อบัญชีบริการกับ Datadog
ในบัญชี Datadog ให้ไปที่ส่วน Integrations แล้วค้นหากระเบื้องการผสานรวม Google Cloud

วางเมาส์เหนือ Google Cloud Platform เพื่อไปที่หน้า Install

ติดตั้งการผสานรวมโดยอัปโหลดคีย์บัญชีบริการในส่วน Upload Private Key File แล้วคลิก Install Integration

หลังจากทำการผสานรวมเสร็จแล้ว Datadog จะสร้างแดชบอร์ดที่เกี่ยวข้องกับ Google Cloud จำนวนหนึ่งโดยอัตโนมัติในส่วน Dashboards:

5. สร้าง VM ของ Compute Engine
จากนั้นสร้างเครื่องเสมือน (VM) ของ Compute Engine คุณจะตรวจสอบ VM เหล่านี้ด้วยการตรวจสอบ Datadog และตอบกลับการแจ้งเตือน Datadog ด้วยเวิร์กโฟลว์ใน Google Cloud
สร้าง VM ของ Compute Engine 2 รายการโดยทำดังนี้
gcloud compute instances create instance-1 instance-2 --zone us-central1-a
คุณควรเห็น VM ที่สร้างและทำงานใน Cloud Console ภายใน 1 นาที หลังจากผ่านไประยะหนึ่ง (โดยปกติคือ 10 นาที) คุณควรเห็น VM เหล่านี้ใน Datadog ในGoogle Compute Engineแดชบอร์ดในส่วนDashboardsด้วย

6. สร้างเวิร์กโฟลว์
ตอนนี้คุณมี VM 2 รายการที่ทำงานอยู่แล้ว ให้สร้างเวิร์กโฟลว์ที่จะตอบสนองต่อการแจ้งเตือนจากมอนิเตอร์ Datadog เวิร์กโฟลว์มีความซับซ้อนได้ตามต้องการ แต่ในกรณีนี้ เวิร์กโฟลว์จะตรวจสอบจำนวนอินสแตนซ์ VM ที่กำลังทำงาน และหากจำนวนอินสแตนซ์ต่ำกว่า 2 เวิร์กโฟลว์จะสร้างอินสแตนซ์ VM ใหม่เพื่อให้แน่ใจว่ามี VM 2 รายการที่ทำงานอยู่ตลอดเวลา
สร้างไฟล์ 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
เวิร์กโฟลว์ได้รับการติดตั้งใช้งานแล้ว แต่ยังไม่ได้ทำงาน โดยจะเรียกใช้โดยทริกเกอร์ Eventarc เมื่อได้รับข้อความแจ้ง Datadog
7. สร้างทริกเกอร์ Eventarc
ตอนนี้คุณพร้อมที่จะเชื่อมต่อเหตุการณ์จากผู้ให้บริการ Datadog กับเวิร์กโฟลว์ด้วยทริกเกอร์ 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
โดยมอนิเตอร์จะตรวจสอบจำนวน VM ของ Compute Engine ที่ทำงานอยู่และแจ้งเตือนหากจำนวน VM ต่ำกว่า 2
หากต้องการสร้างการตรวจสอบใน Datadog ให้เข้าสู่ระบบ Datadog วางเมาส์เหนือ Monitors ในเมนูหลัก แล้วคลิก New Monitor ในเมนูย่อย จอภาพมีหลายประเภท เลือกMetricประเภทการตรวจสอบ
ในหน้า New Monitor ให้สร้างการตรวจสอบด้วยข้อมูลต่อไปนี้
- เลือกวิธีการตรวจหา
Threshold - กำหนดเมตริก:
gcp.gce.instance.is_runningจาก (ทุกที่)sum by(ทุกอย่าง) - ตั้งค่าเงื่อนไขการแจ้งเตือน
- ทริกเกอร์เมื่อเมตริก
belowเกณฑ์at least onceในช่วง5 minutesที่ผ่านมา - เกณฑ์การแจ้งเตือน:
< 2 - แจ้งให้ทีมของคุณทราบ:
@eventarc_<your-project-id>_<your-region>_<your-channel-name> - ชื่อการตรวจสอบตัวอย่าง:
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

เมื่อการตรวจสอบ Datadog แจ้งเตือน คุณควรเห็นการแจ้งเตือนนั้นไปที่เวิร์กโฟลว์ผ่าน Eventarc หากตรวจสอบบันทึกของเวิร์กโฟลว์ คุณจะเห็นว่าเวิร์กโฟลว์จะตรวจสอบเพื่อดูความแตกต่างระหว่างจำนวนอินสแตนซ์ปัจจุบันกับจำนวนอินสแตนซ์ที่คาดไว้
2022-03-28 09:30:53.371 BST instanceCount->1 diffInstanceCount->1
โดยจะตอบสนองต่อการแจ้งเตือนนั้นด้วยการสร้างอินสแตนซ์ VM ใหม่ที่มีคำนำหน้า datadog-instance-##
สุดท้ายแล้ว คุณจะยังมี VM 2 รายการในโปรเจ็กต์ ซึ่งก็คือ VM ที่คุณสร้างขึ้นในตอนแรกและ VM ที่เวิร์กโฟลว์สร้างขึ้นหลังจากที่ได้รับการแจ้งเตือนจาก Datadog

10. ขอแสดงความยินดี
ยินดีด้วย คุณทำ Codelab เสร็จแล้ว
สิ่งที่เราได้พูดถึงไปแล้ว
- วิธีเปิดใช้การผสานรวม Google Cloud ของ Datadog
- วิธีสร้างเวิร์กโฟลว์เพื่อตรวจสอบและสร้าง VM ของ Compute Engine
- วิธีเชื่อมต่อการแจ้งเตือนการตรวจสอบ Datadog กับเวิร์กโฟลว์ด้วย Eventarc
- วิธีสร้างการตรวจสอบ Datadog และการแจ้งเตือนเมื่อมีการลบ VM