Tiếp tục bài viết về Prometheus, bài viết hôm nay mình sẽ hướng dẫn bạn cấu hình thực hiện giám sát một máy chủ Linux.
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.
Bước 1: Cài đặt Node Exporter lên máy chủ Linux
– Mình sẽ cài đặt Node Exporter lên VPS cá nhân để test luôn. Bạn truy cập vào Node Exporter tại trang chủ để tải về bản mới nhất nhé. Kéo xuống dưới, tại node_exporter chọn phiên bản phù hợp với hệ điều hành của bạn.
– Copy link tải, sử dụng wget để download về server linux, giải nén nó và move vào thư mục /usr/local/bin/.
wget https://github.com/prometheus/node_exporter/releases/download/v1.5.0/node_exporter-1.5.0.linux-amd64.tar.gz
tar -xzvf node_exporter-1.5.0.linux-amd64.tar.gz
mv node_exporter-1.5.0.linux-amd64/node_exporter /usr/local/bin/
– Tạo user cho node_exporter
useradd --no-create-home --shell /bin/false node_exporter
– Tạo file service cho node_exporter /etc/systemd/system/node_exporter.service, sau đó copy các đoạn mã sau và dán vào file và save lại.
cat > /etc/systemd/system/node_exporter.service << 'OEF'
[Unit]
Description=Node Exporter
Wants=network-online.target
After=network-online.target
[Service]
User=node_exporter
Group=node_exporter
Type=simple
ExecStart=/usr/local/bin/node_exporter
[Install]
WantedBy=default.target
OEF
– Reload lại daemon
systemctl daemon-reload
– Khởi động và kích hoạt dịch vụ node exporter
systemctl enable node_exporter
systemctl start node_exporter
systemctl status node_exporter
Kiểm tra nếu port 9100 trên server đã listen tức là dịch vụ của bạn đã hoạt động.
$ netstat -natlp | grep 9100
tcp6 0 0 :::9100 :::* LISTEN 12014/node_exporter
Bây giờ bạn hãy truy cập http://IP-Address:9100/metrics để kiểm tra nhé.
$ ifconfig enp1s0
enp1s0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.13.218 netmask 255.255.254.0 broadcast 192.168.13.255
inet6 fe80::5054:ff:fe09:f40 prefixlen 64 scopeid 0x20<link>
ether 52:54:00:09:0f:40 txqueuelen 1000 (Ethernet)
RX packets 357129 bytes 856651717 (856.6 MB)
RX errors 0 dropped 682 overruns 0 frame 0
TX packets 204345 bytes 59021478 (59.0 MB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
Dưới đây là kết quả khi mình sử dụng lệnh curl.
$ curl -s http://192.168.13.218:9100/metrics | tail -n 20
# TYPE process_start_time_seconds gauge
process_start_time_seconds 1.67221209115e+09
# HELP process_virtual_memory_bytes Virtual memory size in bytes.
# TYPE process_virtual_memory_bytes gauge
process_virtual_memory_bytes 7.42846464e+08
# HELP process_virtual_memory_max_bytes Maximum amount of virtual memory available in bytes.
# TYPE process_virtual_memory_max_bytes gauge
process_virtual_memory_max_bytes 1.8446744073709552e+19
# HELP promhttp_metric_handler_errors_total Total number of internal errors encountered by the promhttp metric handler.
# TYPE promhttp_metric_handler_errors_total counter
promhttp_metric_handler_errors_total{cause="encoding"} 0
promhttp_metric_handler_errors_total{cause="gathering"} 0
# HELP promhttp_metric_handler_requests_in_flight Current number of scrapes being served.
# TYPE promhttp_metric_handler_requests_in_flight gauge
promhttp_metric_handler_requests_in_flight 1
# HELP promhttp_metric_handler_requests_total Total number of scrapes by HTTP status code.
# TYPE promhttp_metric_handler_requests_total counter
promhttp_metric_handler_requests_total{code="200"} 0
promhttp_metric_handler_requests_total{code="500"} 0
promhttp_metric_handler_requests_total{code="503"} 0
Bây giờ hãy vào file /etc/prometheus/prometheus.yml.
vi /etc/prometheus/prometheus.yml
Hãy thêm thông tin về node_explore như dưới.
- job_name: 'Linux'
static_configs:
- targets: ['192.168.13.218:9100']
labels:
hostname: Linux01
type: linux
company: hoanghd
Khởi động lại prometheus
systemctl restart prometheus
Sau khi khởi động lại prometheus, hãy vào phần Targets bạn sẽ thấy thông tin của node_explore đã xuất hiện và đang ở trạng thái up.
Hãy thử query một metric, bạn đã có kết quả như dưới.
– Để thêm dashboard cho node_explore hãy click vào link dưới.
https://grafana.com/grafana/dashboards/1860-node-exporter-full/
Có 2 cách để import dashboard đó là sử dụng ID hoặc import bằng file json.
Trên Grafana hãy vào mục import.
Điền ID của dashboard vào và bấm load nếu bạn chọn phương pháp import bằng ID.
Nếu sử dụng phương pháp import bằng file, hãy làm theo các bước như dưới.
Nhìn vào hình dưới, ở phần 1 bạn có thể thay đổi tên và folder chứa dashboard. Ở phần 2 bạn hãy chọn datasource của node_explore.
Và đây là kết quả sau khi import xong.
Chúc các bạn thành công.