1. บทนำ
ปรับปรุงล่าสุด: 21 มิ.ย. 2023
การแจ้งเตือนข้อผิดพลาดตามบันทึกเพื่อความพร้อมใช้งาน
การแจ้งเตือนตามบันทึกสามารถใช้เพื่อพิจารณาความพร้อมใช้งานของแอปพลิเคชันได้โดยการตรวจสอบเหตุการณ์หรือรูปแบบที่เฉพาะเจาะจงในบันทึก*.* การได้รับการแจ้งเตือนเกี่ยวกับปัญหาขัดข้องหรือปัญหาอื่นๆ ที่ผู้ใช้พบจะช่วยให้คุณดำเนินการเพื่อลดผลกระทบต่อผู้ใช้และลูกค้าได้
แม้ว่าการตรวจสอบเวลาทำงานจะให้ภาพรวมทั่วไปของความพร้อมใช้งาน แต่การใช้ข้อความแสดงข้อผิดพลาดที่ได้จากบันทึกเป็นตัวบ่งชี้ประเภทความไม่พร้อมใช้งานที่เฉพาะเจาะจงมากขึ้น และเพื่อให้ทราบสัดส่วนของผู้ใช้ที่พบปัญหาอาจแม่นยำกว่า
ข้อผิดพลาดอาจเกิดจากสาเหตุต่างๆ ตั้งแต่ความผิดพลาดของผู้ใช้ไปจนถึงการบำรุงรักษาระบบ การอัปเกรด และแม้แต่ปัจจัยภายนอกระบบ เช่น สภาพอากาศไม่ดี หัวใจสำคัญของการแจ้งเตือนคือการไม่พยายามคาดการณ์สาเหตุที่เป็นไปได้ทั้งหมด แต่ให้เลือกอาการสำคัญ 2-3 อย่างที่ใช้เป็นจุดเริ่มต้นในการแก้ปัญหา
หัวข้อ 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-3 อย่างเพื่อแสดงรายการสินค้าคงคลังและรับจำนวนสินค้าคงคลังของสินค้าที่เฉพาะเจาะจง
เมื่อเราติดตั้งใช้งาน API และสมมติว่าโฮสต์อยู่ที่ https://<somehost> เราจะเข้าถึงปลายทาง API ได้ดังนี้
https://<somehost>/inventory
ซึ่งจะแสดงรายการสินค้าทั้งหมดพร้อมระดับสินค้าคงคลังที่มีอยู่
https://<somehost>/inventory/{productid}
ซึ่งจะแสดงระเบียนเดียวที่มี productid และระดับสินค้าคงคลังที่มีอยู่สำหรับผลิตภัณฑ์นั้น
ข้อมูลการตอบกลับที่แสดงเป็นรูปแบบ JSON
หมายเหตุ: แอปพลิเคชัน API นี้มีไว้เพื่อการสาธิตเท่านั้น และไม่ได้แสดงถึงการติดตั้งใช้งาน API ที่ปลอดภัยและมีประสิทธิภาพ โดยมีจุดประสงค์เพื่อให้เรามีแอปพลิเคชันที่พร้อมใช้งานอย่างรวดเร็วเพื่อสำรวจวัตถุประสงค์หลักของห้องทดลอง นั่นคือ Google Cloud Operations
ข้อมูลตัวอย่างและคำขอ/การตอบกลับของ 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 จากระยะไกลจากแล็ปท็อปได้ แต่ใน Codelab นี้คุณจะใช้ Google Cloud Shell ซึ่งเป็นสภาพแวดล้อมบรรทัดคำสั่งที่ทำงานในระบบคลาวด์
จาก GCP Console ให้คลิกไอคอน 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
- การติดตั้งใช้งานจากแหล่งที่มาต้องมีที่เก็บ Docker ของ Artifact Registry เพื่อจัดเก็บคอนเทนเนอร์ที่สร้างขึ้น ระบบจะสร้างที่เก็บชื่อ [cloud-run-source-deploy] ในภูมิภาค [us-west1]
- ต้องการดำเนินการต่อไหม (Y/n) 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 ซึ่งเป็นสภาพแวดล้อมการประมวลผลแบบไร้เซิร์ฟเวอร์ เราสามารถไปที่บริการ Cloud Run ผ่าน Google Cloud Console ได้ทุกเมื่อ
จากเมนูหลัก ให้ไปที่ Cloud Run ซึ่งจะแสดงรายการบริการที่คุณเรียกใช้ใน Cloud Run คุณควรเห็นบริการที่เพิ่งติดตั้งใช้งาน คุณควรเห็นข้อความคล้ายกับตัวอย่างต่อไปนี้ ทั้งนี้ขึ้นอยู่กับชื่อที่เลือก

คลิกชื่อบริการเพื่อดูรายละเอียด รายละเอียดตัวอย่างแสดงอยู่ด้านล่าง

โปรดสังเกต URL ซึ่งเป็น URL ของบริการที่คุณสามารถป้อนลงในเบราว์เซอร์และเข้าถึง Inventory API ที่เราเพิ่งติดตั้งใช้งาน ดูเมตริกและรายละเอียดอื่นๆ
มาเริ่มใช้งาน Google Cloud Operations Suite กันเลย
4. สร้างหัวข้อ Pub/Sub เพื่อรับการแจ้งเตือน
หากต้องการสร้างหัวข้อ Pub/Sub ให้ทำตามขั้นตอนต่อไปนี้ในคอนโซล Google Cloud
- ค้นหา Pub/Sub ในช่องค้นหา แล้วไปที่ Pub/Sub

- คลิกแท็บหัวข้อหากยังไม่ได้เลือก

- คลิกปุ่มสร้างหัวข้อ

- ป้อนชื่อที่จดจำได้สำหรับหัวข้อ

- คลิกปุ่มสร้าง

- คัดลอกชื่อหัวข้อโดยใช้ปุ่มไอคอนคัดลอก เนื่องจากคุณจะต้องใช้ในส่วนถัดไป

5. สร้างนโยบายการแจ้งเตือนสำหรับข้อผิดพลาด
การสำรวจบันทึกข้อผิดพลาด
วิธีดูบันทึกข้อผิดพลาดของแอปพลิเคชัน
คลิกแท็บการบันทึก
ซึ่งจะแสดงอินเทอร์เฟซบันทึกที่คุณสามารถเลือก/ยกเลิกการเลือกทรัพยากรต่างๆ (โปรเจ็กต์ ทรัพยากร Google Cloud ชื่อบริการ ฯลฯ) พร้อมกับระดับบันทึกเพื่อกรองข้อความบันทึกได้ตามต้องการ

จำลองคำขอที่ไม่ถูกต้อง 2-3 รายการไปยังบริการสินค้าคงคลังโดยระบุรหัสผลิตภัณฑ์ที่ไม่ใช่ I-1, I-2 และ I-3 เช่น คำขอที่ไม่ถูกต้องคือ
https://<SERVICE_URL>/inventory/I-999
ตอนนี้เราจะค้นหาคำเตือนทั้งหมดที่ API ของเราสร้างขึ้นเมื่อมีการระบุรหัสผลิตภัณฑ์ที่ไม่ถูกต้องในคำค้นหา
การสร้างนโยบายการแจ้งเตือนตามบันทึกที่กำหนดเองสำหรับข้อผิดพลาด
สมมติว่าเราต้องการระวังการเกิดข้อความแสดงข้อผิดพลาดที่เฉพาะเจาะจงมากสำหรับบางส่วนของแอปพลิเคชัน เช่น หากเราพบข้อผิดพลาดจำนวนมากในการค้นหารหัสผลิตภัณฑ์ ปัญหานี้เป็นอาการของปัญหาที่อาจเกิดขึ้นได้หลายอย่าง (ลิงก์ไม่ถูกต้อง ฐานข้อมูลไม่สอดคล้องกัน หรือบ็อตแจกแจงเว็บไซต์ของเรา) แม้ว่าการคาดการณ์สาเหตุที่เป็นไปได้ทั้งหมดจะเป็นเรื่องยากหรือเป็นไปไม่ได้ แต่การที่แอปพลิเคชันส่งข้อความนี้แม้เพียงครั้งเดียวก็เป็นปัญหาในระดับสูงที่เราต้องการทราบ หากต้องการแจ้งเตือนเกี่ยวกับข้อผิดพลาดนี้ เราต้องสร้างนโยบายตามข้อมูลในบันทึกข้อผิดพลาด
- ในช่องคำค้นหา ให้แทรกพารามิเตอร์การค้นหาต่อไปนี้
resource.type="cloud_run_revision"
textPayload =~ "WARNING in app: Received inventory request for incorrect productid"
ซึ่งควรมีหน้าตาเช่นนี้

- คลิกเรียกใช้การค้นหา จากนั้นระบบจะแสดงคำขอทั้งหมดที่เข้ามาและคำขอที่มีปัญหานี้

- หากต้องการเปลี่ยนข้อมูลข้างต้นเป็นการแจ้งเตือน ให้คลิกปุ่มสร้างการแจ้งเตือนที่เห็นในตัวสำรวจบันทึกใต้ช่องการค้นหาทางด้านขวา

- ซึ่งจะแสดงแบบฟอร์มสำหรับสร้างนโยบายการแจ้งเตือนตามบันทึก

- ใช้การค้นหาเริ่มต้นสำหรับบันทึกที่จะรวมไว้ในการแจ้งเตือน
resource.type="cloud_run_revision"
textPayload =~ "WARNING in app: Received inventory request for incorrect productid"

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

- สุดท้ายนี้ สำหรับ "ใครควรได้รับการแจ้งเตือน" ให้เลือกช่องทางการแจ้งเตือน Pub/Sub ที่คุณสร้างไว้ก่อนหน้านี้

- คลิกบันทึก หากต้องการดูและจัดการนโยบายการแจ้งเตือน ให้ไปที่หน้าการแจ้งเตือนและดูในส่วนนโยบาย

6. ขอแสดงความยินดี
ยินดีด้วย คุณกำหนดค่าการตรวจสอบช่วงเวลาที่ระบบทำงานให้ส่งการแจ้งเตือนไปยัง Pub/Sub เรียบร้อยแล้ว