Node Exporter: Thu thập metrics hệ thống Linux chi tiết từ A-Z

Node Exporter: Thu thập metrics hệ thống Linux chi tiết từ A-Z

Node Exporter là gì?

Node Exporter là một công cụ mạnh mẽ dùng để thu thập các metrics (chỉ số) từ hệ thống Linux như CPU, Memory, Disk, Network, v.v. Nó là một exporter của Prometheus – một hệ thống monitoring nổi tiếng trong thế giới DevOps.

Nếu bạn đang gặp vấn đề:

  • Không biết tình trạng sử dụng resources của máy chủ
  • Muốn monitor nhiều server cùng lúc
  • Cần dữ liệu metrics để tạo cảnh báo khi hệ thống có vấn đề

Thì Node Exporter chính là giải pháp bạn cần. Bài viết này sẽ hướng dẫn bạn từng bước cài đặt, cấu hình và sử dụng Node Exporter.

Chuẩn bị trước khi cài đặt

Yêu cầu hệ thống

  • Máy chủ Linux (Ubuntu, CentOS, Debian, v.v)
  • Quyền root hoặc sudo
  • Kết nối Internet để tải package
  • Port 9100 khả dụng (port mặc định của Node Exporter)

Kiểm tra hệ thống

# Kiểm tra phiên bản Linux
uname -a

# Kiểm tra port 9100 có đang sử dụng không
sudo netstat -tulpn | grep 9100
# hoặc
sudo ss -tulpn | grep 9100

Cài đặt Node Exporter

Phương pháp 1: Tải và cài đặt từ GitHub

Đây là cách cài đặt thủ công và được sử dụng phổ biến nhất:

# Bước 1: Tải phiên bản mới nhất của Node Exporter
cd /tmp
wget https://github.com/prometheus/node_exporter/releases/download/v1.6.1/node_exporter-1.6.1.linux-amd64.tar.gz

# Bước 2: Giải nén file
tar xvfz node_exporter-1.6.1.linux-amd64.tar.gz

# Bước 3: Di chuyển file thực thi
sudo mv node_exporter-1.6.1.linux-amd64/node_exporter /usr/local/bin/

# Bước 4: Kiểm tra phiên bản đã cài đặt
node_exporter --version

Phương pháp 2: Sử dụng Package Manager (Ubuntu/Debian)

Cách này nhanh và tiện hơn:

sudo apt update
sudo apt install -y node-exporter

# Kiểm tra
node_exporter --version

Phương pháp 3: Cài đặt trên CentOS/RHEL

sudo yum install -y node_exporter

# Hoặc dùng dnf (CentOS 8+)
sudo dnf install -y node_exporter

Cấu hình Node Exporter

Tạo Systemd Service

Để Node Exporter chạy tự động khi hệ thống khởi động, ta tạo một systemd service file:

sudo nano /etc/systemd/system/node_exporter.service

Thêm nội dung sau:

[Unit]
Description=Node Exporter
After=network.target

[Service]
User=node_exporter
Group=node_exporter
Type=simple
ExecStart=/usr/local/bin/node_exporter \
  --collector.netdev.device-exclude=^(veth.*)$ \
  --collector.netfs.fs-types-exclude=^(autofs|binfmt_misc|bpf|cgroup2?|configfs|debugfs|devpts|devtmpfs|fusectl|hugetlbfs|iso9660|mqueue|nsfs|overlay|proc|procfs|pstore|rpc_pipefs|securityfs|selinuxfs|squashfs|sysfs|tracefs)$ \
  --collector.cpu.info

[Install]
WantedBy=multi-user.target

Tạo user cho Node Exporter

# Tạo user không có shell
sudo useradd --no-create-home --shell /bin/false node_exporter

# Gán quyền
sudo chown node_exporter:node_exporter /usr/local/bin/node_exporter

Khởi động Service

# Reload systemd
sudo systemctl daemon-reload

# Khởi động Node Exporter
sudo systemctl start node_exporter

# Tự động chạy khi boot
sudo systemctl enable node_exporter

# Kiểm tra trạng thái
sudo systemctl status node_exporter

Kiểm tra Node Exporter hoạt động

Truy cập Metrics qua HTTP

# Từ chính server
curl http://localhost:9100/metrics

# Hoặc từ máy khác (thay IP)
curl http://192.168.1.100:9100/metrics

Kết quả sẽ hiển thị các metrics dạng text, ví dụ:

node_cpu_seconds_total{cpu="0",mode="idle"} 1234567.89
node_memory_MemTotal_bytes 8589934592
node_memory_MemFree_bytes 4294967296
node_filesystem_avail_bytes{device="/dev/sda1",fstype="ext4",mountpoint="/"} 50000000000

Xem qua trình duyệt

Mở trình duyệt và truy cập:

http://your-server-ip:9100/metrics

Một số Metrics quan trọng

CPU Metrics

  • node_cpu_seconds_total – Tổng thời gian CPU
  • node_load1, node_load5, node_load15 – Load average

Memory Metrics

  • node_memory_MemTotal_bytes – Tổng RAM
  • node_memory_MemFree_bytes – RAM trống
  • node_memory_MemAvailable_bytes – RAM có sẵn

Disk Metrics

  • node_filesystem_size_bytes – Dung lượng disk
  • node_filesystem_avail_bytes – Dung lượng trống
  • node_disk_reads_completed_total – Số lần đọc disk

Network Metrics

  • node_network_receive_bytes_total – Dữ liệu nhận được
  • node_network_transmit_bytes_total – Dữ liệu gửi đi

Cấu hình Prometheus để thu thập metrics

Mặc dù Node Exporter xuất metrics, bạn cần Prometheus để thu thập và lưu trữ chúng. Chỉnh sửa file cấu hình Prometheus:

global:
  scrape_interval: 15s

scrape_configs:
  - job_name: 'node'
    static_configs:
      - targets: ['localhost:9100']
      
  # Nếu có nhiều server
  - job_name: 'node-multi'
    static_configs:
      - targets: 
        - '192.168.1.100:9100'
        - '192.168.1.101:9100'
        - '192.168.1.102:9100'

Xử lý sự cố thường gặp

Node Exporter không khởi động

# Kiểm tra log
sudo journalctl -u node_exporter -n 50

# Hoặc chạy trực tiếp để xem lỗi
sudo /usr/local/bin/node_exporter

Port 9100 đang bị chiếm dụng

# Tìm process đang chiếm port
sudo lsof -i :9100

# Dùng port khác (thêm vào ExecStart trong service file)
node_exporter --web.listen-address=:9101

Firewall chặn port

# UFW (Ubuntu)
sudo ufw allow 9100/tcp

# Firewalld (CentOS)
sudo firewall-cmd --permanent --add-port=9100/tcp
sudo firewall-cmd --reload

Tối ưu hóa Node Exporter

Tắt collectors không cần thiết

# Chỉ bật collectors cần thiết
node_exporter \
  --collector.cpu \
  --collector.memory \
  --collector.disk \
  --collector.loadavg \
  --no-collector.wifi

Giảm tần suất scrape

Nếu server có nhiều metrics, điều chỉnh interval trong Prometheus để giảm tải.

Kết luận

Node Exporter là công cụ thiết yếu trong bất kỳ hệ thống monitoring nào. Với hướng dẫn này, bạn đã:

  • ✅ Cài đặt Node Exporter thành công
  • ✅ Cấu hình nó để chạy tự động
  • ✅ Hiểu các metrics quan trọng
  • ✅ Biết cách tích hợp với Prometheus

Bước tiếp theo

  • Cài đặt Prometheus để thu thập metrics từ Node Exporter
  • Sử dụng Grafana để tạo dashboard trực quan
  • Thiết lập AlertManager để tạo cảnh báo khi có vấn đề
  • Tìm hiểu thêm về Prometheus queries để phân tích sâu hơn

Nếu bạn có câu hỏi, hãy để lại bình luận bên dưới!