Setup Prometheus Node Exporter pada Ubuntu 24.04 LTS

Overview

Memantau kesehatan server menjadi keharusan bagi setiap tim operasi TI. Di antara solusi open‑source yang paling populer, Prometheus menonjol dengan model pull‑based yang sederhana namun powerful. Namun Prometheus tidak mengumpulkan metrik dari sistem operasi secara langsung; ia membutuhkan exporter yang mengexpose data dalam format yang dapat dipahami Prometheus. Salah satu exporter paling fundamental adalah Node Exporter, yang menyajikan metrik tentang CPU, memori, jaringan, disk, dan banyak lagi.

Artikel ini membimbing Anda langkah demi langkah dalam menginstal, mengkonfigurasi, dan menjalankan Node Exporter pada Ubuntu 24.04 LTS. Semua perintah diuji pada instalasi fresh, sehingga Anda dapat menyalin‑paste langsung ke terminal tanpa harus menyesuaikan placeholder yang tidak perlu.

Prerequisites

  • Server fisik atau virtual yang menjalankan Ubuntu 24.04 LTS dengan akses root atau hak sudo.
  • Koneksi internet untuk mengunduh paket binary Node Exporter.
  • Firewall yang mengizinkan koneksi masuk pada port 9100 (default). Jika menggunakan ufw, aturan akan ditambahkan di bagian Verifikasi.
  • Jika Anda sudah memiliki server Prometheus terpusat, pastikan alamat IP atau hostname server tersebut dapat meresolusi nama server ini.

Environment

Untuk contoh ini, kami memakai mesin bernama monitor01 dengan alamat IP 10.0.0.12. Semua perintah dijalankan dengan hak sudo. Sistem menggunakan systemd sebagai init system, sehingga kita akan membuat unit service yang dikelola oleh systemd.

Konsep Singkat

Node Exporter adalah binary berbasis Go yang berjalan sebagai daemon. Ia mengekspor endpoint HTTP pada http://host:9100/metrics. Prometheus melakukan HTTP GET ke endpoint tersebut pada interval yang dikonfigurasi (biasanya 15 s) dan mengumpulkan metrik dalam format teks yang disebut exposition format . Karena Node Exporter tidak memerlukan konfigurasi kompleks, kebanyakan pengguna cukup menginstal binary, menambahkan service systemd, dan membuka port yang diperlukan.

Langkah Konfigurasi

Step 1 – Unduh Binary Node Exporter

Tujuan: Mengambil paket terbaru yang kompatibel dengan arsitektur x86_64.

# Tentukan versi terbaru (per 2026) – saat ini 1.7.0
VERSION=1.7.0
ARCH=linux-amd64
wget https://github.com/prometheus/node_exporter/releases/download/v${VERSION}/node_exporter-${VERSION}.${ARCH}.tar.gz -O /tmp/node_exporter.tar.gz

Jika unduhan gagal, periksa koneksi internet atau repository GitHub untuk memastikan versi tersebut masih tersedia.

Step 2 – Ekstrak dan Tempatkan Binary

Tujuan: Menyalin file eksekusi ke direktori standar /usr/local/bin sehingga dapat dipanggil dari PATH.

tar -xzf /tmp/node_exporter.tar.gz -C /tmp
sudo mv /tmp/node_exporter-${VERSION}.${ARCH}/node_exporter /usr/local/bin/
sudo chmod +x /usr/local/bin/node_exporter

Setelah itu, pastikan binary dapat dijalankan:

node_exporter --version

Output yang diharapkan menampilkan versi 1.7.0 beserta informasi build.

Step 3 – Tambahkan User Sistem

Tujuan: Menjalankan Node Exporter dengan hak terbatas, bukan root, untuk mengurangi risiko keamanan.

sudo useradd -rs /bin/false node_exporter

Dengan flag -r kita membuat akun sistem, dan -s /bin/false menonaktifkan login shell.

Step 4 – Buat Unit File systemd

Tujuan: Mendaftarkan Node Exporter sebagai service yang dikelola oleh systemd, sehingga dapat otomatis start pada boot dan dipantau statusnya.

sudo tee /etc/systemd/system/node_exporter.service > /dev/null <<EOF
[Unit]
Description=Prometheus 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 
  --collector.filesystem.mount-points-exclude="^/(dev|proc|sys|run)($|/)" 
  --collector.netdev.ignored-devices="^lo$"
Restart=on-failure

[Install]
WantedBy=multi-user.target
EOF

Baris --collector.filesystem.mount-points-exclude dan --collector.netdev.ignored-devices merupakan contoh parameter yang umum dipakai untuk mengurangi noise metrik. Anda dapat menyesuaikannya atau menghilangkan parameter tersebut bila tidak diperlukan.

Step 5 – Reload systemd dan Mulai Service

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

Perintah kedua akan mengaktifkan service pada boot dan memulai service secara langsung. Untuk memeriksa status:

sudo systemctl status node_exporter

Anda harus melihat status active (running) tanpa error.

Step 6 – Buka Port pada Firewall (UFW)

Jika ufw diaktifkan, izinkan akses ke port 9100 hanya dari jaringan monitoring Anda (misalnya 10.0.0.0/24).

sudo ufw allow from 10.0.0.0/24 to any port 9100 comment "Prometheus Node Exporter"
sudo ufw reload

Verifikasi aturan:

sudo ufw status numbered

Verifikasi

Setelah service berjalan, buka browser atau gunakan curl dari mesin lain yang berada dalam jaringan yang di‑whitelist.

curl http://10.0.0.12:9100/metrics | head -n 20

Anda akan melihat output berupa baris‑baris # HELP dan # TYPE yang mendeskripsikan metrik, diikuti nilai numerik. Contoh baris pertama biasanya:

# HELP node_cpu_seconds_total Total seconds the CPU spent in each mode.
# TYPE node_cpu_seconds_total counter
node_cpu_seconds_total{cpu="0",mode="user"} 12345.67

Jika data muncul, Node Exporter telah berhasil mengekspor metrik.

Troubleshooting

  • Gejala: systemctl status node_exporter menunjukkan failed.

    Penyebab: Binary tidak memiliki permission eksekusi atau user node_exporter tidak dapat mengakses file.

    Solusi: Pastikan chmod +x /usr/local/bin/node_exporter dan file dimiliki oleh root, sementara service dijalankan oleh user node_exporter. Perbaiki dengan sudo chown root:root /usr/local/bin/node_exporter lalu reload daemon.
  • Gejala: curl http://10.0.0.12:9100/metrics hang atau timeout.

    Penyebab: Firewall menolak koneksi atau service belum listening pada 0.0.0.0.

    Solusi: Periksa aturan ufw atau iptables. Jalankan sudo ss -tulnp | grep 9100 untuk memastikan proses mendengarkan pada 0.0.0.0:9100.
  • Gejala: Metrik tidak muncul di UI Prometheus.

    Penyebab: Target belum ditambahkan ke file prometheus.yml atau ada sintaks error.

    Solusi: Tambahkan blok berikut di bagian scrape_configs:

    - job_name: 'node_exporter'
      static_configs:
        - targets: ['10.0.0.12:9100']
    

    Reload Prometheus dengan sudo systemctl reload prometheus.

  • Gejala: Log systemd menunjukkan failed to start node_exporter.service: Exec format error.

    Penyebab: Binary yang diunduh tidak sesuai dengan arsitektur mesin (mis. ARM vs x86_64).

    Solusi: Unduh paket yang tepat, misalnya linux-arm64 untuk Raspberry Pi, kemudian ulangi Step 2.
  • Gejala: Metrik node_filesystem_avail_bytes selalu 0.

    Penyebab: Parameter --collector.filesystem.mount-points-exclude mengeksekusi pengecualian yang terlalu agresif.

    Solusi: Edit unit file, hilangkan atau sesuaikan pola regular expression, lalu sudo systemctl daemon-reload && sudo systemctl restart node_exporter.

Best Practice

  • Keamanan: Batasi akses ke port 9100 hanya untuk IP Prometheus atau subnet monitoring. Hindari membuka endpoint ke publik.
  • Versi Konsistensi: Simpan versi Node Exporter yang terinstall dalam dokumentasi perubahan (changelog). Saat upgrade, gunakan systemctl stop node_exporter terlebih dahulu untuk menghindari data loss.
  • Logging: Node Exporter tidak menulis log secara default, namun Anda dapat menambahkan StandardOutput=journal di unit file untuk menyalurkan output ke systemd‑journal, memudahkan inspeksi.
  • Monitoring Health Service: Tambahkan check di Prometheus dengan up{job="node_exporter"} untuk mendeteksi downtime.
  • Resource Overhead: Node Exporter sangat ringan (<2 % CPU pada beban normal). Jika server Anda sangat terbatas, jalankan dengan flag --no-collector.netdev dan lainnya yang tidak diperlukan.

FAQ

Apakah saya harus menjalankan Node Exporter sebagai root?
Tidak. Menjalankannya sebagai user tanpa hak istimewa (contoh node_exporter) merupakan rekomendasi keamanan.
Bisakah saya menginstall Node Exporter menggunakan paket apt?
Repositori Ubuntu tidak menyediakan versi terbaru secara konsisten. Mengunduh binary dari GitHub memastikan Anda menggunakan rilis resmi terbaru.
Bagaimana cara meng‑disable satu collector tertentu?
Gunakan flag --no-collector. pada baris ExecStart. Misalnya, --no-collector.hwmon untuk menonaktifkan sensor hardware.
Apakah Node Exporter mendukung metric HTTPS?
Secara native tidak; Anda dapat menempatkannya di belakang reverse proxy seperti Nginx atau Apache yang men‑terminate TLS.
Apakah data historis disimpan oleh Node Exporter?
Tidak. Node Exporter hanya mengekspor snapshot metrik pada saat diminta. Penyimpanan historis dikelola oleh server Prometheus.

Kesimpulan

Dengan mengikuti langkah‑langkah di atas, Anda kini memiliki Node Exporter yang beroperasi secara stabil di Ubuntu 24.04 LTS, siap menyuplai ribuan metrik penting ke server Prometheus pusat. Karena Node Exporter bersifat modular, Anda dapat menambah atau mengurangi collector sesuai kebutuhan, sambil tetap mempertahankan prinsip keamanan dengan membatasi akses jaringan. Integrasi yang mulus ini menjadi fondasi yang kuat untuk membangun monitoring yang proaktif, mengidentifikasi bottleneck sebelum mereka menjadi insiden, dan menyiapkan basis data metrik yang kaya untuk analisis performa jangka panjang.

Referensi

Comments

No comments yet. Why don’t you start the discussion?

    Leave a Reply

    Your email address will not be published. Required fields are marked *