Google Cloud Monitoring: Hiểu về các loại số liệu

Tháng Mười 25, 2021
Nga Pham

Cho dù bạn đang di chuyển các ứng dụng của mình lên đám mây hay hiện đại hóa chúng bằng Kubernetes, việc giám sát khối lượng công việc dựa trên đám mây sẽ khó khăn hơn nhiều so với việc quan sát các triển khai truyền thống. Khi giám sát các nguyên khối tại chỗ, các nhóm vận hành có quyền xem toàn bộ ngăn xếp và sở hữu toàn quyền kiểm soát dữ liệu đo từ xa và cách thức chúng được thu thập (từ cơ sở hạ tầng, nền tảng đến dữ liệu ứng dụng). Nhưng trong các ứng dụng dựa trên đám mây, việc tổng hợp, tích hợp và phân tích phép do đo từ xa với khả năng hiển thị đầy đủ là phức tạp hơn vì:

  • Dữ liệu bắt nguồn từ nhiều nguồn hơn: ngoài dữ liệu đo từ xa từ các thành phần ứng dụng hoặc khối lượng công việc của bạn, dữ liệu đo từ xa từ cơ sở hạ tầng đám mây (máy ảo, cân bằng tải, v.v), nền tảng đám mây (Kubernetes, docker, v.v) và dịch vụ đám mây (lưu trữ, cơ sở dữ liệu, v.v) cũng cần được tích hợp.
  • Các hệ thống cung cấp mức độ hiển thị khác nhau: dữ liệu từ xa được thu thập từ nhiều nguồn khác nhau, đòi hỏi có các cơ chế khác nhau để thu thập dữ liệu. Một số nguồn cung cấp dữ liệu qua API, một số nguồn khác lại yêu cầu người dùng cài đặt tác nhân. Một số nguồn đẩy (push) dữ liệu đến một điểm cuối, một số nguồn lại yêu cầu người dùng kéo (pull) dữ liệu về từ một điểm cuối.
  • Mức độ chi tiết của việc thu thập, lưu giữ và tổng hợp dữ liệu có thể khác nhau: một số nguồn cung cấp dữ liệu với mức độ chi tiết nhỏ (tính bằng giây), một số nguồn lại chỉ hiển thị dữ liệu ở mức độ chi tiết thô hơn (phút). Một số dữ liệu đo từ xa được lưu giữ trong khoảng thời gian ngắn (ngày), một số dữ liệu khác được lưu giữ trong thời gian dài hơn (năm).

Ngoài các vấn đề kỹ thuật này, chi phí thực thi một giải pháp giám sát cũng là một vấn đề cần quan tâm. Giả sử rằng bạn chỉ có quyền kiểm soát một số dữ liệu chỉ số mà bạn có thể thu thập, chắc chắn bạn sẽ thắc mắc Tôi phải trả tiền cho dữ liệu đo từ xa nào và dữ liệu đo nào có sẵn miễn phí như một phần trong dịch vụ tôi đang sử dụng?

Mặc dù khả năng giám sát bao gồm các tín hiệu khác nhau, chẳng hạn như số liệu, sự kiện và log, bài đăng này sẽ tập trung vào ba khía cạnh của việc thu thập số liệu trong Google Cloud.

  1. Sự đa dạng của các loại số liệu thu thập được
  2. Cách các loại số liệu được thu thập
  3. Số liệu nào có thể bị tính phí và số liệu nào là miễn phí

Chúng ta sẽ khám phá những khía cạnh này thông qua ba dịch vụ: Google Compute Engine (GCE), Google Kubernetes Engine (GKE) và Google BigQuery (BQ). Ba ví dụ này đại diện cho các cấp độ kiểm soát khác nhau của người dùng trên các mức độ hiển thị của Dịch vụ đám mây của Google.

  1. GCE: Cung cấp quyền kiểm soát gần như toàn bộ việc triển khai các tác nhân để thu thập số liệu
  2. GKE: Cung cấp quyền kiểm soát một phần việc triển khai các tác nhân để thu thập số liệu
  3. BQ: Không cung cấp quyền kiểm soát việc triển khai các tác nhân để thu thập số liệu

Các loại số liệu

Có nhiều loại số liệu được thu thập trên ba loại dịch vụ này, nhưng chúng có thể được gom thành 4 nhóm lớn: System metrics (Số liệu hệ thống), Agent metrics (Số liệu tác nhân), User-defined metrics (Số liệu do người dùng xác định) và Logs-based metrics (Số liệu dựa trên nhật ký).

1. System metrics

Số liệu Hệ thống được đo lường và thu thập bởi Google Cloud, phản ánh tình trạng hoạt động của các dịch vụ được nền tảng quản lý. Bạn không cần phải triển khai một tác nhân để thu thập chúng, và những số liệu này sẽ được tự động gửi đến Google Cloud Monitoring.

Tùy thuộc vào ngữ cảnh sử dụng, các số liệu này có thể được gọi bằng các tên khác nhau, nhưng một cách tổng quát, chúng được xếp vào nhóm System Metrics. Số liệu Hệ thống còn được gọi là số liệu Google Cloud, số liệu GCP, số liệu tích hợp sẵn, số liệu do hệ thống xác định, số liệu nền tảng hay số liệu cơ sở hạ tầng. Các loại dịch vụ khác nhau cũng có thể sử dụng chúng với các thuật ngữ khác nhau, chẳng hạn như:

  • Người dùng Cơ sở hạ tầng như một dịch vụ (Infrastructure as a service – IaaS) có thể gọi chúng là Số liệu Cơ sở hạ tầng.
  • Người dùng Nền tảng như một dịch vụ (Platform as a service – PaaS) hay Vùng chứa như một dịch vụ (Containers as a service – CaaS) có thể gọi chúng là Số liệu Nền tảng.
  • Người dùng Phần mềm như một dịch vụ (Software as a service – SaaS) có thể gọi chúng là Số liệu Dịch vụ.

Bất kể là trong bối cảnh nào, chúng đều là số liệu được tích hợp sẵn. Khi được sử dụng trong bối cảnh dành cho một dịch vụ Google Cloud cụ thể, đôi khi bạn sẽ thấy chúng được gọi là:

  • Kubernetes metrics: được thu thập từ GKE. Các phiên bản cũ hơn của GKE gọi chúng container metrics. Các số liệu loại này có tiền tố là kubernetes.io. Đây là các số liệu tài nguyên cho vùng chứa, nhóm và nút trong cụm Kubernetes của bạn.
  • Anthos metrics: được thu thập từ Anthos tại chỗ và Anthos on bare metal. Tên của các số liệu loại này có tiền tố là kubernetes.io/anthos.
  • Istio metrics: được thu thập từ Istio trên Google Kubernetes Engine. Tên của các số liệu loại này có tiền tố là istio.io.
  • Knative metrics: được thu thập từ Knative trên Google Kubernetes Engine. Tên của các số liệu loại này có tiền tố là knative.dev.
2. Agent metrics

Số liệu Tác nhân đề cập đến một loạt các số liệu. Giống như tên của nó, Số liệu Tác nhân yêu cầu bạn cài đặt một tác nhân (tác nhân Cloud Monitoring hoặc tác nhân Ops) để thu thập số liệu. Các số liệu dựa trên tác nhân không yêu cầu nhà phát triển ứng dụng phải đo lường các chỉ số công cụ, đồng thời có sẵn dưới dạng pre-packaged receivers/collectors cần được định cấu hình trong tác nhân. Tác nhân do người dùng cài đặt thu thập số liệu thuộc các loại sau:

  • Resource metrics: số liệu về bất kỳ tài nguyên nào, bao gồm máy tính, mạng nội bộ hoặc bộ nhớ cho máy ảo. Các tài nguyên này có thể do Google Cloud quản lý (ví dụ: máy ảo GCE), khách hàng quản lý (ví dụ: máy chủ lưu trữ tại chỗ) hoặc tài nguyên trên một đám mây khác (máy ảo AWS).
  • Process metrics: số liệu tài nguyên được hiển thị ở mức độ cao, chẳng hạn như ở cấp máy ảo. Các chỉ số quy trình được phân tích chi tiết, bao gồm các phép đo như CPU, bộ nhớ, I/O, số luồng, v.v. cho các quy trình cụ thể (chẳng hạn như sao lưu dữ liệu) thực thi trong các máy ảo.
  • Third-party metrics: số liệu về bất kỳ phần mềm nguồn mở hoặc bên thứ ba nào chạy trong máy ảo (GCE hoặc một nơi nào đó khác), hoặc một vùng chứa (Nginx, Kafka, MySQL, v.v). Các số liệu này được hiển thị với mục đích phản ánh thông tin về các hoạt động nội bộ của các thành phần phần mềm.

Lưu ý: Tác nhân Ops cũng có thể thu thập các chỉ số về chính nó và có tiền tố trong tên là agent.googleapis.com/agent. Tên của các số liệu do tác nhân thu thập về các thành phần phần mềm khác có tiền tố là agent.googleapis.com/

3. User-defined metrics

Số liệu do người dùng xác định phản ánh các ứng dụng hoặc khối lượng công việc đã triển khai của người dùng, được xác định và đo lường bởi chính người dùng. Các loại số liệu do người dùng xác định có thể bao gồm:

  • Custom metrics: các số liệu tùy chỉnh có thể được thu thập bằng cách sử dụng thư viện máy khách, API giám sát đám mây hoặc bằng cách triển khai Tác nhân Ops, sau đó được nhập vào Cloud Monitoring. Chúng được xác định bằng tiền tố custom.googleapis.com.
  • Workload metrics: số liệu khối lượng công việc bao gồm nhiều loại dữ liệu được tạo ra bởi các ứng dụng chạy trên tài nguyên của bạn. Cho dù các ứng dụng này là nguyên khối, vùng chứa hay công việc xử lý dữ liệu ETL, bạn phải thiết lập mã nguồn của mình để tạo ra các số liệu cụ thể có liên quan đến nhiệm vụ đang thực hiện. Các số liệu này phản ánh thông tin về tài nguyên mà khối lượng công việc đang sử dụng (chẳng hạn như mức độ tiêu thụ bộ nhớ của các đối tượng ứng dụng hoặc số lượng bản ghi dữ liệu được xử lý bởi một công việc SPARC), hoặc có thể làm một số chỉ số kinh doanh (số lượng người dùng đặt hàng hoặc tổng lượng đô la được xử lý). Các số liệu này được xác định bằng tiền tố workload.googleapis.com trong tên. Một lần nữa, tùy thuộc vào ngữ cảnh, Workload metrics cũng có thể được gọi là Application metrics hay Job metrics.
  • External metrics: được thu thập từ các ứng dụng mã nguồn mở hoặc bên thứ ba. Các số liệu được gửi đến các dự án Google Cloud có tiền tố external.googleapis.com trong tên chính là external metrics.
  • Prometheus metrics: một số người dùng Kubernetes sử dụng Prometheus để giám sát môi trường Kubernetes của họ. Ngoài ra, họ truyền các số liệu Prometheus đến Google Cloud Monitoring để tận dụng các khả năng phong phú của nó. Bạn có thể định cấu hình Prometheus với Cloud Monitoring. Trong trường hợp này, các số liệu được xuất bởi Prometheus được chuyển đổi thành các loại số liệu Cloud Monitoring.
4. Logs-based metrics

Các số liệu dựa trên nhật ký được tạo ra từ nhật ký trong Cloud Logging. Các số liệu này có thể được tạo ra bằng cách đếm số lượng các nhật ký phù hợp với một mẫu nhất định, hoặc bằng cách trích xuất và tổng hợp các trường thông tin trong các sự kiện nhật ký cụ thể. Các số liệu dựa trên nhật ký sau đó được ghi vào Cloud Monitoring và có thể được sử dụng để đưa ra cảnh báo, lập biểu đồ và lập bảng điều khiển (dashboard). Các số liệu dựa trên nhật ký có hai loại: user-defined – do người dùng xác định (định nghĩa do bạn tạo ra) hoặc system-defined – do hệ thống xác định (định nghĩa có sẵn và bạn không thể sửa đổi chúng).

Thu thập số liệu

Số liệu được thu thập theo nhiều cách khác nhau, từ các dịch vụ của Google và từ ứng dụng của bạn đang chạy trên các dịch vụ của Google. Hãy cùng xem xét các cơ chế thu thập khác nhau mà không cần đi sâu vào từng loại số liệu cụ thể.

1. Thu thập số liệu từ GCE

Các số liệu GCE được thu thập bằng hai cơ chế khác nhau:

  • Như đã đề cập ở trên, việc thu thập số liệu hệ thống (hoặc số liệu cơ sở hạ tầng) cho GCE không yêu cầu bạn cài đặt bất kỳ tác nhân thu thập nào. Google sẽ tự động thu thập và đẩy các số liệu này vào dự án của bạn (xem hình 1). Các số liệu hệ thống thường được phân phối theo lô trước khi được nhập vào Cloud Monitoring.
  • Cơ chế thu thập các số liệu GCE thứ hai là cài đặt Tác nhân Ops hoặc tác nhân Monitoring. Việc cài đặt tác nhân mang lại cho bạn những lợi ích cụ thể trong hai lĩnh vực sau:
    – Thu thập số liệu hệ thống với mức độ chi tiết (dưới một phút) hoặc truy cập vào số liệu quy trình (process metrics) cho các quy trình Linux hoặc Windows riêng lẻ.
    – Khi các nhà phát triển của bạn triển khai ứng dụng của họ trong máy ảo GCE, họ cũng có thể tạo ra các số liệu ứng dụng (application metrics). Tác nhân thu thập và tải các số liệu vào dự án của bạn gần như ngay lập tức để phân tích, đưa ra cảnh báo và lập bảng điều khiển (dashboard) nhanh hơn.
1 GCE Matric data collection.jpg
Hình 1
2. Thu thập số liệu từ GKE (không có Prometheus)

Các số liệu GKE cũng được thu thập bằng hai cơ chế khác nhau khi bạn không sử dụng Prometheus. Kịch bản thu thập số liệu này hơi phức tạp vì một cụm GKE có một số nút do người dùng quản lý và một số nút – chẳng hạn như nút mặt phẳng điều khiển – do Google quản lý. Giống như môi trường GCE, các số liệu hệ thống được thu thập mà không cần đến việc triển khai tác nhân.

Với các nút GKE do khách hàng quản lý, các số liệu có thể được thu thập trên các tài nguyên khác nhau và khối lượng công việc khác nhau. Đối với máy ảo GCE (bên dưới các nút Kubernetes), số liệu hệ thống được Google thu thập và gửi đến các dự án đám mây của bạn. Bộ thu thập của Google được triển khai tự động trong các nút do khách hàng GKE quản lý khi cụm Kubernetes được tạo để thu thập các số liệu nền tảng. Những bộ thu thập này thu thập các số liệu của Kubernetes thông qua Kubelet và xuất bản chúng cho dự án của bạn.

2 GKE metric data collection.jpg
Hình 2

Đối với mặt phẳng điều khiển GKE, các nút do Google quản lý và số liệu từ các nút này không được xuất bản tới Cloud Monitoring. Tuy nhiên, các số liệu này được thu thập tự động và được sử dụng cho các quyết định mở rộng quy mô và quản lý tài nguyên bởi bộ lập lịch Kubernetes. Một lần nữa, để thu thập các số liệu này, người dùng không cần phải triển khai bất cứ phần mềm tác nhân này. Các bộ thu thập của Google được Google triển khai và quản lý khi các cụm được tạo.

Cuối cùng, các nhà phát triển của bạn có thể thu thập các số liệu tương tích với Prometheus từ các khối lượng công việc, chẳng hạn như CronJobs hoặc Developments, trên các cụm GKE bằng cách sử dụng một đường ống được quản lý đầy đủ và có thể định cấu hình từ Cloud Monitoring. Các nhà phát triển của bạn chỉ cần định cấu hình những số liệu cần thu thập, GKE sẽ thực hiện mọi công việc khác.

3. Thu thập số liệu từ GKE (với Prometheus)

Prometheus là một lựa chọn phổ biến để giám sát môi trường Kubernetes. Khách hàng triển khai ứng dụng của họ trong GKE có thể tiếp tục sử dụng Prometheus để giám sát hoạt động. Các số liệu được tạo bởi các dịch vụ sử dụng định dạng giải trình Prometheus có thể được xuất từ cụm và hiển trị trong Cloud Monitoring.

3 GKE metra data collection.jpg
Hình 3

Việc thu thập số liệu từ các nút mặt phẳng điều khiển trong trường hợp sử dụng này khá giống với trường hợp sử dụng không dùng Prometheus. Tuy nhiên, việc thu thập số liệu từ các nút công việc là khác nhau. Prometheus được triển khai bên trong một nút công việc Kubernetes (hình 3), loại bỏ các số liệu từ các nhóm và thông qua API Kubelet. Một adapter thu thập các số liệu từ Prometheus và tải chúng lên Cloud Monitoring.

Các số liệu miễn phí và tính phí

Các nhóm vận hành luôn quan tâm đến chi phí CNTT và cần có sự hiểu biết về những gì có thể bị tính phí và những gì không mất phí trong các công cụ giám sát, ghi nhật ký, chẩn đoán và khắc phục sự cố của họ. Hãy truy cập trang báo giá của Google Cloud để nắm được những thông tin cụ thể và hướng dẫn về những vấn đề này, cũng như ngưỡng cảnh báo mức tiêu thụ và hơn thế nữa. Trong số 4 loại số liệu lớn được đề cập ở trên, số liệu hệ thống là miễn phí và tất cả các loại số liệu khác đều có tính phí. Tuy nhiên, có hai ngoại lệ như sau. Mặc dù các số liệu do tác nhân thu thập có tính phí, nhưng các số liệu về bản thân tác nhân (trong namespace agent.googleapis.com/agent) không bị tính phí. Tương tự, mặc dù các số liệu dựa trên hật ký có thể bị tính phí nhưng các số liệu dựa trên nhật ký do hệ thống xác định là miễn phí. Hãy luôn tham khảo trang thông tin giá cả để cập nhật những thay đổi mới nhất.

Tổng kết

Khả năng giám sát các dịch vụ và khối lượng công việc dựa trên đám mây đòi hỏi sự hiểu biết về một loạt các số liệu khác nhau cần được thu thập và phân tích. Các số liệu này được phân loại thành số liệu hệ thống, số liệu tác nhân, số liệu do người dùng xác định và số liệu dựa trên nhật ký. Bài viết này đã thảo luận về các loại số liệu, kiến trúc chung được sử dụng để thu thập các số liệu này và tóm tắt ngắn gọn về thông tin giá cả của các số liệu trong Google Cloud Monitoring.

Theo Google Cloud Blog