1. Giới thiệu
Trong lớp học lập trình này, bạn sẽ tìm hiểu cách sử dụng các công cụ ghi nhật ký và giám sát có sẵn dành cho tất cả các nhà phát triển làm việc với Cloud Functions. Các công cụ này đi kèm với mọi Chức năng đám mây mà bạn triển khai trên tất cả các ngôn ngữ được hỗ trợ và sẽ giúp bạn làm việc hiệu quả hơn khi viết và vận hành mã không máy chủ.
Bạn sẽ sử dụng Hàm đám mây được kích hoạt bằng HTTP, nhưng mọi nội dung bạn đề cập cũng sẽ áp dụng cho các ngôn ngữ khác cũng như các Hàm đám mây do các sự kiện khác kích hoạt.
2. Thiết lập và yêu cầu
Thiết lập môi trường theo tiến độ riêng
- Đăng nhập vào Cloud Console rồi tạo dự án mới hoặc sử dụng lại dự án hiện có. (Nếu chưa có tài khoản Gmail hoặc G Suite, bạn phải tạo một tài khoản.)
Xin lưu ý rằng mã dự án là một tên riêng biệt trong tất cả dự án Google Cloud (tên ở trên đã được sử dụng nên sẽ không phù hợp với bạn!). Lớp này sẽ được đề cập sau trong lớp học lập trình này là PROJECT_ID
.
- Tiếp theo, bạn sẽ cần bật tính năng thanh toán trong Cloud Console để sử dụng tài nguyên của Google Cloud.
Việc chạy qua lớp học lập trình này sẽ không tốn nhiều chi phí. Hãy nhớ làm theo mọi hướng dẫn trong phần "Dọn dẹp" sẽ tư vấn cho bạn cách tắt tài nguyên để bạn không phải chịu thanh toán ngoài hướng dẫn này. Người dùng mới của Google Cloud đủ điều kiện tham gia chương trình Dùng thử miễn phí 300 USD.
Cloud Shell
Mặc dù bạn có thể sử dụng Cloud Functions cùng các tính năng ghi nhật ký và giám sát của tính năng này từ xa trên máy tính xách tay, nhưng bạn sẽ sử dụng Cloud Shell, một môi trường dòng lệnh chạy trong Google Cloud.
Máy ảo dựa trên Debian này được tải tất cả các công cụ phát triển mà bạn cần. Dịch vụ này cung cấp thư mục gốc 5 GB ổn định và chạy trong Google Cloud, giúp nâng cao đáng kể hiệu suất và khả năng xác thực của mạng. Tức là tất cả những gì bạn cần để thực hiện lớp học lập trình này là một trình duyệt (vâng, trình duyệt này hoạt động trên Chromebook).
- Để kích hoạt Cloud Shell trong Cloud Console, bạn chỉ cần nhấp vào Kích hoạt Cloud Shell (chỉ mất vài phút để cấp phép và kết nối với môi trường).
Sau khi kết nối với Cloud Shell, bạn sẽ thấy mình đã được xác thực và dự án đã được đặt thành PROJECT_ID
.
gcloud auth list
Kết quả lệnh
Credentialed accounts: - <myaccount>@<mydomain>.com (active)
gcloud config list project
Kết quả lệnh
[core] project = <PROJECT_ID>
Nếu vì lý do nào đó mà dự án không được thiết lập, chỉ cần phát hành lệnh sau:
gcloud config set project <PROJECT_ID>
Bạn đang tìm PROJECT_ID
? Hãy xem mã nhận dạng bạn đã sử dụng ở các bước thiết lập hoặc tra cứu trong trang tổng quan Cloud Console:
Cloud Shell cũng đặt một số biến môi trường theo mặc định. Điều này có thể hữu ích khi bạn chạy các lệnh sau này.
echo $GOOGLE_CLOUD_PROJECT
Kết quả lệnh
<PROJECT_ID>
- Cuối cùng, đặ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 vùng khác nhau. Để biết thêm thông tin, hãy xem Khu vực và Vùng.
3. Triển khai một hàm đám mây đơn giản
Để có nội dung cần giám sát, hãy tạo một thư "Hello, World" ("Xin chào thế giới") Chức năng đám mây. Trong trình đơn bên trái của Google Cloud Console, hãy nhấp vào Cloud Functions, sau đó nhấp vào Create Function.
Nhập "hello-monitor" là tên của Chức năng đám mây mới.
Giữ tất cả giá trị mặc định cho mã nguồn. (Tuy nhiên, bạn có thể chọn ngôn ngữ/thời gian chạy khác nếu muốn.)
Cuối cùng, hãy nhấp vào Tạo.
Bạn sẽ thấy Chức năng đám mây của mình được đánh dấu kiểm màu xanh lục bên cạnh, nghĩa là chức năng này đã sẵn sàng được gọi.
4. Kiểm thử hàm đám mây và gửi lưu lượng truy cập bằng trình tạo tải
Bây giờ, khi đã triển khai thành công Hàm đám mây, hãy kiểm thử hàm này từ dòng lệnh.
Trước tiên, sử dụng Cloud Shell, phát lệnh sau:
$ gcloud functions describe hello-monitor
Thao tác này sẽ trả về nội dung mô tả về Hàm đám mây, bao gồm cả URL của httpsTrigger
, là điểm cuối HTTP(S) để gọi Hàm đám mây. Mã sẽ có dạng như sau: https://<region>-<project-id>.cloudfunctions.net/hello-monitor.
Giờ đây, bạn có thể kích hoạt Chức năng đám mây bằng cách sử dụng lệnh curl
trên URL đó.
$ curl https://<region>-<project-id>.cloudfunctions.net/hello-monitor Hello World!
Bây giờ, hãy sử dụng Vegeta, một công cụ kiểm tra tải HTTP đơn giản. Để cài đặt ứng dụng này, từ Cloud Shell, chỉ cần nhập lệnh sau :
$ go get -u github.com/tsenart/vegeta
Để gửi một số lưu lượng truy cập đến Chức năng đám mây của bạn (5 yêu cầu mỗi giây trong vài phút), hãy sử dụng lệnh sau:
$ echo "GET https://<region>-<project-id>.cloudfunctions.net/hello-monitor" \ | vegeta attack -rate=5 -duration=120s \ > results.bin
5. Di chuyển qua nhật ký
Trong chế độ xem chi tiết về Hàm đám mây, hãy nhấp vào Xem nhật ký.
Thao tác này sẽ đưa bạn đến phần Ghi nhật ký Stackdriver trong dự án của bạn. Phần này chỉ cho bạn thấy nhật ký Cloud Function của bạn.
Tất cả các yêu cầu gửi đến Chức năng đám mây của bạn phải trả về mã trạng thái 200.
Khi xem nhật ký, bạn có thể thực hiện các thao tác sau:
- Lọc theo cấp độ nhật ký (trong trường hợp của bạn, tất cả nhật ký đều ở cấp
debug
). - Chọn khung thời gian cụ thể (tương đối hoặc tuyệt đối).
- Bật tính năng truyền trực tuyến nhật ký (bằng tính năng Phát ở đầu màn hình).
- Sao chép một đường liên kết vào mục nhập nhật ký (để chia sẻ với các thành viên trong nhóm).
- Hiển thị mục nhập nhật ký trong ngữ cảnh tài nguyên.
- Ghim một mục nhập nhật ký (dưới dạng tín hiệu hình ảnh).
- Xuất nhật ký sang BigQuery, Cloud Storage hoặc Pub/Sub (hoặc chỉ cần tải xuống dưới dạng tệp JSON hoặc CSV).
6. Cập nhật hàm
Khi sử dụng Cloud Console, hãy chuyển đến chế độ xem Thông tin chi tiết về hàm và quan sát mức tăng đột biến mà bạn đã tạo với trình kiểm thử tải về số lệnh gọi mỗi giây và thời gian thực thi các lệnh gọi đó.
Một công cụ chi tiết khác để quan sát độ trễ và lệnh gọi RPC là Stackdriver Trace, nhưng trước khi có thể sử dụng công cụ này, bạn cần thực hiện một vài thay đổi đối với Cloud Functions. Hãy thực hiện như sau:
- Thêm gói
node-emoji
cứu hộ làm phần phụ thuộc. - Cập nhật mã hàm để sử dụng mô-đun nút-emoji và tạo ra độ trễ.
- Thêm một biến môi trường để bật tính năng Dấu vết ngăn xếp cho Cloud Functions.
Trong phần Thông tin chi tiết về hàm, hãy nhấp vào Chỉnh sửa để sửa đổi hàm đó.
Chỉnh sửa tệp package.json
để thêm phần phụ thuộc cho gói node-emoji
.
{
"name": "sample-http",
"version": "0.0.1",
"dependencies": {
"node-emoji": "^1.8.1"
}
}
Chỉnh sửa hàm thực tế bằng cách thay đổi nội dung của index.js
thành như sau:
const emoji = require('node-emoji');
exports.helloWorld = (req, res) => {
let message = req.query.message || req.body.message || 'Hello World!';
// add some latency, functions are too quick!
setTimeout(function() {
message += emoji.random().emoji;
res.status(200).send(message);
}, (3 * 100)); // 300ms
};
Thao tác này sẽ thêm một biểu tượng cảm xúc ngẫu nhiên vào thông báo do Hàm đám mây trả về sau khi tạm dừng 300 mili giây.
Cuối cùng, hãy thêm một biến môi trường của Hàm đám mây có tên là GOOGLE_CLOUD_TRACE_ENABLED
rồi thiết lập thành true
như sau:
Nhấp vào Lưu.
Quay lại Cloud Shell và gọi lại lệnh để tạo một số tải cho Hàm đám mây mới triển khai:
$ echo "GET https://<region>-<project-id>.cloudfunctions.net/hello-monitor" \ | vegeta attack -rate=5 -duration=120s \ > results.bin
Bây giờ, bạn đã sẵn sàng quan sát danh sách các dấu vết được tạo mà không có yêu cầu thiết lập nào khác cũng như không có thư viện theo dõi cụ thể nào trong mã của mình!
7. Theo dõi hàm đám mây đã cập nhật
Sử dụng trình đơn bên trái, chuyển đến Danh sách theo dõi (trong phần Stackdriver Trace).
Bạn sẽ thấy nội dung tương tự như ảnh chụp màn hình sau:
Điều đó sẽ làm rõ ràng rằng độ trễ được giới thiệu trong Hàm đám mây thực sự được đo ở 300 mili giây.
Mỗi dấu chấm trên biểu đồ là một yêu cầu mà bạn có thể xem thông tin chi tiết, chẳng hạn như dấu thời gian, phương thức và trạng thái HTTP, nhãn, đường liên kết đến mục nhập nhật ký tương ứng và mọi lệnh gọi RPC tiếp theo mà Hàm đám mây thực hiện.
Nếu bạn muốn phóng to, chỉ cần nhấp và kéo trên biểu đồ.
Để thu nhỏ, hãy nhấp vào Huỷ thu phóng ở đầu trang.
Vì bạn đã triển khai một Hàm đám mây duy nhất, nên biểu đồ chỉ hiển thị các yêu cầu GET
trên URI hello-monitor
, nhưng bạn có thể lọc dấu vết theo phương thức HTTP (GET, POST, DELETE) theo trạng thái HTTP (2XX, 3XX) hoặc bằng bộ lọc yêu cầu.
Chuyển đến mục Tổng quan trong trình đơn bên trái:
Trên trang tổng quan này, bạn có thể tìm thấy các dấu vết gần đây và các thông tin chi tiết khác.
Bạn cũng có thể tìm thấy khả năng tạo báo cáo tuỳ chỉnh dựa trên sự kết hợp giữa bộ lọc yêu cầu URI, phương thức HTTP, trạng thái HTTP và phạm vi thời gian. Tính năng này thậm chí còn cho phép bạn so sánh các giá trị đã tạo với một đường cơ sở thời gian.
Nếu có thể thiết lập khoảng thời gian chính xác với đủ điểm dữ liệu, bạn có thể tạo một báo cáo cho thấy sự thay đổi quan trọng về độ trễ giữa Hàm đám mây ban đầu và hàm mới.
Loại báo cáo tuỳ chỉnh này có thể dùng để tìm thời điểm xảy ra vấn đề về hiệu suất và để theo dõi chỉ báo mức dịch vụ (SLI), chẳng hạn như độ trễ yêu cầu của người dùng cuối.
8. Đã đến lúc dọn dẹp tài nguyên
Lớp học lập trình đã kết thúc!
Mặc dù các công cụ Cloud Functions và Stackdriver là những nền tảng không máy chủ và không phát sinh chi phí khi không được sử dụng, nhưng hãy sử dụng dịch vụ đám mây tốt và xoá Hàm đám mây của bạn. Chỉ cần chọn hello-monitor
trong mục Overview (Tổng quan) trong Cloud Functions rồi nhấp vào Delete (Xoá).
9. Tiếp theo là gì?
Sau đây là một số thông tin mà bạn cần đọc tiếp:
/