Việc theo dõi phòng lab tại nhà (home lab) và quản lý các tệp log có thể ngốn rất nhiều thời gian và công sức. Tuy nhiên, nhiều giải pháp tự động đã ra đời nhằm đơn giản hóa quy trình này, đồng thời giúp bạn trực quan hóa những gì đang diễn ra trong hệ thống. Trong số đó, Grafana Alloy (phiên bản kế nhiệm của Promtail) và Prometheus là những công cụ giám sát hệ thống mạnh mẽ. Bằng cách kết hợp Grafana, Alloy, Loki để quản lý log, cùng với Prometheus để thu thập dữ liệu hệ thống máy chủ, chúng tôi đã xây dựng một hệ thống giám sát tối ưu, có khả năng theo dõi tất cả các máy trong home lab của mình một cách hiệu quả.
Quá trình thiết lập giải pháp này khá đơn giản và chỉ mất khoảng năm phút theo hướng dẫn chính thức của Grafana về cách triển khai cấu hình tương tự. Chúng tôi sau đó đã phát triển thêm một bước, để minh họa cách thu thập dữ liệu từ máy chủ Proxmox, một công cụ ảo hóa phổ biến trong cộng đồng home lab tại Việt Nam.
Tại sao cần giám sát hệ thống tập trung trong Home Lab?
Quản lý dễ dàng hơn khi mọi thứ ở một nơi
Giao diện người dùng Proxmox trên laptop, minh họa việc quản lý các máy ảo trong home lab
Đối với những người đam mê home lab có nhiều máy ảo (VM), máy chủ và container khác nhau, việc theo dõi tất cả chúng và đảm bảo mọi thứ vẫn hoạt động trơn tru có thể trở nên khó khăn. Ví dụ điển hình, chúng tôi có một container Frigate đôi khi đột ngột sử dụng 100% bộ nhớ được cấp phát, 100% CPU và 100% swap. Chúng tôi chỉ nhận ra vấn đề khi thẻ Frigate không còn hoạt động trong Home Assistant, hoặc khi đi ngang qua hành lang và nghe tiếng quạt của chiếc mini PC chạy hết công suất.
Tuy nhiên, với một hệ thống giám sát tập trung, việc này sẽ trở nên cực kỳ dễ dàng khi mọi thông tin được hiển thị trên một vài dashboard trong Grafana. Chúng ta sẽ không cần phải kiểm tra từng container, từng máy ảo riêng lẻ, hay thậm chí là giao diện người dùng của Proxmox host. Phần Proxmox sẽ được đề cập chi tiết hơn vì nó có một chút khác biệt, nhưng việc giám sát bất kỳ container hay máy ảo nào cũng vô cùng đơn giản. Một khi đã thiết lập xong, bạn có thể dễ dàng thêm nhiều thiết bị hơn và coi Grafana như một nguồn tài nguyên tập trung để theo dõi tất cả phần mềm của mình.
Đối với người mới bắt đầu, một hệ thống giám sát phức tạp như thế này có thể chưa thực sự cần thiết. Nhưng khi bạn nhận thấy việc theo dõi các phần mềm đang chạy trở nên khó kiểm soát, đó là lúc một dịch vụ giám sát bên ngoài phát huy tác dụng. Dù cần một chút thiết lập ban đầu để mọi thứ hoạt động chính xác, kết quả cuối cùng mang lại hiệu quả tuyệt vời và đáng giá.
Hướng dẫn giám sát mọi hệ thống Linux bằng Grafana
Khởi động nhanh với Docker Compose dựng sẵn
Các bước dưới đây được lấy từ tài liệu chính thức của Grafana và bạn hoàn toàn có thể tùy chỉnh các tệp cấu hình để phù hợp với nhu cầu cụ thể của mình. Tuy nhiên, hãy lưu ý rằng dashboard sẽ sử dụng tất cả dữ liệu được xuất ra, nên việc thay đổi cấu hình có thể đòi hỏi bạn phải tạo dashboard riêng hoặc sửa đổi dashboard hiện có. Để bắt đầu, trước tiên hãy đảm bảo bạn đã cài đặt Docker và Git, sau đó chạy các lệnh sau trong terminal:
git clone https://github.com/grafana/alloy-scenarios.git
cd alloy-scenarios/linux
docker compose up -d
Chỉ vậy thôi! Các container Docker sẽ khởi động, triển khai Grafana, Prometheus, Loki và Alloy. Sau đó, bạn có thể truy cập vào phiên bản Grafana của mình tại địa chỉ (địa_chỉ_IP_máy_chủ):3000
để xem dữ liệu đang được thu thập. Có một tệp JSON được cấu hình sẵn mà bạn có thể import làm dashboard để trực quan hóa tất cả dữ liệu đã thu thập. Cấu hình này đủ để triển khai trên bất kỳ môi trường Linux nào có khả năng chạy container.
Nhưng còn Proxmox thì sao? Có một công cụ tuyệt vời, dễ sử dụng tận dụng API của Proxmox để kéo dữ liệu từ các node của bạn.
Giám sát Proxmox trong Grafana
Tích hợp dễ dàng chỉ với một container Docker bổ sung
Dashboard Grafana hiển thị dữ liệu giám sát thu thập từ một node Proxmox, trực quan hóa hiệu suất hệ thống
Chúng ta sẽ tiếp tục sử dụng Docker, kết hợp với dự án Prometheus PVE Exporter. Chúng ta cũng có thể sử dụng cùng stack Grafana mà chúng ta đã dùng để giám sát máy ảo Linux. Vì vậy, nếu bạn đã có nó hoạt động, hãy cứ để nó chạy. Chúng ta sẽ đưa dữ liệu vào phiên bản đó và trực quan hóa nó tại đó.
Để triển khai PVE Exporter bằng Docker, trước tiên hãy tạo một thư mục mà bạn muốn lưu trữ thông tin đăng nhập Proxmox của mình. Trong thư mục đó, tạo một tệp có tên “pve.yml”. Sau đó, bạn sẽ muốn tạo một người dùng mới trên máy chủ Proxmox với vai trò PVEAuditor. Vai trò này chỉ cho phép người dùng đọc, không ghi, các chỉ số hệ thống của bạn. Sau đó, bạn có thể tạo một token cho người dùng đó để đăng nhập, hoặc sử dụng tên người dùng và mật khẩu trong PVE Exporter. Cả hai đều hoạt động, nhưng sử dụng token an toàn hơn vì bạn có thể thu hồi nó bất cứ lúc nào.
Khi đã cấu hình xong, hãy thêm nội dung này vào tệp pve.yml
của bạn:
default:
user: prometheus@pve
password: sEcr3T!
# Optional: set to false to skip SSL/TLS verification
verify_ssl: true
Hãy đảm bảo bạn sử dụng đúng cấu trúc thụt lề. Sau đó, chạy lệnh sau để tải xuống Docker image:
docker pull prompve/prometheus-pve-exporter
Tiếp theo, chạy container của bạn, trong đó chúng ta sẽ chỉ định đường dẫn tới tệp pve.yml
để kết nối với Proxmox:
docker run --init --name prometheus-pve-exporter -d -p 0.0.0.0:9221 -v /path/to/pve.yml:/etc/prometheus/pve.yml prompve/prometheus-pve-exporter
Trong trình duyệt, nếu bạn truy cập vào (IP_máy_ảo):9221/pve?target=(IP_Proxmox)
, bạn sẽ thấy rất nhiều chỉ số được thu thập từ Prometheus. Nếu bạn thấy lỗi “internal server error”, hãy sử dụng lệnh docker logs
để xem lỗi là gì. Nhưng làm thế nào để chúng ta đưa dữ liệu vào Prometheus?
Cấu hình Prometheus để thu thập dữ liệu Proxmox
Cấu hình prom-config.yaml của Prometheus, hiển thị các mục scrape job để thu thập dữ liệu từ PVE Exporter
Quay lại thư mục bạn đã tạo phiên bản Grafana ban đầu và sửa đổi tệp “prom-config.yaml”. Cấu hình của chúng tôi trông giống như hình trên, nhưng GitHub của PVE Exporter cũng cung cấp một cấu hình mẫu mà bạn có thể thêm vào. Sau khi đã thêm, hãy gõ các lệnh sau:
docker compose down
docker compose up -d
Các lệnh này sẽ khởi động lại container Docker của bạn, áp dụng cấu hình Prometheus mới để scrape dữ liệu từ PVE Exporter.
Trực quan hóa dữ liệu Proxmox với Dashboard Grafana
Cuối cùng, chúng ta có thể biểu diễn dữ liệu Proxmox của mình bằng dashboard Grafana “Proxmox via Prometheus”, mà bạn có thể nhập vào phiên bản Grafana hiện có của mình. Dashboard này có sẵn tại Grafana Labs với ID 10347.
Vậy là xong! Bạn có thể theo dõi nhiều node Proxmox từ PVE Exporter để kiểm tra chúng, và nó cũng hỗ trợ các cụm Proxmox nếu bạn có triển khai. Đây là một cách nhanh chóng và dễ dàng để theo dõi các máy chủ tự host của bạn, và giao diện trực quan cũng rất thân thiện.
Có rất nhiều cách để mở rộng hệ thống này. Nếu bạn sử dụng Home Assistant, bạn có thể thiết lập tự động chụp màn hình trong Grafana để kéo chúng vào một dashboard Home Assistant. Có rất nhiều không gian để cải tiến và thử nghiệm tại đây, và nó thực sự xứng đáng để có một trung tâm duy nhất để theo dõi mọi thứ bạn tự host.
Tài liệu tham khảo:
- Grafana Labs: Monitor Linux with Grafana Alloy
- GitHub: Prometheus PVE Exporter
- Grafana Labs: Proxmox via Prometheus Dashboard