3.2 Phân tích và lựa chọn công nghệ
3.2.8 Công nghệ giám sát hệ thống và cảnh báo
Việc hiểu một ứng dụng hoạt động ra sao khi được triển khai là yếu tố quan trọng
để scale ứng dụng và cung cấp các dịch vụ đáng tin cậy. Trong một Kubernetes
cluster, hiệu năng hoạt động của ứng dụng có thể được kiểm tra ở nhiều mức độ khác nhau: container, pod, service và toàn bộ cluster.
Bản thân Kubernetes đã hỗ trợ giải pháp cung cấp cho người dùng thông tin chi tiết về tài nguyên sử dụng của các ứng dụng đang chạy thông qua Heapster. Heapster
chạy như một pod trong Kubernetes, tương tự như một ứng dụng Kubernetes bình
thường khác, và thực hiện việc truy vấn thông tin sử dụng từ Kubelet trên các máy. Bản thân Kubelet sẽ lấy dữ liệu từ cAdvisor, một agent phân tích hiệu năng và tài nguyên container, được phát triển cho container và tích hợp vào Kubelet.
Hình 3.12: Heapster trong Kubernetes [21]
Tuy nhiên, các thơng tin mà Heapster có thể thu thập chỉ từ nguồn cAdvisor là chưa đủ: các nhà phát triển thường muốn thu thập nhiều thông tin hơn như các thông tin ngay trong bản thân dịch vụ chạy trong container.
Prometheus là công cụ giám sát hệ thống được phát triển bởi SoundCloud và đã
được xuất bản như phần mềm mã nguồn mở. Prometheus hoạt động bằng cách thu
thập (Prometheus sử dụng thuật ngữ scrape) các mục tiêu, là các endpoints ở dạng
key-value. Prometheus sau đó sẽ lưu trữ thông tin thu thập được như một khung trong cơ sở dữ liệu theo thời gian (time series database), từ đó cho phép người dùng thực
hiện truy vấn đồ thị và các chức năng khác như cảnh báo.
Prometheus cho phép nhà phát triển thu thập thông tin của từng thư viện, từng dịch vụ bằng cách tích hợp thư viện Prometheus vào trong mã nguồn để xây dựng các thông tin (metrics) tùy biến. Đối với các thư viện với cách thức cung cấp thơng tin
khác, Prometheus có các exporter để chuyển đổi các thông tin đấy sang dạng thơng tin mà Prometheus có thể sử dụng.
Ngồi ra, bản thân mã nguồn Prometheus cũng cung cấp thành phần cảnh báo lỗi là AlertManager, giúp gửi thông tin tới các bên liên quan qua nhiều kênh giao tiếp khác nhau. Thông tin mà Prometheus cung cấp có thể được thể hiện trực quan qua các phần mềm bên thứ ba như Grafana.
Prometheus giúp đảm bảo mục đích đa dạng trong việc giám sát một hệ thống vi dịch vụ gồm nhiều container.
Hình 3.13: Kiến trúc Prometheus [22]