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 CPUnode_load1,node_load5,node_load15– Load average
Memory Metrics
node_memory_MemTotal_bytes– Tổng RAMnode_memory_MemFree_bytes– RAM trốngnode_memory_MemAvailable_bytes– RAM có sẵn
Disk Metrics
node_filesystem_size_bytes– Dung lượng disknode_filesystem_avail_bytes– Dung lượng trốngnode_disk_reads_completed_total– Số lần đọc disk
Network Metrics
node_network_receive_bytes_total– Dữ liệu nhận đượcnode_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!

