Tạo server monitor dashboard "xịn xò" với Prometheus, Node Exporter và Grafana
Bài đăng này đã không được cập nhật trong 2 năm
Mở đầu
Thông thường để xem các thông số hệ thống như CPU, RAM, ổ cứng bạn hoàn toàn có thể sử dụng command line để xem các thông tin đó. Tuy nhiên để để thuận tiện hơn cho việc quan sát những thông số về hệ thống chúng ta cần có những giải pháp trực quan, tiện lợi giúp cho những công việc đó trở nên đơn giản hơn. Chúng ta sẽ cùng nhau xây dựng một dashboard giúp quan sát những thông số đó bằng cách sử dụng Prometheus
. Nếu bạn chưa biết về Prometheus
mình đã có bài viết giới thiệu về Prometheus. Các bạn hãy đọc bài viết trước và cài đặt Prometheus
trước khi tiếp tục đọc bài viết này. Như đã nói trong bài viết trước chúng ta có thể sử dụng các exporter
cho việc xuất các dữ liệu cần thiết cho Prometheus
. Trong bài viết này mình sẽ sử dụng một exporter để xuất dữ liệu về hệ thống như các thông số về CPU, RAM, ... cho Prometheus
đó là Node Exporter
.
Cài đặt Node Exporter
Việc thiết lập cài đặt Node Exporter
khá giống với việc chúng ta cài đặt Prometheus
trong bài viết trước. Chúng ta cùng nhau cài đặt Node Exporter
như một service chạy trên hệ điều hành Linux của chúng ta.
Đầu tiên chúng ta cần tải phiên bản mới nhất của Node Exporter
về. Các bạn có thể tìm kiếm phiên bản của Node Exporter
tại https://prometheus.io/download/.
$ wget https://github.com/prometheus/node_exporter/releases/download/v1.0.1/node_exporter-1.0.1.linux-amd64.tar.gz
Tiếp theo là giải nén thư mục chúng ta vừa mới tải về:
$ tar xvzf node_exporter-1.0.1.linux-amd64.tar.gz
Tạo một user cho việc quản lý exporter:
$ sudo useradd -rs /bin/false node_exporter
Copy binary file trong thư mục đã giải nén tới địa chỉ /usr/local/bin
:
$ cd node_exporter-1.0.1.linux-amd64/
$ cp node_exporter /usr/local/bin
Thiết lập quyền cho binary file:
$ chown node_exporter:node_exporter /usr/local/bin/node_exporter
Tạo một service cho việc chạy Node Exporter
$ cd /lib/systemd/system
$ sudo vim node_exporter.service
Thêm nội dung như sau vào service file:
[Unit]
Description=Node Exporter
After=network-online.target
[Service]
User=node_exporter
Group=node_exporter
Type=simple
ExecStart=/usr/local/bin/node_exporter
[Install]
WantedBy=multi-user.target
Khởi chạy service chúng ta vừa mới tạo:
$ sudo systemctl daemon-reload
$ sudo systemctl start node_exporter
Kiểm tra service với lệnh:
sudo systemctl status node_exporter
Như hình bên trên là service của chúng ta đã hoạt động. Mặc định của Node Exporter
sẽ hoạt động tại cổng 9100
.
Chúng ta có thể kiểm tra bằng cách truy cập vào địa chỉ http://localhost:9100/metrics
Sau khi Node Exporter
đã hoạt động chúng ta cần chỉnh sửa file cấu hình của Prometheus là prometheus.yml
trong bài viết trước để Prometheus
có thể lấy được dữ liệu từ Node Exporter
. Mình thay đổi thiết lập global > scrape_interval về 1s để có thể cào dữ liệu mỗi giây và static_configs thêm địa chỉ để lấy dữ liệu về từ Node Exporter
.
Như vậy chúng ta đã hoàn thành công việc thiết lập Node Exporter
và xuất dữ liệu cho Prometheus
. Dữ liệu chúng ta đã có, để có thể sử dụng dữ liệu và hiển thị trên một dashboard mình sử dụng thêm một công cụ có tên là Grafana
.
Grafana và cài đặt
Grafana
là một nền tảng dùng cho việc xây dựng các hệ thống analystics và monitoring. Dựa vào các metric đã thu thập được thông qua Grafana
chúng ta có thể tạo ra các dashboard giúp trực quan hóa các metric. Việc xây dựng các dashboard là một công việc quan trọng trong monitoring, bằng việc sử dụng Grafana
chúng ta chúng ta có thể áp dụng được cho rất nhiều các giải pháp khác nhau như Prometheus, InfluxDB, ElasticSearch, Loki, ...
Để cài đặt Grafana
hết sức đơn giản, chúng ta có thể tại Grafana về tại https://grafana.com/grafana/download thực hiện cài đặt theo hướng dẫn và start service.
$ sudo systemctl status grafana-server
Mặc định Grafana sẽ khởi chạy tại cổng 3000. Chúng ta sẽ truy cập tại địa chỉ http://localhost:3000. Một trang web hiện ra và thực hiện đăng nhập với tài khoản mặc định là admin
và mật khẩu là admin
. Sau khi đăng nhập lần đầu chúng ta thực hiện việc thay đổi mật khẩu mặc định và chúng ta vào được giao diện quản lý của Grafana.
Chúng ta vào Configuration và thực hiện add Data source từ Prometheus và thiết lập.
Tiếp theo chúng ta tạo một Dashboard cho Node Exporter
một cách đơn giản nhất là sử dụng những Dashboard đã được xây dựng sẵn. Có rất nhiều Dashboard đã được xây dựng sẵn với nhiều mục đich chúng ta có thể tìm kiếm được tại đây https://grafana.com/grafana/dashboards. Trong bài viết này mình sử dụng một Dashboard cho Node Exporter
có tên là Node Exporter Full
các bạn có thể tìm kiếm tại địa chỉ trên. Dashboard này có ID 1860 chúng ta có thể lấy được dễ dàng thông qua URL.
Để import Dashboard bạn click vào nút dấu cộng và chọn import. Nhập ID của Dashboard và chọn Load một màn hình config hiện ra, chúng ta chọn Data Source từ Prometheus
đã tạo từ trước và nhấn vào import.
BÙM!!! Chúng ta có được một dashboard hết sức "xịn xò" trông như sau:
Chúng ta có thể xem được rất nhiều thông tin về hệ thống từ dashboard như thông tin về CPU, RAM, Network traffic, ... phục vụ rất tốt cho công việc monitoring của chúng ta.
Kết luận
Trong bài viết mình đã hướng dẫn cách cài đặt Node Exporter
và Grafana
để kết hợp với Prometheus
tạo ra một Dashboard có khả năng monitor các thông số của hệ thống. Các bạn hoàn toàn có thể sử dụng dashboard này cho việc monitoring server của các bạn. Trong các bài viết tiếp theo mình sẽ tiếp tục chia sẻ thêm những tính năng hay ho của các công cụ trên. Các bạn hãy đón xem nhé, hy vọng bài viết sẽ có ích đối với các bạn.
Tham khảo
All rights reserved