1. บทนำ
Eventarc ช่วยให้เชื่อมต่อบริการของ Google Cloud กับกิจกรรมจากแหล่งที่มาต่างๆ ได้อย่างง่ายดาย ซึ่งช่วยให้คุณสร้างสถาปัตยกรรมที่ขับเคลื่อนด้วยเหตุการณ์ซึ่งมีการเชื่อมต่อและกระจาย Microservice แบบหลวมๆ นอกจากนี้ยังดูแลการส่งผ่านข้อมูลของเหตุการณ์ การนำส่ง การรักษาความปลอดภัย การให้สิทธิ์ และการจัดการข้อผิดพลาดให้คุณด้วย ซึ่งจะช่วยเพิ่มความคล่องตัวให้กับนักพัฒนาซอฟต์แวร์และความยืดหยุ่นของแอปพลิเคชัน
Datadog เป็นแพลตฟอร์มการตรวจสอบและความปลอดภัยสำหรับแอปพลิเคชันระบบคลาวด์ โดยจะรวมการติดตาม เมตริก และบันทึกจากต้นทางถึงปลายทางเข้าด้วยกันเพื่อให้สังเกตแอปพลิเคชัน โครงสร้างพื้นฐาน และบริการของบุคคลที่สามได้
เวิร์กโฟลว์คือแพลตฟอร์มการจัดการเป็นกลุ่มที่มีการจัดการครบวงจร ซึ่งจะเรียกใช้บริการตามลำดับที่คุณกำหนด ซึ่งเรียกว่าเวิร์กโฟลว์ เวิร์กโฟลว์เหล่านี้สามารถรวมบริการที่โฮสต์บน Cloud Run หรือ Cloud Functions, บริการของ Google Cloud เช่น Cloud Vision AI และ BigQuery และ API แบบ HTTP ทั้งหมดเข้าด้วยกัน
คุณได้เรียนรู้วิธีกำหนดเส้นทางการแจ้งเตือนการตรวจสอบของ Datadog ไปยัง Google Cloud ด้วย Eventarc ใน Codelab แรกแล้ว ใน Codelab ที่สองนี้ คุณจะได้เรียนรู้วิธีตอบสนองต่อการแจ้งเตือนการตรวจสอบของ Datadog ด้วยเวิร์กโฟลว์ กล่าวอย่างเจาะจงก็คือ คุณจะสร้างเครื่องเสมือน Compute Engine 2 เครื่องและตรวจสอบเครื่องเสมือนด้วยจอภาพ Datadog เมื่อลบ VM รายการหนึ่งแล้ว คุณจะได้รับการแจ้งเตือนจาก 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 ของระบบคลาวด์ การใช้งาน Codelab นี้น่าจะไม่มีค่าใช้จ่ายใดๆ หากมี หากต้องการปิดทรัพยากรเพื่อไม่ให้มีการเรียกเก็บเงินนอกเหนือจากบทแนะนำนี้ ให้ทำตาม "การล้าง" ดูได้ที่ตอนท้ายของ Codelab ผู้ใช้ใหม่ของ Google Cloud จะมีสิทธิ์เข้าร่วมโปรแกรมทดลองใช้ฟรี$300 USD
เริ่มต้น Cloud Shell
แม้ว่าคุณจะดำเนินการ Google Cloud จากระยะไกลได้จากแล็ปท็อป แต่คุณจะใช้ Google Cloud Shell ซึ่งเป็นสภาพแวดล้อมแบบบรรทัดคำสั่งที่ทำงานในระบบคลาวด์ใน Codelab นี้
จากคอนโซล Google Cloud ให้คลิกไอคอน Cloud Shell ในแถบเครื่องมือด้านขวาบน ดังนี้
การจัดสรรและเชื่อมต่อกับสภาพแวดล้อมนี้ควรใช้เวลาเพียงครู่เดียว เมื่อเสร็จแล้ว คุณจะเห็นข้อมูลต่อไปนี้
เครื่องเสมือนนี้เต็มไปด้วยเครื่องมือการพัฒนาทั้งหมดที่คุณต้องการ โดยมีไดเรกทอรีหลักขนาด 5 GB ที่ใช้งานได้ต่อเนื่องและทำงานบน Google Cloud ซึ่งช่วยเพิ่มประสิทธิภาพของเครือข่ายและการตรวจสอบสิทธิ์ได้อย่างมาก งานทั้งหมดใน Lab นี้สามารถทำได้โดยใช้เบราว์เซอร์
ตั้งค่า 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 ได้ด้วย โดยทำดังนี้
สถานะช่องควรเป็น 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 แล้ว คุณจะใช้ช่องทางและบัญชีบริการที่ตั้งค่าไว้ใน Codelab แรก
สร้างทริกเกอร์ที่มีแชแนล 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. ทดสอบตรวจสอบและทริกเกอร์
คุณจะต้องลบ VM รายการหนึ่งออกในการทดสอบจอภาพ Datadog, Eventarc ทริกเกอร์ และเวิร์กโฟลว์ในที่สุด
gcloud compute instances delete instance-2 --zone us-central1-a
หลังจากผ่านไป 2-3 วินาที คุณจะเห็นอินสแตนซ์ที่ถูกลบใน Google Cloud Console
การเปลี่ยนแปลงนี้จะแสดงใน Datadog เล็กน้อย หลังจากผ่านไปสักครู่ (โดยปกติ 10 นาที) คุณควรเห็นหน้าจอใน Datadog เพื่อตรวจหาและแจ้งเตือนเรื่องนี้ในส่วน Manage Monitors
เมื่อการแจ้งเตือนการตรวจสอบ Datadog คุณจะเห็นการแจ้งเตือนนั้นไปที่ Workflows ผ่าน Eventarc หากคุณตรวจสอบบันทึกของเวิร์กโฟลว์ คุณควรเห็นว่าเวิร์กโฟลว์ตรวจสอบความแตกต่างระหว่างจำนวนอินสแตนซ์ปัจจุบันและจำนวนอินสแตนซ์ที่คาดไว้ ดังนี้
2022-03-28 09:30:53.371 BST instanceCount->1 diffInstanceCount->1
อินสแตนซ์จะตอบสนองต่อการแจ้งเตือนดังกล่าวด้วยการสร้างอินสแตนซ์ VM ใหม่ที่มีคำนำหน้า datadog-instance-##
เพราะสุดท้ายแล้ว คุณจะยังคงมี VM อีก 2 รายการในโปรเจ็กต์ โดยรายการหนึ่งสร้างขึ้นในตอนแรก และอีกรายการหนึ่งสร้างโดย Workflows หลังการแจ้งเตือน Datadog
10. ขอแสดงความยินดี
ยินดีด้วย คุณศึกษา Codelab จบแล้ว
สรุปประเด็นที่ได้พูดถึง
- วิธีเปิดใช้การผสานรวม Google Cloud ของ Datadog
- วิธีสร้างเวิร์กโฟลว์เพื่อตรวจสอบและสร้าง VM ของ Compute Engine
- วิธีเชื่อมต่อการแจ้งเตือนการตรวจสอบ Datadog กับเวิร์กโฟลว์ด้วย Eventarc
- วิธีสร้างการตรวจสอบและแจ้งเตือน Datadog เกี่ยวกับการลบ VM