Sử dụng Google Stackdriver Debug, Trace, Logging và Logpoints

Hướng dẫn này sẽ giúp bạn khám phá Google Stackdriver. Nhờ đó, bạn có thể làm những việc sau đây với các ứng dụng Google Cloud Platform:

  • Chụp Ảnh chụp nhanh gỡ lỗi trong các ứng dụng đang chạy trên App Engine, Compute Engine và Container Engine.
  • Xem Nhật ký ứng dụng.
  • Thiết lập chỉ số, giám sát chỉ số và nhận cảnh báo.
  • Theo dõi các lệnh gọi API và xem thông tin chi tiết về thời gian phản hồi cũng như các điểm tắc nghẽn tiềm ẩn trong mã của bạn.
  • Thêm điểm ghi nhật ký vào một ứng dụng đang chạy mà không cần triển khai ứng dụng. Đây là một tính năng thực sự độc đáo (và hy vọng là hữu ích).

Trong hướng dẫn này, chúng ta sẽ thực hiện những việc sau đây từ đầu:

  1. Tạo một dự án trên Google Cloud Platform (cụ thể là App Engine)
  2. Thiết lập kho lưu trữ nguồn dự án trên Google Cloud Platform
  3. Sử dụng nguồn Ứng dụng Python Sổ khách tiêu chuẩn có trên Github
  4. Triển khai mã
  5. Xem cách chúng ta có thể nhận được ảnh chụp nhanh gỡ lỗi của ứng dụng đang chạy
  6. Xem Nhật ký và dấu vết lệnh gọi ứng dụng
  7. Thêm điểm ghi nhật ký vào ứng dụng đang chạy. Tính năng này ban đầu được đề cập trong bài đăng này trên blog : Thêm nhật ký ứng dụng vào ứng dụng mà không cần khởi động lại

Chúng ta hãy bắt đầu.

Nội dung này ban đầu do Romin Irani tạo và đăng tại đây.

Thiết lập môi trường theo tốc độ của riêng bạn

Nếu chưa có Tài khoản Google (Gmail hoặc Google Apps), bạn phải tạo một tài khoản. Đăng nhập vào bảng điều khiển Google Cloud Platform (console.cloud.google.com) rồi tạo một dự án mới:

Ảnh chụp màn hình từ 2016-02-10 12:45:26.png

Hãy nhớ mã dự án, một tên duy nhất trong tất cả các dự án trên Google Cloud (tên ở trên đã được sử dụng và sẽ không hoạt động đối với bạn, xin lỗi!). Sau này trong lớp học lập trình này, chúng ta sẽ gọi nó là PROJECT_ID.

Tiếp theo, bạn cần bật tính năng thanh toán trong Cloud Console để sử dụng các tài nguyên của Google Cloud.

Việc thực hiện lớp học lập trình này sẽ không tốn của bạn quá vài đô la, nhưng có thể tốn nhiều hơn nếu bạn quyết định sử dụng nhiều tài nguyên hơn hoặc nếu bạn để các tài nguyên đó chạy (xem phần "dọn dẹp" ở cuối tài liệu này).

Người dùng mới của Google Cloud Platform đủ điều kiện dùng thử miễn phí 300 USD.

Google Cloud Shell

Trong lớp học lập trình này, chúng ta sẽ sử dụng Google Cloud Shell, một môi trường dòng lệnh chạy trên đám mây.

Máy ảo dựa trên Debian này được trang bị tất cả các công cụ phát triển mà bạn cần. Nó cung cấp một thư mục chính có dung lượng 5 GB và chạy trên Google Cloud, giúp tăng cường đáng kể hiệu suất mạng và hoạt động xác thực. Điều này có nghĩa là bạn chỉ cần một trình duyệt (có, trình duyệt này hoạt động trên Chromebook) cho lớp học lập trình này.

Để kích hoạt Google Cloud Shell, trong bảng điều khiển dành cho nhà phát triển, bạn chỉ cần nhấp vào nút ở phía trên cùng bên phải (mất vài giây để cung cấp và kết nối với môi trường):

activateCloudShell.png

Sau đó, hãy chấp nhận điều khoản dịch vụ và nhấp vào đường liên kết "Bắt đầu Cloud Shell":

x.png

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

Sau khi kết nối với Cloud Shell, bạn sẽ thấy rằng mình đã được xác thực và dự án đã được đặt thành PROJECT_ID :

gcloud auth list

Đầu ra của lệnh

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

Đầu ra của lệnh

[core]
project = <PROJECT_ID>

Nếu vì lý do nào đó mà dự án chưa được thiết lập, bạn chỉ cần đưa ra lệnh sau :

gcloud config set project <PROJECT_ID>

Bạn đang tìm PROJECT_ID? Kiểm tra mã nhận dạng bạn đã dùng trong các bước thiết lập hoặc tìm mã nhận dạng đó trong trang tổng quan của bảng điều khiển:

Project_ID.png

QUAN TRỌNG: Cuối cùng, hãy đặt cấu hình dự án và vùng mặc định:

gcloud config set compute/zone us-central1-f

Bạn có thể chọn nhiều múi giờ khác nhau. Tìm hiểu thêm trong tài liệu về Khu vực và múi giờ.

Kiểm tra các API StackDriver đã bật

Hãy xem các API đã được bật cho dự án của bạn. Sử dụng thanh tìm kiếm để tìm Trang tổng quan API như minh hoạ bên dưới.

Quan sát các API cụ thể đã được bật cho dự án của bạn :

Mọi dự án trên Google Cloud Platform đều cung cấp dịch vụ lưu trữ Git riêng tư, nhưng trước tiên, chúng ta cần tạo một kho lưu trữ mặc định để làm việc. Chuyển đến Source Repositories (Kho lưu trữ nguồn) bằng hộp tìm kiếm trên bảng điều khiển :

Nhấp vào "CREATE REPOSITORY" (TẠO KHO LƯU TRỮ) để tạo một kho lưu trữ mã mới có tên là "default" (mặc định):

Bây giờ, bằng Cloud Shell, chúng ta sẽ sao chép thư mục này vào phiên bản Google Cloud Shell. Để làm việc đó, trước tiên, hãy tạo một thư mục trong phiên bản Google Cloud Shell và chuyển đến thư mục đó như minh hoạ bên dưới (đầu ra mẫu):

mkdir stackdriver-demo
cd stackdriver-demo/

Giờ đây, chúng ta có thể sao chép kho lưu trữ mặc định tại đây thông qua lệnh gcloud như minh hoạ dưới đây:

gcloud source repos clone default

Đây là kết quả đầu ra của bảng điều khiển mà bạn sẽ thấy :

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].

Tuyệt vời! Hãy dành chút thời gian để tìm hiểu kỹ hơn về các kho lưu trữ từ xa của Git mà bạn đã thiết lập. Đây không phải là điều bắt buộc mà chỉ là thông tin giúp bạn hiểu rõ hơn về những gì đã xảy ra.

Chuyển đến thư mục mặc định đã tạo và chạy lệnh git remote -v như minh hoạ bên dưới

cd default
git remote -v

Đây là đầu ra của bảng điều khiển mà bạn sẽ thấy nội dung tương tự như sau:

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)

Bạn có thể thấy rằng điều này trỏ chính xác đến Kho lưu trữ Git được liên kết với Dự án trên GCP của chúng tôi.

Kéo ứng dụng Guestbook từ Github

Ứng dụng mà chúng ta sẽ sử dụng là một ứng dụng App Engine tiêu chuẩn có tên là Guestbook và có trong kho lưu trữ Github chính thức của Google Cloud Platform. Ứng dụng này cũng là một phần của tài liệu chính thức để bắt đầu. Dự án trên Github có tại : https://github.com/GoogleCloudPlatform/appengine-guestbook-python

Bây giờ, chúng ta sẽ kéo mã này vào phiên bản Cloud Shell. Lệnh và kết quả của lệnh đó được trình bày ở đây :

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

Đây là kết quả đầu ra của bảng điều khiển mà bạn sẽ thấy :

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

Giờ đây, chúng ta có tất cả mã trên máy trong phiên bản Google Cloud Shell. Bạn có thể thấy nhiều tệp đã được lấy từ dự án trên GitHub.

Đẩy mã hiện tại bằng Cloud Shell vào Kho lưu trữ Git của dự án

Bây giờ, hãy đẩy mã này vào kho lưu trữ Git của Dự án GCP để chúng ta có thể đặt điểm ngắt, điểm ghi nhật ký và nhiều điểm khác cho mã của mình. Xin lưu ý rằng đây không phải là bước bắt buộc vì bạn có thể tích hợp trực tiếp với Github, máy cục bộ và các cách khác để liên kết mã nguồn.

Nhưng cho mục đích của chúng ta ở đây, chúng ta sẽ đẩy mã này vào Kho lưu trữ Git của Dự án GCP. Việc này được thực hiện thông qua lệnh git push tiêu chuẩn như minh hoạ dưới đây:

git push origin master

Đây là kết quả đầu ra của bảng điều khiển mà bạn sẽ thấy :

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

Bây giờ, hãy quay lại Cloud Console của GCP và chuyển đến phần Phát triển. Nhấp vào Source Code (Mã nguồn) và đối với kho lưu trữ mặc định, bạn sẽ thấy tất cả các tệp dự án. Dưới đây là kết quả mẫu:

Bây giờ, chúng ta đã sẵn sàng triển khai ứng dụng Sổ khách App Engine. Để triển khai ứng dụng, hãy đảm bảo rằng bạn đang ở trong Google Cloud Shell và trong thư mục mặc định như chúng ta đã làm từ đầu đến giờ. Sử dụng lệnh gcloud app deploy như minh hoạ dưới đây:

gcloud app deploy --version 1

Khi được yêu cầu chọn một khu vực, hãy chọn [1] us-east1.

Đây là kết quả đầu ra của bảng điều khiển mà bạn sẽ thấy :

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]

Xin lưu ý rằng chúng tôi đã cung cấp một tham số phiên bản cho lệnh triển khai ứng dụng. Chúng tôi đã đặt giá trị "1" cho thuộc tính này.

Vì ứng dụng Guestbook sử dụng Google Cloud Datastore để duy trì dữ liệu, nên chúng ta cần cập nhật chỉ mục Datastore. Các chỉ mục được chỉ định trong tệp index.yaml và chúng ta chỉ cần sử dụng lệnh gcloud datastore create-indexes như minh hoạ dưới đây:

gcloud datastore create-indexes index.yaml

Đây là kết quả đầu ra của bảng điều khiển mà bạn sẽ thấy :

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

Có thể mất một lúc để các chỉ mục Datastore cập nhật. Để kiểm tra trạng thái, hãy tìm "Datastore indexes" (Chỉ mục của kho dữ liệu) rồi nhấp vào Indexes (Chỉ mục). Trong khi các chỉ mục đang được tạo, bạn sẽ thấy Trạng thái có giá trị "Đang lập chỉ mục" như minh hoạ bên dưới:

Chúng ta có thể kiểm tra xem Ứng dụng có Phiên bản 1 đã được triển khai và có sẵn hay chưa bằng cách chuyển đến Compute (Điện toán) → App Engine rồi nhấp vào Versions (Phiên bản) như minh hoạ bên dưới:

Mọi thứ giờ đây sẽ trông ổn và bạn có thể xem dự án của mình bằng cách chuyển đến https://<PROJECT_ID>.appspot.com. Một lần nữa, có thể mất vài phút để các chỉ mục của kho dữ liệu sẵn sàng. Vì vậy, nếu ứng dụng báo lỗi (ví dụ: Lỗi máy chủ nội bộ), hãy thử lại sau vài phút.

Bây giờ, hãy sử dụng ứng dụng bằng cách đăng nhập và tạo một vài mục nhập sổ lưu bút như minh hoạ bên dưới:

Tuyệt vời! Giờ đây, chúng ta đã sẵn sàng tìm hiểu các tính năng của Stackdriver.

Trước tiên, hãy xem cách chúng ta có thể chụp nhanh ứng dụng đang chạy. Ảnh chụp nhanh sẽ hữu ích nếu bạn muốn gỡ lỗi một đoạn mã cụ thể, kiểm tra các biến và nhiều thông tin khác. Tất cả những điều này diễn ra trong khi ứng dụng của bạn vẫn đang được phân phát. Điều này rất hữu ích trong trường hợp bạn nhận được báo cáo về một vấn đề với ứng dụng của mình và bạn muốn thử gỡ lỗi cũng như xem điều gì đang xảy ra với ứng dụng, kiểm tra một loạt biến, có điều kiện chụp nhanh và hơn thế nữa.

Hãy thực hiện ngay cho ứng dụng Guestbook. Chúng ta sẽ yêu cầu một ảnh chụp nhanh nếu có người yêu cầu trang chủ và cụ thể là chúng ta muốn ảnh chụp nhanh đó truy xuất danh sách lời chào hiện có trong Datastore.

Mã cho thành phần này có trong tệp guestbook.py. Cụ thể, chúng ta muốn bắt đầu kiểm tra mã tại thời gian chạy sau khi mã truy xuất danh sách lời chào từ kho dữ liệu. Việc này được thực hiện trên Dòng số 72. Vì vậy, chúng ta chỉ cần đặt một điểm ngắt trên Dòng 74 để biết rằng #72 sẽ được thực thi.

Để làm việc đó, hãy nhấp vào "Gỡ lỗi" trong chế độ xem phiên bản AppEngine hoặc chuyển đến Stackdriver → Gỡ lỗi . Thao tác này sẽ hiển thị màn hình như bên dưới. Bạn cần chọn tệp (guestbook.py) ở bên trái, sau đó nhấp vào số dòng như minh hoạ.

Thao tác này sẽ cho thấy một thông báo được đánh dấu trong hộp màu đỏ ở trên, cho biết rằng hệ thống đang chờ một ảnh chụp nhanh được kích hoạt. Giờ đây, tất cả những gì chúng ta cần làm là truy cập vào trang của mình tại

https://<PROJECT_ID>.appspot.com.

Sau khi bạn thực hiện thao tác đó, ảnh chụp nhanh sẽ được kích hoạt và bạn sẽ thấy các phần Biến và Ngăn xếp lệnh gọi được điền sẵn như minh hoạ bên dưới. Xem cách các biến được hiển thị và bạn có thể mở rộng các biến đó để kiểm tra giá trị. Thông tin này rất hữu ích.

Ví dụ: nếu mở rộng biến lời chào, bạn sẽ thấy biến này có các bản ghi tương ứng với số lượng mục nhập trong sổ lưu bút mà bạn đã tạo.

Một tính năng rất tiện dụng là chụp lại ảnh chụp nhanh bất cứ lúc nào. Bạn chỉ cần nhấp vào biểu tượng camera bất cứ lúc nào và biểu tượng này sẽ đợi ảnh chụp nhanh xuất hiện như minh hoạ dưới đây:

Bạn có thể sử dụng trường Biểu thức như minh hoạ bên dưới để theo dõi các biến cụ thể. Ví dụ: chúng ta biết rằng chúng ta có một lời chào biến và chúng ta quan tâm đến việc kiểm tra giá trị của nó, ngay khi một ảnh chụp nhanh được tạo. Chúng ta có thể đặt biến lời chào như trong ảnh chụp màn hình bên dưới. Khi bạn chụp nhanh, hệ thống sẽ điền các giá trị như trong hình.

Nếu chỉ muốn kích hoạt ảnh chụp nhanh trong một điều kiện nhất định, bạn có thể sử dụng trường Điều kiện như minh hoạ bên dưới. Ở đây, chúng ta đang nói rằng ảnh chụp nhanh chỉ nên xuất hiện nếu số lượng lời chào lớn hơn 1. Bạn có thể thử nghiệm tính năng này nếu muốn.

Điều rất quan trọng là phải đảm bảo hiệu suất của ứng dụng web đáp ứng các yêu cầu mà bạn đã đặt ra. Stackdriver Trace là một công cụ quan trọng giúp bạn hiểu rõ độ trễ trong các ứng dụng của mình.

Tính năng này được bật theo mặc định cho tất cả các ứng dụng App Engine và cung cấp cho chúng tôi thông tin chi tiết rất hữu ích về hiệu suất cho tất cả các điểm cuối của chúng tôi, cùng với thông tin chi tiết về nhiều lệnh gọi.

Trong trường hợp này, chúng ta đã truy cập vào trang chủ ("/") và xem / thêm các mục trong sổ lưu bút. Điều này là đủ để Trace cho chúng ta biết thêm về độ trễ. Bạn chỉ cần chuyển đến phần Tổng quan về Stackdriver Trace và chúng ta sẽ thấy ảnh chụp màn hình như dưới đây. Lưu ý đến các dấu vết gần đây và độ trễ của chúng.

Nếu chúng ta nhấp vào một dấu vết bất kỳ, tức là nhấp vào đường liên kết URI, thì dấu vết chi tiết sẽ xuất hiện như bên dưới:

Lưu ý cách nó có thể cho chúng ta biết độ trễ và những lệnh gọi nào mất nhiều thời gian nhất. Bạn có thể thấy từ hình ảnh trực quan ở trên rằng truy vấn kho dữ liệu đang mất thời gian. Có thể một lựa chọn cần xem xét là lưu dữ liệu vào bộ nhớ đệm để giảm tình trạng tắc nghẽn đó. Xin nhắc lại rằng tất cả những điều này đều phụ thuộc vào ứng dụng của bạn và điều này sẽ rất hữu ích để xác định những khu vực nào trong dấu vết lệnh gọi có thể cần tái cấu trúc.

Bạn có thể xem nhật ký ứng dụng bất cứ lúc nào bằng cách chuyển đến Stackdriver Logging (như minh hoạ bên dưới). Có nhiều bộ lọc có sẵn, bắt đầu từ nhiều Dịch vụ GCP → Loại nhật ký → Cấp độ nhật ký → Ngày và nhiều bộ lọc khác.

Ảnh chụp màn hình bên dưới cho thấy Nhật ký của ứng dụng App Engine và Phiên bản 1 mặc định.

logging.png

Cuối cùng, hãy xem xét một tính năng có thể khiến bạn hào hứng với những khả năng mà tính năng này mang lại. Thông thường, với tư cách là nhà phát triển, chúng tôi cố gắng hết sức để đưa các câu lệnh nhật ký vào mã, triển khai mã rồi hy vọng rằng nhật ký sẽ cho chúng tôi biết mọi thứ chúng tôi muốn biết.

Nhưng chúng ta biết rằng như vậy là chưa đủ và chỉ khi gỡ lỗi, chúng ta mới nhận ra rằng có lẽ mình nên đặt thêm một vài câu lệnh nhật ký ở đây và ở đó. Sau đó, quy trình thông thường là sửa đổi mã, đưa thêm câu lệnh nhật ký, triển khai lại và giám sát.

Điều này không có vấn đề gì, nhưng nếu bạn có thể thêm các câu lệnh nhật ký này (giờ hãy gọi chúng là logpoint) vào ứng dụng đang chạy thì sao. Điều này có nghĩa là chúng ta không cần phải trải qua quy trình dừng ứng dụng, thay đổi mã và triển khai lại. Thay vào đó, chúng ta có thể quản lý danh sách các điểm ghi nhật ký từ bên ngoài ứng dụng bằng cách sử dụng hỗ trợ điểm ghi nhật ký.

Vẫn trong Cloud Shell, hãy kiểm tra danh sách hiện tại gồm các điểm ghi nhật ký mà chúng ta đã định cấu hình (chắc chắn là 0). Việc này được thực hiện thông qua lệnh gcloud như minh hoạ dưới đây:

gcloud debug logpoints list

Đây là kết quả đầu ra của bảng điều khiển mà bạn sẽ thấy :

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

Bây giờ, chúng ta sẽ thêm một điểm ghi nhật ký vào ứng dụng đang chạy. Để thêm một điểm ghi nhật ký, chúng ta cần làm những việc sau:

  • Xác định tệp mã nguồn và số dòng mà chúng ta muốn thêm điểm ghi nhật ký.
  • Xác định thông báo nhật ký. Thông báo nhật ký này có thể được mã hoá cứng hoặc thậm chí là một biểu thức.

Trong trường hợp này, chúng ta sẽ thêm một điểm ghi nhật ký vào tệp guestbook.py ở dòng số 74 thông qua lệnh tạo điểm ghi nhật ký như minh hoạ dưới đây:

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

Đây là kết quả đầu ra của bảng điều khiển mà bạn sẽ thấy :

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

Chúng tôi đã cung cấp filename:linenumber và thông báo nhật ký ở trên. Xin lưu ý rằng thông điệp nhật ký của chúng ta cũng chứa một biểu thức sẽ in ra số lượng lời chào mà chúng ta đã truy xuất từ kho dữ liệu.

Lệnh này sẽ trả về thông báo cho biết logpoint đã được thêm. Ảnh chụp màn hình Cloud Shell của chúng tôi được minh hoạ dưới đây:

Giờ đây, nếu chạy lệnh danh sách điểm ghi nhật ký, bạn sẽ thấy kết quả sau:

gcloud debug logpoints list

Đây là kết quả đầu ra của bảng điều khiển mà bạn sẽ thấy :

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

Để xem ví dụ này, chúng ta có thể truy cập lại trang chủ tại https://<PROJECT_ID>.appspot.com. Thao tác này sẽ gọi mã và đến lượt logpoint của chúng ta. Hãy nhớ rằng theo mặc định, thông tin này sẽ được ghi vào Nhật ký ứng dụng của chúng tôi. Vì vậy, tất cả những gì chúng ta cần làm là truy cập vào công cụ Ghi nhật ký Stackdriver một lần nữa như minh hoạ bên dưới:

Nhấp vào yêu cầu cụ thể và thế là xong! Trong phần chi tiết, bạn sẽ thấy điểm ghi nhật ký của chúng tôi được kích hoạt và thông báo nhật ký xuất hiện.

Chúng tôi hy vọng bạn thích hướng dẫn này. Đây chỉ là một vài trong số những chức năng mà nền tảng Stackdriver mang lại. Còn nhiều điều khác để khám phá. Hãy xem blog của Romin Irani (tác giả ban đầu của lớp học lập trình này) tại https://rominirani.com/ để biết thêm các hướng dẫn về Google Cloud Platform.

Bạn cũng có thể xem lớp học lập trình khác này có tên là "Sử dụng tính năng giám sát và ghi nhật ký của Stackdriver để nắm rõ hơn về tình trạng của ứng dụng".

Nếu bạn có ý kiến phản hồi hoặc muốn báo cáo vấn đề về lớp học lập trình này, vui lòng sử dụng đường liên kết "Vui lòng tìm lỗi" ở dưới cùng bên trái của trang này.