การใช้ Google Stackdriver Debug, Trace, Logging และ Logpoint

บทแนะนำนี้จะพาคุณไปดู Google Stackdriver ซึ่งช่วยให้คุณทำสิ่งต่อไปนี้กับแอปพลิเคชัน Google Cloud Platform ได้

  • ถ่ายสแนปชอตการแก้ไขข้อบกพร่องในแอปพลิเคชันที่ทำงานบน App Engine, Compute Engine และ Container Engine
  • ดูบันทึกแอปพลิเคชัน
  • ตั้งค่าเมตริก ตรวจสอบเมตริก และรับการแจ้งเตือน
  • ติดตามการเรียก API และดูรายละเอียดเกี่ยวกับเวลาตอบสนองและคอขวดที่อาจเกิดขึ้นในโค้ด
  • เพิ่มจุดบันทึกไปยังแอปพลิเคชันที่กำลังทำงานโดยไม่ต้องติดตั้งใช้งานแอป ซึ่งเป็นฟีเจอร์ที่ไม่เหมือนใคร (และหวังว่าจะเป็นประโยชน์)

ในบทแนะนำนี้ เราจะทำสิ่งต่อไปนี้ตั้งแต่ต้น

  1. สร้างโปรเจ็กต์ Google Cloud Platform (App Engine โดยเฉพาะ)
  2. ตั้งค่าที่เก็บแหล่งข้อมูลของโปรเจ็กต์ Google Cloud Platform
  3. ใช้แหล่งที่มาของแอปพลิเคชัน Python มาตรฐานของสมุดเยี่ยมที่มีอยู่ใน Github
  4. ติดตั้งใช้งานโค้ด
  5. ดูวิธีรับสแนปชอตการแก้ไขข้อบกพร่องของแอปพลิเคชันที่กำลังทำงาน
  6. ดูการบันทึกและการติดตามการเรียกแอปพลิเคชัน
  7. เพิ่มจุดบันทึกไปยังแอปพลิเคชันที่กำลังทำงานอยู่ ฟีเจอร์นี้ได้รับการกล่าวถึงครั้งแรกในบล็อกโพสต์นี้ : เพิ่มบันทึกของแอปพลิเคชันลงในแอปพลิเคชันโดยไม่ต้องรีสตาร์ท

มาเริ่มกันเลย

เนื้อหานี้สร้างขึ้นครั้งแรกโดย Romin Irani และโพสต์ที่นี่

การตั้งค่าสภาพแวดล้อมแบบเรียนรู้ด้วยตนเอง

หากยังไม่มีบัญชี Google (Gmail หรือ Google Apps) คุณต้องสร้างบัญชี ลงชื่อเข้าใช้คอนโซล Google Cloud Platform (console.cloud.google.com) แล้วสร้างโปรเจ็กต์ใหม่โดยทำดังนี้

ภาพหน้าจอจาก 2016-02-10 12:45:26.png

โปรดจดจำรหัสโปรเจ็กต์ ซึ่งเป็นชื่อที่ไม่ซ้ำกันในโปรเจ็กต์ Google Cloud ทั้งหมด (ชื่อด้านบนถูกใช้ไปแล้วและจะใช้ไม่ได้ ขออภัย) ซึ่งจะเรียกว่า PROJECT_ID ในภายหลังใน Codelab นี้

จากนั้นคุณจะต้องเปิดใช้การเรียกเก็บเงินใน Cloud Console เพื่อใช้ทรัพยากร Google Cloud

การทำ Codelab นี้ไม่ควรมีค่าใช้จ่ายเกิน 2-3 ดอลลาร์ แต่ก็อาจมีค่าใช้จ่ายมากกว่านี้หากคุณตัดสินใจใช้ทรัพยากรเพิ่มเติมหรือปล่อยให้ทรัพยากรทำงานต่อไป (ดูส่วน "การล้างข้อมูล" ที่ท้ายเอกสารนี้)

ผู้ใช้ใหม่ของ Google Cloud Platform มีสิทธิ์ทดลองใช้ฟรี$300

Google Cloud Shell

ในโค้ดแล็บนี้ เราจะใช้ Google Cloud Shell ซึ่งเป็นสภาพแวดล้อมบรรทัดคำสั่งที่ทำงานในระบบคลาวด์

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

หากต้องการเปิดใช้งาน Google Cloud Shell จากคอนโซลนักพัฒนาแอป ให้คลิกปุ่มที่ด้านขวาบน (ระบบจะจัดสรรและเชื่อมต่อกับสภาพแวดล้อมในเวลาเพียงไม่กี่นาที)

activateCloudShell.png

จากนั้นยอมรับข้อกำหนดในการให้บริการและคลิกลิงก์ "เริ่ม Cloud Shell"

x.png

Screen Shot 2017-06-14 at 10.13.43 PM.png

เมื่อเชื่อมต่อกับ Cloud Shell แล้ว คุณควรจะเห็นว่าคุณได้รับการตรวจสอบสิทธิ์แล้วและระบบได้ตั้งค่าโปรเจ็กต์เป็น PROJECT_ID แล้ว

gcloud auth list

เอาต์พุตของคำสั่ง

Credentialed accounts:
 - <myaccount>@<mydomain>.com (active)
gcloud config list project

เอาต์พุตของคำสั่ง

[core]
project = <PROJECT_ID>

หากไม่ได้ตั้งค่าโปรเจ็กต์ด้วยเหตุผลบางประการ ให้เรียกใช้คำสั่งต่อไปนี้

gcloud config set project <PROJECT_ID>

หากกำลังมองหา PROJECT_ID ตรวจสอบว่าคุณใช้รหัสใดในขั้นตอนการตั้งค่า หรือค้นหารหัสในแดชบอร์ดคอนโซล

Project_ID.png

สำคัญ: สุดท้าย ให้ตั้งค่าการกำหนดค่าโซนและโปรเจ็กต์เริ่มต้น

gcloud config set compute/zone us-central1-f

คุณเลือกโซนต่างๆ ได้หลากหลาย ดูข้อมูลเพิ่มเติมในเอกสารประกอบเกี่ยวกับภูมิภาคและโซน

ดู API ของ Stackdriver ที่เปิดใช้

มาดู API ที่เปิดใช้สำหรับโปรเจ็กต์ของคุณกัน ใช้แถบค้นหาเพื่อค้นหาแดชบอร์ด API ดังที่แสดงด้านล่าง

สังเกต API ที่เฉพาะเจาะจงซึ่งเปิดใช้สำหรับโปรเจ็กต์ของคุณ

ทุกโปรเจ็กต์ Google Cloud Platform มีการโฮสต์ Git แบบส่วนตัว แต่ก่อนอื่นเราต้องสร้างที่เก็บเริ่มต้นเพื่อใช้ทำงานด้วย ไปที่ที่เก็บแหล่งข้อมูลโดยใช้ช่องค้นหาของคอนโซล

คลิก "สร้างที่เก็บ" เพื่อสร้างที่เก็บโค้ดใหม่ชื่อ "default"

เราจะใช้ Cloud Shell เพื่อโคลนไดเรกทอรีนี้ลงในอินสแตนซ์ Google Cloud Shell โดยเราจะสร้างไดเรกทอรีในอินสแตนซ์ Google Cloud Shell ก่อน แล้วจึงไปยังไดเรกทอรีนั้นตามที่แสดงด้านล่าง (เอาต์พุตตัวอย่าง)

mkdir stackdriver-demo
cd stackdriver-demo/

ตอนนี้เราสามารถโคลนที่เก็บเริ่มต้นได้ที่นี่ผ่านคำสั่ง gcloud ดังที่แสดงด้านล่าง

gcloud source repos clone default

นี่คือเอาต์พุตคอนโซลที่คุณควรเห็น

Cloning into '/home/gcp123_student/default'...
warning: You appear to have cloned an empty repository.
Project [qwiklabs-gcp-1234abc1234] repository [default] was cloned to [/home/gcp123_student/default].

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

ไปที่ไดเรกทอรีเริ่มต้นที่สร้างขึ้น แล้วเรียกใช้คำสั่ง git remote -v ตามที่แสดงด้านล่าง

cd default
git remote -v

นี่คือเอาต์พุตของคอนโซลที่คุณควรเห็น ซึ่งจะมีลักษณะคล้ายกับเอาต์พุตต่อไปนี้

origin https://source.developers.google.com/p/qwiklabs-gcp-1234abc1234/r/default (fetch)
origin https://source.developers.google.com/p/qwiklabs-gcp-1234abc1234/r/default (push)

คุณจะเห็นว่าการดำเนินการนี้ชี้ไปยังที่เก็บ Git ที่เชื่อมโยงกับโปรเจ็กต์ GCP ของเราอย่างถูกต้อง

ดึงแอปพลิเคชันสมุดเยี่ยมจาก Github

แอปพลิเคชันที่เราจะใช้คือแอปพลิเคชัน App Engine มาตรฐานชื่อ Guestbook ซึ่งพร้อมใช้งานในที่เก็บอย่างเป็นทางการของ Google Cloud Platform บน GitHub แอปพลิเคชันนี้ยังเป็นส่วนหนึ่งของเอกสารประกอบอย่างเป็นทางการสำหรับการเริ่มต้นใช้งานด้วย โปรเจ็กต์ Github อยู่ที่ https://github.com/GoogleCloudPlatform/appengine-guestbook-python

ตอนนี้เราจะดึงโค้ดนี้ไปยังอินสแตนซ์ Cloud Shell คำสั่งและเอาต์พุตจะแสดงที่นี่

git pull https://github.com/GoogleCloudPlatform/appengine-guestbook-python

นี่คือเอาต์พุตคอนโซลที่คุณควรเห็น

remote: Counting objects: 485, done.
remote: Total 485 (delta 0), reused 0 (delta 0), pack-reused 485
Receiving objects: 100% (485/485), 436.42 KiB | 163.00 KiB/s, done.
Resolving deltas: 100% (195/195), done.
From https://github.com/GoogleCloudPlatform/appengine-guestbook-python
* branch HEAD -> FETCH_HEAD

ตอนนี้เรามีโค้ดทั้งหมดอยู่ในอินสแตนซ์ Google Cloud Shell ของเราในเครื่องแล้ว คุณจะเห็นไฟล์ต่างๆ ที่ดึงมาจากโปรเจ็กต์ Github

พุชโค้ดปัจจุบันโดยใช้ Cloud Shell ไปยังที่เก็บ Git ของโปรเจ็กต์

ตอนนี้มาพุชโค้ดนี้ไปยังที่เก็บ Git ของโปรเจ็กต์ GCP เพื่อให้เราตั้งค่าเบรกพอยต์ ล็อกพอยต์ และอื่นๆ สำหรับโค้ดได้ โปรดทราบว่าขั้นตอนนี้ไม่บังคับ เนื่องจากคุณสามารถผสานรวมกับ Github, เครื่องในพื้นที่ และวิธีอื่นๆ ในการลิงก์ซอร์สโค้ดได้โดยตรง

แต่สำหรับวัตถุประสงค์ของเราในที่นี้ เราจะพุชโค้ดนี้ไปยังที่เก็บ Git ของโปรเจ็กต์ GCP ซึ่งทำได้ผ่านคำสั่ง git push มาตรฐานดังที่แสดงด้านล่าง

git push origin master

นี่คือเอาต์พุตคอนโซลที่คุณควรเห็น

Counting objects: 485, done.
Compressing objects: 100% (280/280), done.
Writing objects: 100% (485/485), 436.42 KiB | 0 bytes/s, done.
Total 485 (delta 195), reused 485 (delta 195)
remote: Storing objects: 100% (485/485), done.
remote: Processing commits: 100% (152/152), done.
To https://source.developers.google.com/p/qwiklabs-gcp-1234abc1234/r/default
* [new branch] master -> master

ตอนนี้ให้กลับไปที่ Cloud Console ของ GCP และไปที่ส่วนการพัฒนา คลิกที่ซอร์สโค้ด แล้วคุณจะเห็นไฟล์โปรเจ็กต์ทั้งหมดในที่เก็บเริ่มต้น เอาต์พุตตัวอย่างแสดงอยู่ด้านล่าง

ตอนนี้เราพร้อมที่จะทำให้แอปพลิเคชัน App Engine ของสมุดเยี่ยมใช้งานได้แล้ว หากต้องการติดตั้งใช้งานแอป ให้ตรวจสอบว่าคุณอยู่ใน Google Cloud Shell และในไดเรกทอรีเริ่มต้นตามที่เราได้ดำเนินการมาตลอด ใช้คำสั่ง gcloud app deploy ดังที่แสดงด้านล่าง

gcloud app deploy --version 1

เมื่อระบบขอให้เลือกภูมิภาค ให้เลือก [1] us-east1

นี่คือเอาต์พุตคอนโซลที่คุณควรเห็น

You are about to deploy the following services:
— qwiklabs-gcp-1234abc1234/default/1 (from [/home/gcp123-student/default/app.yaml])
Deployed URL: [https://qwiklabs-gcp-1234abc1234.appspot.com]
Do you want to continue (Y/n)? Y
Beginning deployment of service [default]...
File upload done.
Updating service [default]...done.
Deployed service [default] to https://qwiklabs-gcp-1234abc1234.appspot.com]

โปรดทราบว่าเราได้ระบุพารามิเตอร์เวอร์ชันให้กับคำสั่งการทำให้แอปใช้งานได้ เราจึงให้ค่าเป็น "1"

เนื่องจากแอปพลิเคชันสมุดเยี่ยมใช้ Google Cloud Datastore เพื่อความคงทน เราจึงต้องอัปเดตดัชนี Datastore ดัชนีจะระบุไว้ในไฟล์ index.yaml และเราจะใช้คำสั่ง gcloud datastore create-indexes ตามที่แสดงด้านล่าง

gcloud datastore create-indexes index.yaml

นี่คือเอาต์พุตคอนโซลที่คุณควรเห็น

You are about to update the following configurations:
— qwiklabs-gcp-1234abc1234/index From: [/home/gcp123_student/default/index.yaml]
Do you want to continue (Y/n)? Y

ดัชนี Datastore อาจใช้เวลาสักครู่ในการอัปเดต หากต้องการตรวจสอบสถานะ ให้ค้นหา "ดัชนี Datastore" แล้วคลิกดัชนี ขณะที่ระบบกำลังสร้างดัชนี คุณจะเห็นสถานะที่มีค่าเป็น "กำลังจัดทำดัชนี" ดังที่แสดงด้านล่าง

เราสามารถตรวจสอบว่าแอปที่มีเวอร์ชัน 1 ได้รับการติดตั้งใช้งานและพร้อมใช้งานหรือไม่โดยไปที่ Compute → App Engine แล้วคลิกเวอร์ชันตามที่แสดงด้านล่าง

ตอนนี้ทุกอย่างควรจะเรียบร้อยดีแล้ว และคุณสามารถดูโปรเจ็กต์ได้โดยไปที่ https://<PROJECT_ID>.appspot.com อีกครั้งที่อาจใช้เวลาสักครู่เพื่อให้ดัชนี Datastore พร้อมใช้งาน ดังนั้นหากแอปพลิเคชันแสดงข้อผิดพลาด (เช่น ข้อผิดพลาดภายในเซิร์ฟเวอร์) ให้ลองอีกครั้งในอีกไม่กี่นาทีต่อมา

ตอนนี้เรามาใช้แอปพลิเคชันโดยการเข้าสู่ระบบและสร้างรายการสมุดเยี่ยม 2-3 รายการดังที่แสดงด้านล่าง

เยี่ยมเลย ตอนนี้เราพร้อมแล้วที่จะเจาะลึกฟีเจอร์ของ Stackdriver

ก่อนอื่นเรามาดูวิธีถ่ายสแนปชอตของแอปพลิเคชันที่กำลังทำงานกัน สแนปชอตมีประโยชน์หากคุณต้องการแก้ไขข้อบกพร่องของโค้ดบางส่วน ตรวจสอบตัวแปร และอื่นๆ ทั้งหมดนี้จะเกิดขึ้นขณะที่แอปพลิเคชันยังคงให้บริการอยู่ ซึ่งจะเป็นประโยชน์อย่างมากในกรณีที่คุณได้รับรายงานปัญหาเกี่ยวกับแอปพลิเคชันและต้องการลองแก้ไขข้อบกพร่องและดูว่าเกิดอะไรขึ้นกับแอป ตรวจสอบตัวแปรจำนวนมาก ถ่ายภาพรวมแบบมีเงื่อนไข และอื่นๆ

มาทำกันเลยสำหรับแอปพลิเคชันสมุดเยี่ยม เราจะขอภาพรวมหากมีใครขอหน้าแรก และโดยเฉพาะอย่างยิ่ง เราต้องการให้ภาพรวมดังกล่าวแสดงรายการคำทักทายที่อยู่ใน Datastore ในขณะนั้น

โค้ดสำหรับฟีเจอร์นี้อยู่ในไฟล์ guestbook.py และโดยเฉพาะอย่างยิ่ง เราสนใจที่จะเริ่มตรวจสอบโค้ดที่รันไทม์เมื่อดึงรายการคำทักทายจาก Datastore แล้ว ซึ่งดำเนินการในบรรทัดที่ 72 เราจึงใส่เบรกพอยต์ในบรรทัดที่ 74 เพื่อให้ทราบว่า #72 จะได้รับการดำเนินการ

โดยคลิก "แก้ไขข้อบกพร่อง" จากมุมมองเวอร์ชัน AppEngine หรือไปที่ Stackdriver → Debug ซึ่งจะแสดงหน้าจอตามที่แสดงด้านล่าง สิ่งที่คุณต้องทำคือเลือกไฟล์ (guestbook.py) ทางด้านซ้าย แล้วคลิกหมายเลขบรรทัดตามที่แสดง

ซึ่งจะแสดงข้อความที่ไฮไลต์ในกรอบสีแดงด้านบนว่าระบบกำลังรอให้ทริกเกอร์สแนปชอต ตอนนี้สิ่งที่เราต้องทำคือไปที่หน้า

https://<PROJECT_ID>.appspot.com

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

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

ฟีเจอร์ที่มีประโยชน์อย่างยิ่งคือการถ่ายภาพรวมอีกครั้งได้ทุกเมื่อ เพียงคลิกไอคอนกล้องได้ทุกเมื่อ แล้วระบบจะรอให้สแนปชอตปรากฏขึ้นอีกครั้งตามที่แสดงด้านล่าง

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

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

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

โดยจะเปิดใช้โดยค่าเริ่มต้นสำหรับแอปพลิเคชัน App Engine ทั้งหมด และให้รายละเอียดประสิทธิภาพที่เป็นประโยชน์มากสำหรับปลายทางทั้งหมดของเรา พร้อมทั้งการแยกย่อยการเรียกต่างๆ

ในกรณีของเรา เราได้เข้าชมหน้าแรก ("/") และดู / เพิ่มรายการในสมุดเยี่ยม ซึ่งเพียงพอสำหรับ Trace ที่จะบอกเราเพิ่มเติมเกี่ยวกับเวลาในการตอบสนอง เพียงไปที่ภาพรวมของ Stackdriver Trace แล้วคุณจะเห็นภาพหน้าจอตามที่แสดงด้านล่าง สังเกตร่องรอยล่าสุดและเวลาในการตอบสนอง

หากเราคลิกการติดตามใดรายการหนึ่ง เช่น คลิกลิงก์ URI ระบบจะแสดงการติดตามโดยละเอียดดังที่แสดงด้านล่าง

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

คุณดูบันทึกของแอปพลิเคชันได้ทุกเมื่อโดยไปที่ Stackdriver Logging (ดังที่แสดงด้านล่าง) มีตัวกรองหลายรายการให้ใช้งานได้โดยเริ่มจากบริการต่างๆ ของ GCP → ประเภทบันทึก → ระดับบันทึก → วันที่ และอื่นๆ

ภาพหน้าจอด้านล่างแสดงบันทึกของแอปพลิเคชัน App Engine และเวอร์ชัน 1 เริ่มต้น

logging.png

สุดท้ายนี้ เรามาดูฟีเจอร์ที่จะทำให้คุณตื่นเต้นกับความเป็นไปได้ที่ฟีเจอร์นี้มีให้กัน โดยปกติแล้วในฐานะนักพัฒนาซอฟต์แวร์ เราจะพยายามอย่างเต็มที่เพื่อใส่คำสั่งบันทึกลงในโค้ดของเรา จากนั้นก็ติดตั้งใช้งานโค้ดและหวังว่าบันทึกจะบอกทุกสิ่งที่เราอยากรู้

แต่เราทราบดีว่าแค่นั้นยังไม่พอ และเมื่อดีบักเท่านั้นเราจึงตระหนักว่าเราควรใส่คำสั่งบันทึกเพิ่มเติมที่นี่และที่นั่น จากนั้นเวิร์กโฟลว์ปกติคือการแก้ไขโค้ด ใส่คำสั่งบันทึกเพิ่มเติม ทำการติดตั้งใช้งานอีกครั้ง และตรวจสอบ

ซึ่งก็ใช้ได้ แต่จะเกิดอะไรขึ้นหากคุณเพิ่มคำสั่งบันทึกเหล่านี้ (เราจะเรียกว่าจุดบันทึก) ลงในแอปพลิเคชันที่กำลังทำงาน ซึ่งหมายความว่าเราไม่จำเป็นต้องผ่านกระบวนการหยุดแอปพลิเคชัน เปลี่ยนโค้ด และนำไปใช้งานอีกครั้ง แต่เราสามารถจัดการรายการ Logpoint จากภายนอกแอปพลิเคชันได้โดยใช้การรองรับ Logpoint

เราจะตรวจสอบรายการ Logpoint ปัจจุบันที่เรากำหนดค่าไว้ (ซึ่งควรเป็น 0) จากภายใน Cloud Shell ซึ่งทำได้ผ่านคำสั่ง gcloud ดังที่แสดงด้านล่าง

gcloud debug logpoints list

นี่คือเอาต์พุตคอนโซลที่คุณควรเห็น

Debug target not specified. Using default target: default-1
Listed 0 items.

ตอนนี้เราจะเพิ่ม Logpoint ลงในแอปพลิเคชันที่กำลังทำงาน หากต้องการเพิ่ม Logpoint เราต้องทำสิ่งต่อไปนี้

  • ระบุไฟล์ซอร์สโค้ดและหมายเลขบรรทัดที่เราต้องการเพิ่มจุดตรวจสอบ
  • ระบุข้อความบันทึก ข้อความบันทึกนี้อาจเป็นแบบฮาร์ดโค้ดหรือแม้แต่เป็นนิพจน์

ในกรณีของเรา เราจะเพิ่ม Logpoint ลงในไฟล์ guestbook.py ที่บรรทัด #74 ผ่านคำสั่ง logpoints create ดังที่แสดงด้านล่าง

gcloud debug logpoints create guestbook.py:74 "Fetched greetings from Datastore. Count of greetings : {len(greetings)}"

นี่คือเอาต์พุตคอนโซลที่คุณควรเห็น

Debug target not specified. Using default target: default-1
— id: 53538243519d4-f9a0-bdbce
location: guestbook.py:74
logLevel: INFO
logMessageFormat: Fetched greetings from Datastore. Count of greetings : {len(greetings)}
condition: None
status: ACTIVE

เราได้ระบุ filename:linenumber และข้อความบันทึกด้านบน โปรดทราบว่าข้อความบันทึกของเรายังมีนิพจน์ที่จะพิมพ์จำนวนคำทักทายที่เราดึงมาจาก Datastore ด้วย

คำสั่งจะกลับมาพร้อมข้อความที่ระบุว่าเพิ่ม Logpoint แล้ว ภาพหน้าจอจาก Cloud Shell ของเราแสดงอยู่ด้านล่าง

ตอนนี้หากคุณเรียกใช้คำสั่งรายการจุดบันทึก คุณจะเห็นเอาต์พุตต่อไปนี้

gcloud debug logpoints list

นี่คือเอาต์พุตคอนโซลที่คุณควรเห็น

Debug target not specified. Using default target: default-1
STATUS LOCATION CONDITION LOG_LEVEL LOG_MESSAGE_FORMAT ID
ACTIVE
guestbook.py:74 INFO Fetched greetings from Datastore. Count of greetings : {len(greetings)} 53538243519d4-f9a0-bdbce

หากต้องการดูการทำงานของฟีเจอร์นี้ ให้ไปที่หน้าแรกอีกครั้งที่ https://<PROJECT_ID>.appspot.com ซึ่งจะเป็นการเรียกใช้โค้ดและ Logpoint ของเรา โปรดทราบว่าระบบจะบันทึกข้อมูลนี้ไว้ในบันทึกแอปพลิเคชันโดยค่าเริ่มต้น ดังนั้นสิ่งที่เราต้องทำคือไปที่ Stackdriver Logging อีกครั้งตามที่แสดงด้านล่าง

คลิกคำขอที่ต้องการ แล้วก็เรียบร้อย ในรายละเอียด คุณจะเห็นว่า Logpoint ของเราทำงานและข้อความบันทึกปรากฏขึ้น

เราหวังว่าคุณจะชอบบทแนะนำนี้ ซึ่งเป็นเพียงความสามารถบางส่วนที่แพลตฟอร์ม Stackdriver มีให้ ยังมีอีกมากมายให้คุณสำรวจ ดูบล็อกของ Romin Irani (ผู้เขียนต้นฉบับของ Codelab นี้) ที่ https://rominirani.com/ เพื่อดูบทแนะนำเพิ่มเติมเกี่ยวกับ Google Cloud Platform

นอกจากนี้ คุณยังดู Codelab อื่นที่ชื่อ "การใช้การตรวจสอบและการบันทึกของ Stackdriver เพื่อให้เห็นประสิทธิภาพการทำงานของแอปพลิเคชันได้ดียิ่งขึ้น" ได้ด้วย

หากมีความคิดเห็นหรือต้องการรายงานปัญหาเกี่ยวกับ Codelab นี้ โปรดใช้ลิงก์ "โปรดแจ้งข้อบกพร่อง" ที่ด้านล่างซ้ายของหน้านี้