0

Bài 29. Monitoring Kubernetes với Prometheus và Grafana

Làm sao biết ứng dụng của bạn đang "khỏe" hay sắp "ốm"?

"Ứng dụng vẫn chạy bình thường mà?"

Đó là câu nói rất nhiều người mới bắt đầu với Kubernetes từng nghĩ.

Cho đến một ngày...

  • Website bắt đầu chậm.
  • CPU tăng lên 95%.
  • Memory gần đầy.
  • Một vài Pod liên tục restart.

Lúc này, câu hỏi quan trọng không còn là:

"Ứng dụng có chạy không?"

Mà là:

"Ứng dụng đang hoạt động như thế nào?"

Đó chính là lúc Monitoring phát huy tác dụng.


1. Monitoring là gì?

Monitoring là quá trình liên tục thu thập và theo dõi các chỉ số (Metrics) của hệ thống.

Ví dụ:

  • CPU đang sử dụng bao nhiêu?
  • Memory còn bao nhiêu?
  • Có bao nhiêu Pod đang chạy?
  • Pod nào restart nhiều lần?
  • Request mỗi giây là bao nhiêu?
  • Thời gian phản hồi của API là bao lâu?

Nhờ Monitoring, bạn có thể phát hiện vấn đề trước khi người dùng phàn nàn.


2. Bộ đôi phổ biến nhất: Prometheus và Grafana

Trong thế giới Kubernetes, hai cái tên gần như luôn đi cùng nhau là:

  • Prometheus → Thu thập và lưu trữ Metrics.
  • Grafana → Hiển thị Metrics dưới dạng Dashboard đẹp mắt.

Có thể hình dung như sau:

Kubernetes Cluster
        │
        ▼
   Prometheus
(Thu thập Metrics)
        │
        ▼
    Time Series Database
        │
        ▼
     Grafana
(Vẽ Dashboard)

3. Prometheus làm gì?

Prometheus sẽ định kỳ hỏi các thành phần trong Kubernetes:

"CPU hiện tại là bao nhiêu?"

"Memory đang dùng bao nhiêu?"

"Có bao nhiêu Pod?"

Sau đó lưu tất cả các số liệu này theo thời gian.

Nhờ vậy bạn có thể xem:

  • CPU tăng từ lúc nào?
  • Memory tăng trong bao lâu?
  • Pod bắt đầu restart từ thời điểm nào?

4. Grafana làm gì?

Nếu Prometheus chỉ lưu những con số, thì Grafana sẽ biến chúng thành biểu đồ trực quan.

Ví dụ một Dashboard có thể hiển thị:

  • CPU Usage
  • Memory Usage
  • Network Traffic
  • Pod Status
  • Number of Requests
  • Error Rate

Chỉ cần mở Dashboard, bạn có thể biết ngay toàn bộ Cluster đang hoạt động ra sao.


5. Monitoring giúp ích gì?

Giả sử người dùng phản ánh:

"Website hôm nay chậm quá."

Thay vì đoán nguyên nhân, bạn chỉ cần mở Grafana và thấy:

  • CPU tăng lên 98%
  • Memory gần đầy
  • Một Pod restart liên tục

Bạn đã có đủ dữ liệu để bắt đầu điều tra, thay vì "mò trong bóng tối".


Những chỉ số nên theo dõi

Khi mới bắt đầu, bạn chưa cần theo dõi mọi thứ. Hãy tập trung vào những Metrics quan trọng nhất:

  • CPU Usage
  • Memory Usage
  • Pod Restart Count
  • Running Pods
  • Request Rate
  • Error Rate
  • Response Time

Chỉ với những chỉ số này, bạn đã có thể quan sát được phần lớn tình trạng của ứng dụng.


Tổng kết

Monitoring giống như bảng đồng hồ trên ô tô.

Bạn vẫn có thể lái xe mà không nhìn đồng hồ, nhưng sẽ rất khó biết:

  • Xe có đang quá nóng không?
  • Xăng còn bao nhiêu?
  • Động cơ có đang gặp vấn đề không?

Kubernetes cũng vậy. Một ứng dụng có thể vẫn đang chạy, nhưng điều đó không có nghĩa là nó đang khỏe.

Prometheus giúp thu thập dữ liệu, còn Grafana giúp biến dữ liệu thành những biểu đồ dễ hiểu. Đây là bộ đôi gần như không thể thiếu khi vận hành Kubernetes trong môi trường thực tế.


Bài tiếp theo

Theo dõi được hệ thống mới chỉ là bước đầu. Nếu phát hiện CPU luôn ở mức 90%, làm sao để Kubernetes tự động tạo thêm Pod mà không cần bạn can thiệp?

Đó sẽ là chủ đề của bài tiếp theo:

Horizontal Pod Autoscaler (HPA) – Tự động mở rộng ứng dụng khi lưu lượng tăng.


All Rights Reserved

Viblo
Let's register a Viblo Account to get more interesting posts.