1. บทนำ
อัปเดตล่าสุดวันที่ 21 มิ.ย. 2023
การแจ้งเตือนข้อผิดพลาดตามบันทึกสำหรับความพร้อมใช้งาน
การแจ้งเตือนตามบันทึกสามารถใช้เพื่อระบุความพร้อมใช้งานของแอปพลิเคชันโดยการตรวจสอบเหตุการณ์หรือรูปแบบที่ระบุในบันทึก* การได้รับการแจ้งเตือนเกี่ยวกับการหยุดทำงานหรือปัญหาอื่นๆ ที่ผู้ใช้เห็นจะช่วยให้คุณดำเนินการเพื่อลดผลกระทบต่อผู้ใช้และลูกค้าของคุณให้เหลือน้อยที่สุดได้
แม้ว่าการตรวจสอบระยะเวลาทำงานจะให้ภาพรวมทั่วไปเกี่ยวกับความพร้อมใช้งาน แต่การใช้ข้อความแสดงข้อผิดพลาดที่ได้จากบันทึกเป็นตัวบ่งชี้ประเภทความไม่พร้อมใช้งานที่เฉพาะเจาะจงยิ่งขึ้น และเพื่อให้ทราบสัดส่วนของผู้ใช้ที่พบปัญหาอาจแม่นยำกว่า
ข้อผิดพลาดสามารถเกิดขึ้นได้จากหลายสาเหตุ ตั้งแต่ข้อผิดพลาดของผู้ใช้ไปจนถึงการบำรุงรักษาระบบ การอัปเกรด หรือแม้แต่ปัจจัยภายนอกระบบ เช่น สภาพอากาศที่ไม่ดี สิ่งสำคัญในการแจ้งเตือนไม่ใช่การพยายามคาดการณ์สาเหตุที่เป็นไปได้ทั้งหมด แต่ต้องเลือกอาการหลักๆ ที่เป็นจุดเริ่มต้นสำหรับการแก้ปัญหา
หัวข้อ Pub/Sub ในฐานะช่องทางการแจ้งเตือน
หัวข้อ Pub/Sub สามารถใช้เป็นช่องทางการแจ้งเตือนของ Google Cloud Monitoring เพื่อส่งการแจ้งเตือนไปยังการสมัครใช้บริการ Pub/Sub วิธีนี้ช่วยให้คุณผสานรวมการแจ้งเตือน Cloud Monitoring กับระบบอื่นๆ รวมถึงบริการการแจ้งเตือนของบุคคลที่สามได้
หากต้องการใช้หัวข้อ Pub/Sub เป็นช่องทางการแจ้งเตือน ก่อนอื่นคุณต้องสร้างหัวข้อ Pub/Sub และการสมัครใช้บริการ Pub/Sub จากนั้น คุณต้องสร้างช่องทางการแจ้งเตือนของ Cloud Monitoring ที่ใช้หัวข้อ Pub/Sub เป็นปลายทาง
เมื่อมีการทริกเกอร์การแจ้งเตือน Cloud Monitoring จะส่งข้อความไปยังหัวข้อ Pub/Sub จากนั้น ผู้สมัครใช้บริการ Pub/Sub จะประมวลผลข้อความและดำเนินการตามความเหมาะสมได้
สิ่งที่คุณจะสร้าง
ใน Codelab นี้ คุณจะทำให้แอปใช้งานได้ สร้างหัวข้อ Pub/Sub และสร้างการแจ้งเตือนตามบันทึกที่จะตรวจสอบข้อผิดพลาดในส่วนที่เจาะจงของแอป และใช้หัวข้อ Pub/Sub เป็นช่องทางการแจ้งเตือน
สิ่งที่คุณจะได้เรียนรู้
- วิธีสร้างหัวข้อ Pub/Sub
- วิธีสร้างการแจ้งเตือนที่อิงตามบันทึก
Codelab นี้มุ่งเน้นไปที่การสร้างการแจ้งเตือนข้อผิดพลาด แนวคิดและโค้ดแอปพลิเคชันที่ไม่เกี่ยวข้องจะปกปิดไว้ และมีไว้เพื่อให้คุณคัดลอกและวางเท่านั้น
สิ่งที่คุณต้องมี
- บัญชี Google Cloud ที่มีสิทธิ์ในการดำเนินการต่อไปนี้
- ทำให้แอปพลิเคชัน Cloud Run ใช้งานได้
- สร้างหัวข้อ Pub/Sub
- สร้างการแจ้งเตือน
2. การตั้งค่า
เลือกหรือสร้างโปรเจ็กต์ Google Cloud
หากต้องการเลือกโปรเจ็กต์ที่มีอยู่ ให้ใช้เมนูแบบเลื่อนลงดังนี้
หากต้องการสร้างโปรเจ็กต์ใหม่ใน Google Cloud ให้ทำตามขั้นตอนต่อไปนี้
- ไปที่คอนโซล Google Cloud Platform
- คลิกปุ่มสร้างโปรเจ็กต์
- ป้อนชื่อโครงการ
- เลือกบัญชีสำหรับการเรียกเก็บเงินสำหรับโปรเจ็กต์
- คลิกที่ปุ่มสร้าง
ระบบจะสร้างโปรเจ็กต์ขึ้นและระบบจะนำคุณไปยังแดชบอร์ดโปรเจ็กต์ จากนั้นคุณจะเริ่มใช้บริการต่างๆ ของ Google Cloud ได้
ต่อไปนี้คือรายละเอียดเพิ่มเติมบางส่วนเกี่ยวกับแต่ละขั้นตอน
- ชื่อ: ชื่อโปรเจ็กต์ต้องไม่ซ้ำกันภายในองค์กร
- บัญชีสำหรับการเรียกเก็บเงิน: คุณจะใช้บัญชีสำหรับการเรียกเก็บเงินที่มีอยู่หรือสร้างบัญชีใหม่ก็ได้
- สร้าง: เมื่อป้อนข้อมูลที่จำเป็นทั้งหมดแล้ว ให้คลิกปุ่มสร้างเพื่อสร้างโครงการ
โปรดดูข้อมูลเพิ่มเติมในเอกสารประกอบเกี่ยวกับการสร้างโปรเจ็กต์ของ Google Cloud
3. ทำให้แอปพลิเคชัน API ใช้งานได้
แอปพลิเคชันหรือ API ตัวอย่างเกี่ยวกับอะไร
แอปพลิเคชันของเราเป็นแอปพลิเคชัน Inventory API แบบง่ายๆ ที่แสดงปลายทาง REST API พร้อมด้วยการดำเนินการ 2 รายการเพื่อแสดงรายการสินค้าคงคลังและนับจำนวนสินค้าคงคลังของสินค้าที่เฉพาะเจาะจง
เมื่อเราทำให้ API ใช้งานได้และสมมติว่า API โฮสต์อยู่ที่ https://<somehost> เราสามารถเข้าถึงปลายทาง API ได้ดังนี้
https://<somehost>/inventory
ซึ่งจะแสดงรายการผลิตภัณฑ์ทั้งหมดตามระดับสินค้าคงคลังที่มี
https://<somehost>/inventory/{productid}
การดำเนินการนี้จะเป็นเพียงบันทึกเดียวพร้อมด้วยรหัสผลิตภัณฑ์และระดับสินค้าคงคลังที่มีอยู่สำหรับผลิตภัณฑ์นั้น
ข้อมูลการตอบกลับที่แสดงจะเป็นรูปแบบ JSON
หมายเหตุ: แอปพลิเคชัน API นี้ใช้สำหรับการสาธิตเท่านั้น และไม่ได้แสดงถึงการใช้งาน API ที่ปลอดภัยและมีประสิทธิภาพ จุดประสงค์ของห้องทดลองคือการดำเนินการของ Google Cloud เพื่อให้เรามีแอปพลิเคชันที่พร้อมใช้งานได้อย่างรวดเร็ว
ข้อมูลตัวอย่างและคำขอ/การตอบกลับ API
แอปพลิเคชันไม่ได้ขับเคลื่อนโดยฐานข้อมูลที่แบ็กเอนด์เพื่อทำให้สิ่งต่างๆ ง่ายขึ้น ซึ่งมีรหัสผลิตภัณฑ์ตัวอย่าง 3 รหัสและระดับสินค้าคงคลังที่มีขาย
รหัสผลิตภัณฑ์ | ระดับสินค้าคงคลังในมือ |
I-1 | 10 |
I-2 | 20 |
I-3 | 30 |
ตัวอย่างคำขอและการตอบกลับ API แสดงอยู่ด้านล่าง
คำขอ API | การตอบกลับจาก API |
https://<somehost>/inventory | [ { "I-1": 10, "I-2": 20, "I-3": 30 }] |
https://<somehost>/inventory/I-1 | { "productid": "I-1", "qty": 10} |
https://<somehost>/inventory/I-2 | { "productid": "I-2", "qty": 20} |
https://<somehost>/inventory/I-200 | { "productid": I-200, "qty": -1} |
โคลนที่เก็บ
แม้ว่าคุณจะดำเนินการ Google Cloud จากระยะไกลได้จากแล็ปท็อป แต่คุณจะใช้ Google Cloud Shell ซึ่งเป็นสภาพแวดล้อมแบบบรรทัดคำสั่งที่ทำงานในระบบคลาวด์ใน Codelab นี้
จากคอนโซล GCP ให้คลิกไอคอน Cloud Shell บนแถบเครื่องมือด้านขวาบนดังนี้
การจัดสรรและเชื่อมต่อกับสภาพแวดล้อมนี้ควรใช้เวลาเพียงครู่เดียว เมื่อเสร็จแล้ว คุณจะเห็นข้อมูลต่อไปนี้
เครื่องเสมือนนี้เต็มไปด้วยเครื่องมือการพัฒนาทั้งหมดที่คุณต้องการ โดยมีไดเรกทอรีหลักขนาด 5 GB ที่ใช้งานได้ต่อเนื่องและทำงานบน Google Cloud ซึ่งช่วยเพิ่มประสิทธิภาพของเครือข่ายและการตรวจสอบสิทธิ์ได้อย่างมาก งานทั้งหมดในห้องทดลองนี้สามารถทำได้โดยใช้เบราว์เซอร์
ตั้งค่า gcloud
ใน Cloud Shell ให้กำหนดรหัสโปรเจ็กต์และบันทึกเป็นตัวแปรของ PROJECT_ID
PROJECT_ID=[YOUR-PROJECT-ID]
gcloud
config
set
project
$PROJECT_ID
จากนั้นเรียกใช้คำสั่งต่อไปนี้
$
git
clone
https://github.com/rominirani/cloud-code-sample-repository.git
การดำเนินการนี้จะสร้างโฟลเดอร์ชื่อ cloud-code-sample-repository ในโฟลเดอร์นี้
(ไม่บังคับ) เรียกใช้แอปพลิเคชันบน Cloud Shell
คุณสามารถเรียกใช้แอปพลิเคชันในเครื่องได้โดยทำตามขั้นตอนต่อไปนี้
- จากเทอร์มินัล ให้ไปที่ API เวอร์ชัน Python โดยใช้คำสั่งต่อไปนี้
$
cd
cloud-code-sample-repository
$
cd
python-flask-api
- ป้อนคำสั่งต่อไปนี้ในเทอร์มินัล (ในขณะที่เขียน Cloud Shell จะมาพร้อมกับ Python 3.9.x ติดตั้งอยู่ และเราจะใช้เวอร์ชันเริ่มต้น หากวางแผนที่จะเรียกใช้ในเครื่องบนแล็ปท็อป คุณสามารถใช้ Python 3.8 ขึ้นไป) ดังนี้
$
python
app.py
- คุณเรียกใช้คำสั่งต่อไปนี้เพื่อเริ่มต้นเซิร์ฟเวอร์ Python ในเครื่องได้
คลิก "แสดงตัวอย่าง" บนพอร์ต 8080 5. หน้าต่างเบราว์เซอร์จะเปิดขึ้นมา คุณจะเห็นข้อผิดพลาด 404 ซึ่งไม่เป็นไร แก้ไข URL และเปลี่ยนให้มีแค่ /inventory หลังชื่อโฮสต์
เช่น ในเครื่องของฉันจะมีลักษณะดังนี้
https://8080-cs-557561579860-default.cs-asia-southeast1-yelo.cloudshell.dev/inventory
ซึ่งจะแสดงรายการสินค้าคงคลังตามที่อธิบายไว้ก่อนหน้านี้
- คุณสามารถหยุดเซิร์ฟเวอร์ได้ในขั้นตอนนี้ โดยไปที่เทอร์มินัลและกด Ctrl-C
ทำให้แอปพลิเคชันใช้งานได้
ตอนนี้เราจะทำให้แอปพลิเคชัน API นี้ใช้งานได้ใน Cloud Run กระบวนการที่เกี่ยวข้องกับการใช้ไคลเอ็นต์บรรทัดคำสั่ง gcloud เพื่อเรียกใช้คำสั่งเพื่อทำให้โค้ดใช้งานได้ใน Cloud Run
ระบุคำสั่ง gcloud ต่อไปนี้จากเทอร์มินัล
$ gcloud run deploy --source .
บทความนี้ถามคำถามหลายข้อและกล่าวถึงประเด็นต่อไปนี้
- ชื่อบริการ (python-flask-api): ใช้ชื่อค่าเริ่มต้นนี้หรือเลือกบางอย่าง เช่น my-inventory-api
- API [run.googleapis.com] ไม่ได้เปิดใช้ในโปรเจ็กต์ [613162942481] ต้องการเปิดใช้แล้วลองอีกครั้งไหม (ซึ่งจะใช้เวลาสักครู่) (ใช่/ไม่ใช่) Y
- โปรดระบุภูมิภาค: เลือก 31 (us-west-1)
- API [artifactregistry.googleapis.com] ในโปรเจ็กต์ [613162942481] ต้องการเปิดใช้แล้วลองอีกครั้งไหม (ซึ่งจะใช้เวลาสักครู่) (ใช่/ไม่ใช่) Y
- การทำให้ใช้งานได้จากต้นทางต้องใช้ที่เก็บ Artifact Registry Docker เพื่อจัดเก็บคอนเทนเนอร์ที่สร้างขึ้น ระบบจะสร้างที่เก็บชื่อ [cloud-run-source-deploy] ในภูมิภาค [us-west1]
- คุณต้องการดำเนินการต่อหรือไม่ (ใช่/ไม่ใช่) Y
- อนุญาตการเรียกใช้ที่ไม่ผ่านการตรวจสอบสิทธิ์แก่ [my-inventory-api] (y/N) ไหม Y
ท้ายที่สุดแล้ว การดำเนินการนี้จะเริ่มต้นกระบวนการนำซอร์สโค้ดของคุณ สร้างคอนเทนเนอร์ พุชไปยัง Artifact Registry จากนั้นจึงทำให้บริการ Cloud Run + การแก้ไขใช้งานได้ คุณควรอดใจรอตามกระบวนการนี้ (อาจใช้เวลา 3-4 นาที) และคุณจะเห็นการดำเนินการเสร็จสมบูรณ์แล้วพร้อมกับแสดง URL ของบริการที่ปรากฏ
ตัวอย่างการเรียกใช้จะแสดงที่ด้านล่างนี้
ทดสอบแอปพลิเคชัน
เมื่อเราทำให้แอปพลิเคชันใช้งานได้ใน Cloud Run แล้ว คุณจะเข้าถึงแอปพลิเคชัน API ได้ดังนี้
- จด URL ของบริการจากขั้นตอนก่อนหน้าไว้ เช่น รหัสจะแสดงเป็น
https://my-inventory-api-bt2r5243dq-uw.a.run.app
ในการตั้งค่า มาเรียกสิ่งนี้ว่า<SERVICE_URL>
- เปิดเบราว์เซอร์และเข้าถึง URL 3 รายการต่อไปนี้สำหรับปลายทาง API
<SERVICE_URL>/inventory
<SERVICE_URL>/inventory/I-1
<SERVICE_URL>/inventory/I-100
ซึ่งควรตรงกับข้อกำหนดที่เราได้แจ้งไว้ในส่วนก่อนหน้านี้ โดยมีตัวอย่างคำขอและการตอบกลับ API
รับรายละเอียดบริการจาก Cloud Run
เราทำให้บริการ API ใช้งานได้กับ Cloud Run ซึ่งเป็นสภาพแวดล้อมการประมวลผลแบบ Serverless เราไปที่บริการ Cloud Run ผ่านคอนโซล Google Cloud ได้ทุกเมื่อ
ไปที่ Cloud Run จากเมนูหลัก การดำเนินการนี้จะแสดงรายการบริการที่คุณใช้ใน Cloud Run คุณจะเห็นบริการที่เพิ่งทำให้ใช้งานได้ คุณควรจะเห็นข้อมูลแบบนี้ ทั้งนี้ขึ้นอยู่กับชื่อที่คุณเลือกไว้:
คลิกชื่อบริการเพื่อดูรายละเอียด รายละเอียดตัวอย่างแสดงอยู่ด้านล่าง
โปรดสังเกต URL ซึ่งไม่ใช่ URL ของบริการที่คุณสามารถเจาะเข้าไปในเบราว์เซอร์และเข้าถึง Inventory API ที่เราเพิ่งทำให้ใช้งานได้ ดูเมตริกและรายละเอียดอื่นๆ
มาเริ่มกันที่ Google Cloud Operations Suite เลย
4. สร้างหัวข้อ Pub/Sub เพื่อรับการแจ้งเตือน
หากต้องการสร้างหัวข้อ Pub/Sub โปรดทำตามขั้นตอนต่อไปนี้ใน Google Cloud Console
- ค้นหา Pub/Sub ในช่องค้นหา และไปที่ Pub/Sub
- หากคุณยังไม่ได้อยู่ที่แท็บนี้ ให้คลิกแท็บหัวข้อ
- คลิกปุ่มสร้างหัวข้อ
- ป้อนชื่อที่เป็นที่รู้จักสำหรับหัวข้อของคุณ
- คลิกปุ่มสร้าง
- คัดลอกชื่อหัวข้อโดยใช้ปุ่มไอคอนคัดลอก เนื่องจากคุณต้องใช้สำหรับส่วนถัดไป
5. สร้างนโยบายการแจ้งเตือนสำหรับข้อผิดพลาด
กำลังสำรวจบันทึกข้อผิดพลาด
วิธีดูบันทึกข้อผิดพลาดสำหรับแอปพลิเคชัน
คลิกแท็บการบันทึก
ซึ่งจะแสดงอินเทอร์เฟซบันทึกที่คุณสามารถเลือก/ยกเลิกการเลือกทรัพยากรต่างๆ โดยเฉพาะ (โปรเจ็กต์, ทรัพยากรของ Google Cloud, ชื่อบริการ ฯลฯ) รวมถึงระดับการบันทึกเพื่อกรองข้อความบันทึกได้ตามต้องการ
จำลองคำขอที่ไม่ถูกต้อง 2-3 รายการที่ส่งไปยังบริการสินค้าคงคลังโดยระบุรหัสผลิตภัณฑ์ที่ไม่ใช่หนึ่งใน I-1, I-2 และ I-3 เช่น คำขอที่ไม่ถูกต้อง
https://<SERVICE_URL>/inventory/I-999
ตอนนี้เราจะค้นหา WARNINGs ทั้งหมด ที่ API ของเราสร้างขึ้น เมื่อมีการระบุ ID ผลิตภัณฑ์ที่ไม่ถูกต้อง ในการค้นหา
การสร้างนโยบายการแจ้งเตือนตามบันทึกที่กำหนดเองสำหรับข้อผิดพลาด
สมมติว่าเราต้องการเฝ้าระวังข้อความแสดงข้อผิดพลาดที่เจาะจงมากสำหรับส่วนหนึ่งของแอปพลิเคชัน สมมติว่าเราสังเกตเห็นข้อผิดพลาดจำนวนมากในการค้นหารหัสผลิตภัณฑ์ ปัญหานี้เป็นอาการของหลายๆ ปัญหาที่อาจเกิดขึ้น (ลิงก์ไม่ถูกต้อง ฐานข้อมูลไม่สอดคล้องกัน หรือบ็อตที่แจกแจงเว็บไซต์ของเรา) แม้ว่าการคาดเดาสาเหตุที่เป็นไปได้ทั้งหมดอาจเป็นเรื่องยากหรือจะเป็นไปไม่ได้ แต่ใบสมัครที่ส่งข้อความนี้แม้แต่ครั้งเดียวก็เป็นปัญหาระดับสูงที่เราอยากทราบ ในการแจ้งเตือนเรื่องนี้ เราต้องสร้างนโยบายตามข้อมูลในบันทึกข้อผิดพลาดของเรา
- ในช่องข้อความค้นหา ให้แทรกพารามิเตอร์การค้นหาต่อไปนี้
resource.type="cloud_run_revision"
textPayload =~ "คำเตือนในแอป: ได้รับคำขอสินค้าคงคลังสำหรับรหัสผลิตภัณฑ์ที่ไม่ถูกต้อง"
ซึ่งควรมีหน้าตาเช่นนี้
- คลิกเรียกใช้การค้นหา จากนั้นจะแสดงคำขอทั้งหมดที่ส่งเข้ามาและที่มีปัญหานี้
- หากต้องการแปลงข้อมูลข้างต้นเป็นการแจ้งเตือน ให้คลิกปุ่มสร้างการแจ้งเตือนที่คุณเห็นในเครื่องมือสำรวจบันทึกใต้ช่องการค้นหาทางด้านขวา
- ซึ่งจะเป็นการเปิดแบบฟอร์มเพื่อสร้างนโยบายการแจ้งเตือนตามบันทึก
- ใช้การค้นหาเริ่มต้นสำหรับบันทึกเพื่อรวมไว้ในการแจ้งเตือน
resource.type="cloud_run_revision"
textPayload
=~
"WARNING
in
app:
Received
inventory
request
for
incorrect
productid"
- กำหนดความถี่ของการแจ้งเตือนและระยะเวลาของเหตุการณ์ ในตัวอย่างนี้ คุณสามารถใช้ค่าต่ำสุดสำหรับแต่ละสิ่งต่อไปนี้ได้
- สุดท้าย ส่วน "ใครควรได้รับการแจ้งเตือน" เลือกช่องทางการแจ้งเตือน Pub/Sub ที่คุณสร้างไว้ก่อนหน้านี้
- คลิกบันทึก หากต้องการดูและจัดการนโยบายการแจ้งเตือน ให้ไปที่หน้าการแจ้งเตือน และตรวจสอบภายใต้นโยบาย
6. ขอแสดงความยินดี
ขอแสดงความยินดี คุณได้กำหนดค่าการตรวจสอบระยะเวลาทำงานให้ส่งการแจ้งเตือนไปยัง Pub/Sub เรียบร้อยแล้ว