Cài đặt Node Exporter trên CentOS Stream 9: Giám sát server chuẩn RHEL

CentOS tutorial - IT technology blog
CentOS tutorial - IT technology blog

Đừng để server “đột quỵ” rồi mới lo cứu

Bạn đã bao giờ thức giấc lúc 3 giờ sáng vì sếp gọi cháy máy do website sập, để rồi nhận ra nguyên nhân chỉ vì… đầy ổ cứng chưa? Trước đây, khi quản lý dàn server CentOS 8, mình thường phải SSH vào từng con rồi gõ top, df -h liên tục. Cách làm này cực kỳ tốn sức mà hiệu quả chẳng bao nhiêu.

Sau khi CentOS 8 dừng hỗ trợ, mình đã chuyển toàn bộ hệ thống sang CentOS Stream 9. Đây cũng là lúc mình chuẩn hóa quy trình giám sát với Node Exporter. Công cụ này chỉ tốn khoảng 15-30MB RAM nhưng có thể thu thập hơn 500 chỉ số hệ thống khác nhau. Với CentOS Stream 9, thử thách lớn nhất không phải là cài đặt, mà là vượt qua “hàng rào” SELinux và Firewalld để dữ liệu chảy về Prometheus mượt mà.

Bước 1: Thiết lập user và tải Node Exporter

Về mặt bảo mật, tuyệt đối không chạy Node Exporter bằng quyền root. Mình sẽ tạo một user hệ thống riêng, không có quyền login để cô lập dịch vụ.

# Tạo user hệ thống riêng biệt
sudo useradd --no-create-home --shell /bin/false node_exporter

Hiện tại bản 1.8.2 đang rất ổn định. Bạn nên kiểm tra phiên bản mới nhất trên GitHub của Prometheus thay vì dùng các bản cũ trong repo mặc định để tận dụng các bộ collector mới.

# Tải và giải nén binary
cd /tmp
curl -LO https://github.com/prometheus/node_exporter/releases/download/v1.8.2/node_exporter-1.8.2.linux-amd64.tar.gz
tar -xvf node_exporter-1.8.2.linux-amd64.tar.gz

# Đưa vào thư mục thực thi và phân quyền
sudo mv node_exporter-1.8.2.linux-amd64/node_exporter /usr/local/bin/
sudo chown node_exporter:node_exporter /usr/local/bin/node_exporter

Bước 2: Quản lý bằng Systemd

Để dịch vụ tự khởi động cùng OS, chúng ta cần một file unit cho systemd. Đừng dùng screen hay nohup vì bạn sẽ rất khó debug khi có sự cố.

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

Nội dung file cấu hình tối giản và an toàn:

[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
Restart=always

[Install]
WantedBy=multi-user.target

Kích hoạt dịch vụ chỉ với 3 lệnh quen thuộc:

sudo systemctl daemon-reload
sudo systemctl enable --now node_exporter

Bước 3: Vượt rào Firewalld và SELinux

Đây là phần khiến nhiều anh em “vò đầu bứt tai”. Service báo active nhưng Prometheus vẫn báo Down (Context deadline exceeded).

Mở cổng Firewalld

CentOS Stream 9 cực kỳ khắt khe về port. Bạn cần mở cổng 9100 để Prometheus server có thể “gõ cửa” lấy dữ liệu.

sudo firewall-cmd --permanent --add-port=9100/tcp
sudo firewall-cmd --reload

Xử lý SELinux

SELinux thường chặn Node Exporter đọc các file nhạy cảm trong /proc. Thay vì tắt hẳn SELinux (rất nguy hiểm), hãy gán nhãn cho file thực thi để hệ thống tin tưởng nó.

# Gán nhãn bin_t để service chạy hợp lệ dưới quyền systemd
sudo chcon -u system_u -r object_r -t bin_t /usr/local/bin/node_exporter

Bước 4: Kiểm tra thành quả

Hãy thử yêu cầu server tự xuất dữ liệu tại chỗ. Nếu thấy một danh sách dài các dòng như node_memory_Active_bytes, bạn đã đi đúng hướng.

curl http://localhost:9100/metrics

Bước 5: Kết nối Prometheus và “lên đồ” Grafana

Tại file prometheus.yml trên máy chủ giám sát, hãy thêm target mới. Lưu ý đặt scrape_interval khoảng 15s để biểu đồ mượt mà mà không gây tải cho CPU.

scrape_configs:
  - job_name: 'centos-stream-9'
    static_configs:
      - targets: ['192.168.1.10:9100']

Cuối cùng, hãy dùng Grafana Dashboard ID: 1860. Đây là template chuẩn nhất, giúp bạn quan sát từ băng thông mạng đến tốc độ đọc ghi của ổ cứng (Disk IO) theo thời gian thực.

Kinh nghiệm thực chiến

  • Lọc dữ liệu rác: Nếu server có hàng chục ổ đĩa ảo (Docker veth), hãy dùng flag --collector.network.device-exclude để làm sạch Dashboard.
  • Bảo mật: Nếu không dùng VPN nội bộ, hãy giới hạn IP truy cập port 9100 trong Firewalld. Đừng để lộ thông tin phần cứng lên internet, công cụ như Shodan sẽ quét ra server của bạn trong vài phút.

Cài đặt Node Exporter không khó. Tuy nhiên, cấu hình sao cho chuẩn bảo mật và tối ưu chỉ số mới là điều quan trọng. Hy vọng hướng dẫn này giúp hệ thống của bạn luôn vận hành trong tầm kiểm soát.

Share: