Tips untuk Optimasi SEO Saat Mengembangkan Website
Tips untuk Optimasi SEO Saat Mengembangkan Website
Cara Setup Grafana dan Prometheus untuk Monitoring Server & Aplikasi

Cara Setup Grafana dan Prometheus untuk Monitoring Server & Aplikasi

Cara Setup Grafana dan Prometheus untuk Monitoring Server & Aplikasi
Cara Setup Grafana dan Prometheus untuk Monitoring Server & Aplikasi

Dalam dunia DevOps, melakukan pemantauan performa server dan aplikasi secara realtime merupakan kebutuhan penting. Apakah CPU server yang digunakan kelebihan beban? Berapa banyak memory, CPU atau bandwidth yang digunakan aplikasi? 

Jawaban dari pertanyaan-pertanyaan tersebut bisa didapatkan dengan membangun sebuah sistem monitoring untuk melakukan pemantauan server ataupun infrastruktur digital.

Pada bagian ini, kita akan membahas cara membuat sistem monitoring sederhana menggunakan Grafana, Prometheus, dan Node Exporter, serta bonus tambahan untuk memonitor aplikasi NestJS.

Apa Itu Grafana, Prometheus, dan Node Exporter?

Sebelum masuk ke teknis, mari kita membahas dulu tiga tools utama yang akan digunakan pada tutorial ini.

Apa itu Prometheus?

Prometheus adalah tools open-source yang berfungsi sebagai time-series database. Ia bekerja dengan cara melakukan scraping data metrics dari berbagai sumber, seperti server atau aplikasi pada interval tertentu.

Apa itu Node Exporter?

Node Exporter adalah agen ringan yang dapat dipasang di server. Ia akan mengekspor berbagai metrik sistem seperti CPU, memory, disk usage, dan network, yang kemudian bisa dibaca oleh Prometheus.

Apa itu Grafana?

Grafana adalah platform visualisasi open-source. Dengan Grafana, kita bisa membuat dashboard interaktif untuk menampilkan metrik yang dikumpulkan oleh Prometheus dalam bentuk grafik atau visual lainnya.

Setup Monitoring Server (Prometheus, Node Exporter, Grafana)

Pastikan Sudah Install Docker dan Docker Compose

Pada tutorial ini, aplikasi untuk monitoring yang akan kita setup akan berjalan dalam container. Pastikan Docker dan Docker Compose sudah terpasang pada perangkat server anda, cek dengan perintah berikut di Terminal:

docker --version
docker compose version

Jika Docker dan Docker Compose belum terpasang, kamu bisa install Docker dan Docker Compose terlebih dulu dari alamat berikut : https://docs.docker.com/get-docker/

Buat Folder Proyek

Langkah awal adalah membuat folder baru untuk menyimpan semua konfigurasi monitoring. Bisa gunakan Code Editor atau IDE:

Buat folder proyek untuk Grafana
Buat folder proyek untuk Grafana

Buat File docker-compose.yml

Setelah membuat folder untuk project, kemudian buat file “docker-compose.yml”. File ini akan digunakan untuk mendefinisikan semua service (Prometheus, Node Exporter, Grafana). Kita akan menggunakan image yang disediakan oleh Docker:

File docker-compose.yml

Kemudian isi file tersebut dengan source code berikut:

version: "3.8"
services:
    prometheus:
        image: prom/prometheus:latest
        container_name: prometheus
        ports:
            - "9090:9090"
        volumes:
            - ./prometheus/prometheus.yml:/etc/prometheus/prometheus.yml
            - prometheus_data:/prometheus
        command:
            - "--config.file=/etc/prometheus/prometheus.yml"
            - "--storage.tsdb.path=/prometheus"
            - "--web.console.libraries=/etc/prometheus/console_libraries"
            - "--web.console.templates=/etc/prometheus/consoles"
            - "--web.enable-lifecycle"
        networks:
            - monitoring-network
        restart: unless-stopped
    node-exporter:
        image: prom/node-exporter:latest
        container_name: node-exporter
        ports:
            - "9100:9100"
        volumes:
            - /proc:/host/proc:ro
            - /sys:/host/sys:ro
            - /:/rootfs:ro
        command:
            - "--path.procfs=/host/proc"
            - "--path.sysfs=/host/sys"
            - "--collector.filesystem.mount-points-exclude=^/(sys|proc|dev|host|etc)($$|/)"
        networks:
            - monitoring-network
        restart: unless-stopped
    grafana:
        image: grafana/grafana:latest
        container_name: grafana
        ports:
            - "3001:3000"
        environment:
            - GF_SECURITY_ADMIN_USER=admin
            - GF_SECURITY_ADMIN_PASSWORD=admin
            - GF_USERS_ALLOW_SIGN_UP=false
        volumes:
            - grafana_data:/var/lib/grafana
        networks:
            - monitoring-network
        restart: unless-stopped
        depends_on:
            - prometheus
networks:
    monitoring-network:
        driver: bridge
volumes:
    prometheus_data:
    grafana_data:

Keterangan dari source code:

  • prometheus: Service utama untuk mengumpulkan metrik.
  • node-exporter: Mengirim metrik sistem host ke Prometheus.
  • grafana: Menyediakan dashboard visual.

Buat Konfigurasi Prometheus

Prometheus memerlukan file konfigurasi untuk mengetahui target apa saja yang akan di-scrape. Untuk membuat file konfigurasi tersebut, buat folder dengan nama “prometheus” dan buat file dengan nama “prometheus.yml” di dalamnya, seperti pada gambar berikut:

File Konfigurasi Prometheus.yml
File Konfigurasi Prometheus.yml

Kemudian tulis source code berikut ke dalam file prometheus.yml:

global:
    scrape_interval: 15s
    evaluation_interval: 15s
scrape_configs:
    - job_name: "prometheus"
      static_configs:
          - targets: ["localhost:9090"]
    - job_name: "node-exporter"
      static_configs:
          - targets: ["node-exporter:9100"]
    - job_name: "nestjs-app"
      metrics_path: /metrics
      static_configs:
          - targets: ["nestjs-app:3100"]

Keterangan dari source code:

  • scrape_interval: Frekuensi Prometheus melakukan pengambilan data
  • targets: Endpoint service yang ingin dipantau.

Jalankan Semua Service

Kemudian jalan semua service yang telah dibuat dengan menggunakan perintah berikut:

docker compose up -d

Opsi -d pada perintah di atas berarti service akan berjalan di background. Untuk memastikan service sudah berjalan, kamu dapat memastikannya dengan menggunakan perintah berikut:

docker compose ps

Kemudian kamu akan melihat semua service yang sudah dibuat sebelumnya sudah berjalan ditandai dengan status “up” seperti pada gambar berikut:

Konfigurasi Prometheus
Konfigurasi Prometheus

Akses Prometheus & Grafana

Akses Prometheus & Grafana melalui web browser dengan url dan port yang ada di file konfigurasi atau “docker-compose.yml”

Untuk akses Prometheus, kamu bisa mengakses alamat dan port berikut seperti yang tertera pada file konfigurasi http://localhost:9090.

Kemudian coba masukkan querynode_cpu_seconds_total” untuk melihat metrik penggunaan CPU di server:

Akses Prometheus & Grafana
Akses Prometheus & Grafana

Metrik ini berasal dari Node Exporter yang mencatat jumlah total waktu (dalam detik) yang telah dihabiskan oleh CPU dalam berbagai mode operasional.

Setiap baris memiliki beberapa label sebagai berikut:

  • cpu=”0″ atau cpu=”1″: menunjukkan CPU core yang dimaksud
  • mode=”…”: menunjukkan jenis aktivitas CPU
  • instance=”node-exporter:9100″: alamat dari target yang di-scrape
  • job=”node-exporter”: nama job dari prometheus.yml.
  • dan yang paling kanan adalah value dari metrik tersebut.

Untuk mengakses Grafana, kamu bisa mengakses alamat dan port berikut seperti yang tertera pada server, http://localhost:3001.

Kemudian login dengan username dan password default, yaitu usernameadmin” dan password ”admin” sesuai “env” yang ada di “docker-compose”:

Login ke Grafana
Login ke Grafana

Setup Konfigurasi Visualisasi di Grafana

Setelah semua konfigurasi sebelumnya selesai, selanjutnya adalah melakukan konfigurasi untuk Visualisasi di Grafana. Dengan Grafana kita bisa membuat dashboard interaktif untuk menampilkan metrik yang dikumpulkan oleh Prometheus.

Tambahkan Prometheus Sebagai Data Source

Langkah pertama adalah menambahkan Prometheus sebagai data source untuk visualisasi dashboard di Grafana. Masuk ke “Connections” -> kemudian pilih “Data”, lalu pilih “Prometheus”, seperti pada gambar di bawah:

Konfigurasi Visualisasi di Grafana
Konfigurasi Visualisasi di Grafana

Kemudian masukkan URL “http://prometheus:9090” atau “http://localhost:9090” di bagian “Connection” di “Prometheus server URL” seperti pada gambar dibawah:

Prometheus Server URL
Prometheus Server URL

Klik “Save & Test” untuk menyimpan konfigurasi.

Buat Dashboard Baru di Grafana untuk Monitoring Server

Setelah selesai melakukan konfigurasi URL Prometheus di Grafana, selanjutnya adalah buat dashboard baru untuk monitoring server. Pertama klik tombol “Create” kemudian pilih  “Dashboard” dan pilih “Add new” untuk membuat dashboard baru.

Selanjutnya pilih “data source” Prometheus yang sudah kita tambahkan sebelumnya, seperti pada gambar berikut:

Buat Dashboard Baru di Grafana
Buat Dashboard Baru di Grafana

Kemudian, pada tab “Queries”, kita bisa melakukan “query” untuk metrik yang akan kita tampilkan visualnya. Misalnya kita bisa menggunakan “query” berikut seperti pada gambar di bawah:

Konfigurasi Dashboard Baru di Grafana
Konfigurasi Dashboard Baru di Grafana

Kamu bisa mengatur panel sesuai kebutuhan (warna, threshold, jenis grafik).

Bagian-bagian dan Modifikasi Panel di Dashboard Grafana

Berikut adalah bagian-bagian yang dikonfigurasi pada panel dashboard Grafana untuk menyesuaikan metrik dan visualisasi yang akan kita buat:

  1. Panel Title dan Description
  • Title: Sebagai judul panel agar lebih deskriptif terhadap dashboard yang akan dibuat, misalnya: Available Memory
  • Description: Berfungsi untuk menjelaskan fungsi panel ini atau query yang digunakan, berguna untuk dokumentasi tim. Ini bersifat opsional.
  1. Queries
  • Data source: Untuk memilih sumber data yang akan digunakan dalam visualisasi, dalam hal ini sudah dikonfigurasi ke Prometheus
  • Metric: Kamu menggunakan node_memory_MemAvailable_bytes, yaitu sisa RAM yang tersedia dalam satuan byte
  • Label filters: Bisa difilter berdasarkan instance, job, dsb. Misalnya, instance=”node-exporter:9100″ jika ingin spesifik ke satu server.
  1. Query Options
  • Interval: Untuk menentukan resolusi data, secara default nilainya otomatis (auto), tapi bisa disetel misalnya ke 1m, 5s, dsb.
  • Legend: Dapat dikustomisasi untuk memberi nama label pada garis grafik.
  1. Visualization (Time series)

Ini menentukan jenis tampilan data. Saat ini kita menggunakan Time series, tetapi bisa diganti ke pilihan-pilihan lainnya seperti:

  • Gauge: Cocok untuk nilai tunggal seperti CPU usage.
  • Bar gauge, Stat, Table, dan lain sebagainya.

Cara Import Dashboard di Grafana

Fitur “Import Dashboard” di Grafana berfungsi untuk melakukan import dashboard yang sudah tersedia sebelumnya, misalnya kamu ingin menggunakan dashboard bawaan dari komunitas, menyalin dashboard dari server lain atau melakukan restore dashboard dari backup file “.json” dari dashboard yang sudah pernah dibuat sebelumnya.

Untuk melakukan import dashboard, kamu dapat mengikuti step-step berikut:

  • Masuk ke Dashboard → Create → Import
  • Kamu punya 3 pilihan sumber:
    • Grafana.com Dashboard ID. Masukkan ID dashboard dari https://grafana.com/grafana/dashboards. Misalnya: 1860 untuk dashboard Node Exporter lengkap.
    • Upload File JSON. Jika kamu memiliki file “.json” dashboard, klik “Upload JSON” dan pilih file yang ingin di-import.
    • Paste JSON. Tempelkan langsung isi JSON dari clipboard ke dalam kolom teks.
Import JSON Grafana
Import JSON Grafana
  • Setelah memilih sumber konfigurasi yang akan digunakan meng-import dashboard, kemudian pilih “Load”.
  • Kemudian pilih data source, misalnya Prometheus yang akan digunakan dan sesuaikan nama untuk Dashboard ini.
  • Kemudian klik “Import” untuk meng-import konfigurasi.
Panel di Dashboard Grafana
Panel di Dashboard Grafana

Kesimpulan

Dengan mengikuti tutorial ini, kamu telah berhasil membangun sistem monitoring server dan aplikasi menggunakan kombinasi tools modern yang terdiri dari Docker, Prometheus, Node Exporter, dan Grafana. 

Melalui penggunaan Docker Compose, seluruh layanan dapat dijalankan secara terisolasi namun saling terhubung dalam satu konfigurasi terpusat, membuat proses setup menjadi lebih mudah, cepat, dan portabel. 

Prometheus berperan sebagai alat pengumpul data (data collector) yang secara berkala men-scrape metrik dari berbagai sumber seperti Node Exporter, berdasarkan konfigurasi yang telah ditentukan di file “prometheus.yml”.

Node Exporter digunakan untuk mengumpulkan metrik dasar dari sistem, seperti penggunaan CPU, memori, disk, dan jaringan, yang sangat penting untuk mengetahui kondisi server secara real-time. Metrik-metrik seperti node_cpu_seconds_total dan node_memory_MemAvailable_bytes menjadi dasar untuk menganalisis performa dan kestabilan sistem. 

Sementara itu, Grafana digunakan sebagai layer visualisasi yang menyajikan data dari Prometheus dalam bentuk dashboard interaktif dan informatif. Grafana memungkinkan pengguna memantau sistem dengan cara yang lebih mudah dipahami.

Dengan monitoring yang baik, kamu dapat menjaga kestabilan sistem sekaligus mempermudah proses troubleshooting ketika terjadi masalah.

Add a comment

Tinggalkan Balasan

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *