Chào các bạn,
Các bạn là một IT sysadmin thì việc giám sát hệ thống hay gọi tắt là monitor là việc không thể bỏ qua. Khi ứng dụng được triển khai lên production là luôn phải theo dõi, giám sát, theo dõi các thông tin hệ thống (Logs, CPU, RAM, disks, IO operations,...) xác định những thời điểm, khoảng thời gian ảnh hưởng xấu tới hiệu suất của ứng dụng mục đích là đảm bảo ứng dụng luôn hoạt động ổn định. Bài viết hôm nay mình chia sẻ các bạn cách giám sát hệ thống đơn giản với Prometheus và Grafana.
1. Tổng quan
1.1 Prometheus
Prometheus được dùng để giám sát hệ thống thông qua các daemon cài sẵn trên các node, qua đó thu thập các thông tin cần thiết. Prometheus giao tiếp với node qua giao thức http/https và lưu trữ data theo dạng time-series database (TSDB).
Time series database (TSDB) là những database được lưu trữ theo các mốc thời gian. Nghĩa là mỗi dữ liệu luôn được gắn với một mốc thời gian nhất đinh từ đó tạo thành chuỗi dữ liêu theo thời gian từ đó giúp chúng ta có thể xem lại dữ liệu cho một khoảng thời gian 1 giờ hay 1 tiếng.
- Prometheus sẽ thực hiện quá trình kéo (pull) các thông số/số liệu (metric) từ các job (exporter).
- Prometheus sẽ lưu trữ các dữ liệu thu thập được ở local máy chủ.
- Prometheus sẽ chạy các rule để xử lý các dữ liệu theo nhu cầu cũng như kiểm tra thực hiện các cảnh báo mà bạn mong muốn.
1.2 Grafana
Grafana là một vizualizer hiển thị các metric dưới dạng các biểu đồ (chart) hoặc đồ thị (graph), được tập hợp lại thành dashboard có tính tùy biến cao, giúp dễ dàng theo dõi tình trạng của node. Đơn giản cho các bạn dễ hiểu là sau khi lấy được metric từ các thiết bị, grafana sẽ sử dụng metric đó để phân tích và tạo ra dashboard mô tả trực quan các metric cần thiết cho việc monitoring như CPU, RAM, disks, IO operations...
2. Cài đặt Prometheus Grafana
Sau khi thông não chút lí thuyết về Prometheus Grafana bây giờ mình đi tiến hành cài thôi!! 🤓🤯
Trong bài viết này mình hướng dẫn các bạn cài Prometheus Grafana bằng docker đơn giản và nhanh gọn lẹ (P/S có nhiều cách cài Prometheus Grafana các bạn lên hỏi anh GG là ra cả núi nhé 😜)
Các bạn vào đây clone repo về và lưu ý mình 2 file chính đó là docker-compose.yml
và prometheus.yml
Đầu tiên là VPS hoặc máy ảo các bạn chưa cài docker thì các bạn phải cài docker vì mình đang cài trên docker. Bạn nào chưa biết docker là gì thì xem hướng dẫn ở đây
2.1 Cài docker
sudo apt-get install apt-transport-https ca-certificates curl gnupg-agent software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
sudo apt-get update && sudo apt-get install docker-ce docker-ce-cli containerd.io
sudo curl -L "https://github.com/docker/compose/releases/download/1.26.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
sudo usermod -aG docker $USER
newgrp docker
(Note: Ở đây mình dùng VPS hệ điều hành (OS) Ubuntu 20.04LTS. Nền tảng khác các bạn cũng làm tương tự nhé)
2.2 Cài đặt Prometheus Grafana
Các bạn tạo một folder prometheus
sau đó copy file prometheus.yml
clone từ repo ở trên vào.
mkdir -p /etc/prometheus
cp prometheus.yml /etc/prometheus
Xem qua file docker-compose.yml
để ý biến môi trường nếu các bạn không dùng domain thì các bạn comment dòng biến môi trường này lại.
Chạy lệnh sau để cài đặt
docker-compose up -d
Sau khi cài đặt xong các bạn chạy lệnh sau để kiểm tra
docker-compose ps
Các bạn quan sát thấy có 4 container được tạo ra cadvitor, grafana, node_exporter, prometheus như hình trên là OK rồi nhé Để ý container grafana đang dùng port 3000. Vào trình duyệt Chorme, Firefox... đăng nhập IP VPS của các bạn và port 3000 của grafana. User và password mặc định là admin / admin các bạn đổi lại password mới sau đó nếu muốn.
- Bước đầu tiên các bạn thêm cho mình một data source để lưu lại trước vào cấu hình sau
- Tiếp đến các bạn load mẫu dasdboard ID hoặc dạng file json từ trang chủ của grafana ở đây. Muốn ID nào bỏ vào ô tìm kiếm nhoé.
Ở đây mình lấy ID 1860
- Sau khi load lên các bạn có một dasdboard như này
Các thông tin CPU, Mem, Disk... được thể hiện cụ thể và chi tiết các bạn click vào để xem chi tiết từng option.
Video cụ thể mình để bên dưới các bạn tham khảo thêm
3. Tổng kết
Việc giám sát hệ thống khá quan trọng đặc biệt khi các bạn triển khai ứng dụng lên môi trường production. Hi vọng qua bài viết này các bạn có được thêm một công cụ để giám sát hệ thống của mình. Prometheus Grafana còn nhiều điều để khai phá nữa đây mới chỉ là bước đầu hẹn gặp các bạn ở các bài viết sau. Các bạn có đóng góp ý kiến để lại bình luận bên dưới nhoé. Chúc các bạn thành công.!