กำหนดเส้นทางการแจ้งเตือนการตรวจสอบ Datadog ไปยัง Google Cloud ด้วย Eventarc (ส่วนที่ 2)
เกี่ยวกับ Codelab นี้
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