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

บทแนะนํานี้จะแนะนําทัวร์ชม 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. เพิ่มจุดตรวจสอบลงในแอปพลิเคชันที่ทํางานอยู่ในปัจจุบัน ฟีเจอร์แรกครอบคลุมในบล็อกโพสต์นี้ นั่นคือ Add Application Logs ในแอปพลิเคชันที่ไม่มีการรีสตาร์ท

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

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

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

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

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

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

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

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

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

Google Cloud Shell

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

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

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

เมื่อเปิดใช้งาน CloudShell

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

X

Screen Shot 2017-06-14 เวลา 22.13.43 น. (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

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

ตรวจสอบ StackDriver API ที่เปิดใช้

มาดู 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 มาตรฐานชื่อสมุดเยี่ยม และมีให้บริการที่ที่เก็บ Google Cloud Platform GitHub อย่างเป็นทางการ แอปพลิเคชันนี้เป็นส่วนหนึ่งของเอกสารประกอบอย่างเป็นทางการสําหรับการเริ่มต้นใช้งานด้วย โปรเจ็กต์ GitHu มีให้บริการที่ 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 ไปยังที่เก็บ Project Git

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

แต่สําหรับวัตถุประสงค์ของเรา เราจะพุชโค้ดนี้ไปยังที่เก็บ Git Project ของ 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

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

เราพร้อมทําให้แอปพลิเคชัน AppBook ของ 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 index" แล้วคลิกที่ดัชนี ขณะสร้างดัชนี คุณจะเห็นสถานะที่มีค่า "Index" ดังที่แสดงด้านล่าง

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

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

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

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

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

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

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

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

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

https://<PROJECT_ID>.appspot.com

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

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

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

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

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

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

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

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

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

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

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

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

Logging.png

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

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

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

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

gcloud debug logpoints list

นี่คือเอาต์พุตของคอนโซลที่คุณควรดู

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

ตอนนี้เราจะเพิ่มจุดตรวจสอบลงในแอปพลิเคชันที่ทํางานอยู่ หากต้องการเพิ่มจุดตรวจสอบ เราจะต้องดําเนินการต่อไปนี้

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

ในกรณีของเรา เราจะเพิ่มจุดตรวจสอบลงในไฟล์ hostbook.py ที่บรรทัด #74 ผ่านคําสั่งสร้างจุดตรวจสอบดังที่แสดงด้านล่าง

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 และข้อความบันทึกข้างต้นแล้ว โปรดทราบว่าข้อความในบันทึกของเรามีนิพจน์ซึ่งจะแสดงจํานวนคําทักทายที่เราดึงมาจากที่เก็บข้อมูล

คําสั่งจะปรากฏขึ้นพร้อมข้อความแจ้งว่าเพิ่มจุดตรวจสอบแล้ว ภาพหน้าจอจาก 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 อีกครั้ง ซึ่งจะเรียกใช้โค้ดดังกล่าวและในทางกลับกัน โปรดทราบว่าระบบจะบันทึกข้อมูลนี้โดยค่าเริ่มต้นในบันทึกแอปพลิเคชันของเรา ทั้งหมดที่คุณต้องทําคือไปที่ Stackdriver Logging อีกครั้งดังที่แสดงด้านล่าง

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

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

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

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