15%

Hemat 15% di Semua Layanan Hosting

Uji kemampuanmu dan dapatkan Diskon pada paket hosting apa saja

Gunakan kode:

Skills
Memulai
30.10.2024
1 +1

Sistem Pemantauan Prometheus: Panduan Pengaturan Lengkap untuk Pemantauan Infrastruktur & Aplikasi

Seiring infrastruktur modern yang semakin kompleks — mencakup layanan mikro, container, dan sistem terdistribusi — pemantauan yang andal bukan lagi sekadar pilihan. Ini adalah persyaratan mendasar untuk menjaga performa, keandalan, dan skalabilitas. Prometheus, sebuah toolkit pemantauan dan peringatan sumber terbuka, telah menjadi salah satu solusi yang paling banyak diadopsi untuk mengumpulkan dan memvisualisasikan metrik time-series di berbagai lingkungan.

Awalnya dikembangkan oleh SoundCloud dan kini merupakan proyek Cloud Native Computing Foundation (CNCF) yang telah lulus, Prometheus dipercaya oleh tim rekayasa di seluruh dunia. Panduan komprehensif ini mencakup semua yang perlu Anda ketahui: apa itu Prometheus, cara kerjanya, komponen intinya, dan proses pengaturan langkah demi langkah yang lengkap — termasuk Node Exporter, dashboard Grafana, dan konfigurasi peringatan.

Apa Itu Prometheus?

Prometheus adalah sistem pemantauan sumber terbuka yang powerful, dirancang untuk mengumpulkan, menyimpan, dan mengkueri data time-series — pengukuran atau peristiwa yang dilacak dari waktu ke waktu dengan timestamp beresolusi tinggi. Ini memungkinkan tim untuk memvisualisasikan kesehatan sistem, menganalisis tren, dan memicu peringatan cerdas sebelum masalah kecil berkembang menjadi gangguan kritis.

Fitur Utama Prometheus

FiturDeskripsi
Model Data Time-SeriesMetrik disimpan sebagai urutan bertanda waktu, memungkinkan analisis tren dan perbandingan historis
Pemantauan Berbasis PullPrometheus secara aktif mengambil metrik dari endpoint target daripada menunggu sistem mendorong data
PromQLBahasa kueri yang fleksibel dan ekspresif untuk memfilter, mengagregasi, dan menganalisis metrik secara real time
Integrasi AlertmanagerTentukan aturan berbasis ambang batas dan rutekan notifikasi ke email, Slack, PagerDuty, dan lainnya
Service DiscoverySecara otomatis menemukan dan mengambil target di lingkungan dinamis seperti cluster Kubernetes
Data Multi-DimensiLabel memungkinkan Anda memotong dan memilah metrik berdasarkan dimensi seperti region, instance, atau nama layanan

Kemampuan-kemampuan ini menjadikan Prometheus pilihan ideal bagi tim yang menjalankan beban kerja di VPS Hosting, infrastruktur bare-metal, atau platform terkontainerisasi.

Cara Kerja Prometheus

Prometheus mengikuti arsitektur yang bersih dan terdefinisi dengan baik yang dibangun di sekitar pengumpulan dan penyimpanan data time-series. Memahami arsitektur ini sangat penting sebelum menerapkannya di lingkungan produksi.

Alur Kerja Inti

  1. Pengumpulan Metrik (Scraping): Prometheus secara berkala mengirimkan permintaan HTTP ke endpoint target yang dikonfigurasi — yang dikenal sebagai *exporter* — untuk mengumpulkan metrik. Interval scrape sepenuhnya dapat dikonfigurasi.
  1. Penyimpanan Time-Series: Metrik yang dikumpulkan disimpan secara persisten di database time-series (TSDB) bawaan Prometheus. Setiap titik data membawa timestamp Unix dan sekumpulan label key-value untuk identifikasi.
  1. Kueri dengan PromQL: Engineer menggunakan PromQL untuk mengkueri metrik yang tersimpan, menghasilkan grafik, membangun dashboard, atau mendefinisikan kondisi peringatan berdasarkan data real-time dan historis.
  1. Pipeline Peringatan: Ketika sebuah metrik melewati ambang batas yang telah ditentukan, Prometheus mengirimkan peringatan ke Alertmanager, yang mendeduplikasi, mengelompokkan, dan merutekan notifikasi ke saluran yang sesuai.

Model berbasis pull adalah pilihan arsitektur yang disengaja. Ini menyederhanakan keamanan jaringan (target tidak memerlukan akses keluar ke server pusat), membuat konfigurasi menjadi transparan, dan berskala baik di lingkungan terdistribusi.

Komponen Inti Prometheus

Prometheus adalah ekosistem modular. Setiap komponen memiliki peran spesifik:

1. Prometheus Server

Mesin pusat yang bertanggung jawab untuk mengambil target, menyimpan metrik di TSDB, mengevaluasi aturan peringatan, serta menyajikan API PromQL dan antarmuka web.

2. Exporter

Exporter adalah agen atau adaptor ringan yang mengekspos metrik dalam format yang kompatibel dengan Prometheus. Exporter utama meliputi:

  • Node Exporter — Mengumpulkan metrik tingkat hardware dan OS: CPU, memori, disk I/O, throughput jaringan, penggunaan filesystem
  • Blackbox Exporter — Memeriksa endpoint eksternal melalui HTTP, HTTPS, DNS, TCP, dan ICMP untuk ketersediaan dan latensi
  • Exporter Database — Exporter khusus tersedia untuk PostgreSQL, MySQL, Redis, MongoDB, dan banyak lainnya
  • Exporter Khusus Aplikasi — Sebagian besar aplikasi dan framework modern mengekspos endpoint /metrics secara native

3. Alertmanager

Menangani siklus hidup peringatan secara penuh: menerima peringatan dari Prometheus, mendeduplikasi dan mengelompokkannya, menerapkan aturan pembungkaman dan inhibisi, serta merutekan notifikasi ke penerima seperti Slack, email, PagerDuty, atau OpsGenie.

4. PromQL (Prometheus Query Language)

Bahasa kueri fungsional yang dibuat khusus untuk data time-series. PromQL mendukung vektor instan, vektor rentang, operator agregasi, fungsi matematika, dan subkueri — memberikan Anda kekuatan analitis mendalam atas metrik Anda.

5. Pushgateway

Dirancang untuk pekerjaan sementara atau batch yang tidak dapat di-scrape secara langsung (misalnya, cron job yang berjalan selama 30 detik). Pekerjaan-pekerjaan ini mendorong metriknya ke Pushgateway, yang kemudian di-scrape oleh Prometheus pada interval regulernya.

6. Grafana

Meskipun bukan bagian dari Prometheus itu sendiri, Grafana adalah lapisan visualisasi de facto untuk data Prometheus. Ini terhubung ke Prometheus sebagai sumber data dan memungkinkan pembuatan dashboard yang kaya dan interaktif dengan panel, variabel, dan anotasi.

Pengaturan Prometheus Langkah demi Langkah di Linux

Panduan berikut memandu Anda melalui deployment Prometheus lengkap di server Linux, termasuk Node Exporter untuk metrik sistem, Grafana untuk visualisasi, dan Alertmanager untuk notifikasi.

> Prasyarat: Server Linux (Ubuntu 20.04/22.04 atau CentOS/RHEL 8+), akses sudo atau root, dan keakraban dasar dengan baris perintah. Jika Anda membutuhkan lingkungan server yang andal, pertimbangkan AlexHost VPS Hosting untuk fondasi yang berperforma tinggi dan latensi rendah.

Langkah 1: Instal Prometheus

Unduh dan ekstrak rilis Prometheus terbaru:

wget https://github.com/prometheus/prometheus/releases/download/v2.47.0/prometheus-2.47.0.linux-amd64.tar.gz
tar -xvf prometheus-2.47.0.linux-amd64.tar.gz
cd prometheus-2.47.0.linux-amd64

> Tips: Selalu periksa halaman rilis resmi Prometheus untuk versi stabil terbaru sebelum mengunduh.

Buat pengguna sistem khusus dan struktur direktori:

sudo useradd --no-create-home --shell /bin/false prometheus
sudo mkdir /etc/prometheus /var/lib/prometheus
sudo cp prometheus promtool /usr/local/bin/
sudo cp -r consoles console_libraries /etc/prometheus/
sudo chown prometheus:prometheus /usr/local/bin/prometheus /usr/local/bin/promtool
sudo chown -R prometheus:prometheus /etc/prometheus /var/lib/prometheus

Buat layanan systemd untuk Prometheus:

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

Tempelkan konten berikut:

[Unit]
Description=Prometheus Monitoring System
Wants=network-online.target
After=network-online.target

[Service]
User=prometheus
Group=prometheus
Type=simple
ExecStart=/usr/local/bin/prometheus 
  --config.file=/etc/prometheus/prometheus.yml 
  --storage.tsdb.path=/var/lib/prometheus/ 
  --web.console.templates=/etc/prometheus/consoles 
  --web.console.libraries=/etc/prometheus/console_libraries 
  --storage.tsdb.retention.time=30d

[Install]
WantedBy=multi-user.target

Aktifkan dan mulai Prometheus:

sudo systemctl daemon-reload
sudo systemctl enable prometheus
sudo systemctl start prometheus
sudo systemctl status prometheus

Prometheus sekarang akan dapat diakses di http://your-server-ip:9090.

Langkah 2: Konfigurasi Prometheus

File konfigurasi utama adalah /etc/prometheus/prometheus.yml. File ini mendefinisikan pengaturan global dan target scrape yang dipantau Prometheus.

Contoh konfigurasi dasar:

global:
  scrape_interval: 15s        # Default scrape frequency
  evaluation_interval: 15s    # How often alerting rules are evaluated
  scrape_timeout: 10s

alerting:
  alertmanagers:
    - static_configs:
        - targets:
          - localhost:9093

rule_files:
  - "/etc/prometheus/rules/*.yml"

scrape_configs:
  - job_name: "prometheus"
    static_configs:
      - targets: ["localhost:9090"]

Setelah memodifikasi file ini, selalu validasi konfigurasi sebelum memulai ulang:

promtool check config /etc/prometheus/prometheus.yml
sudo systemctl restart prometheus

Langkah 3: Instal Node Exporter untuk Metrik Sistem

Node Exporter mengekspos metrik hardware dan OS yang terperinci dari sistem host — penting untuk memantau beban CPU, tekanan memori, utilisasi disk, dan throughput jaringan.

Unduh dan instal Node Exporter:

wget https://github.com/prometheus/node_exporter/releases/download/v1.6.1/node_exporter-1.6.1.linux-amd64.tar.gz
tar -xvf node_exporter-1.6.1.linux-amd64.tar.gz
sudo cp node_exporter-1.6.1.linux-amd64/node_exporter /usr/local/bin/
sudo useradd --no-create-home --shell /bin/false node_exporter
sudo chown node_exporter:node_exporter /usr/local/bin/node_exporter

Buat layanan systemd untuk Node Exporter:

sudo nano /etc/systemd/system/node_exporter.service
[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

[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload
sudo systemctl enable node_exporter
sudo systemctl start node_exporter

Node Exporter sekarang mengekspos metrik di http://your-server-ip:9100/metrics.

Tambahkan Node Exporter sebagai target scrape di prometheus.yml:

scrape_configs:
  - job_name: "prometheus"
    static_configs:
      - targets: ["localhost:9090"]

  - job_name: "node_exporter"
    static_configs:
      - targets: ["localhost:9100"]

Mulai ulang Prometheus dan verifikasi bahwa target muncul sebagai UP di UI Prometheus di bawah Status → Targets.

Langkah 4: Visualisasikan Metrik dengan Grafana

Grafana mengubah metrik Prometheus mentah menjadi dashboard yang kaya secara visual dan dapat ditindaklanjuti. Ini adalah lapisan visualisasi standar untuk deployment Prometheus.

Instal Grafana di Ubuntu/Debian:

sudo apt-get install -y apt-transport-https software-properties-common
wget -q -O - https://packages.grafana.com/gpg.key | sudo apt-key add -
echo "deb https://packages.grafana.com/oss/deb stable main" | sudo tee /etc/apt/sources.list.d/grafana.list
sudo apt-get update
sudo apt-get install grafana
sudo systemctl enable grafana-server
sudo systemctl start grafana-server

Hubungkan Prometheus sebagai sumber data:

  1. Buka Grafana di http://your-server-ip:3000 (kredensial default: admin / admin)
  2. Navigasi ke Configuration → Data Sources → Add data source
  3. Pilih Prometheus
  4. Atur URL ke http://localhost:9090
  5. Klik Save & Test

Impor dashboard yang sudah dibuat sebelumnya:

  • Pergi ke Dashboards → Import
  • Masukkan ID dashboard 1860 (Node Exporter Full) dari marketplace Grafana
  • Pilih sumber data Prometheus Anda dan klik Import

Anda akan segera memiliki tampilan komprehensif tentang penggunaan CPU, konsumsi memori, disk I/O, statistik jaringan, dan beban sistem — semuanya dalam satu dashboard interaktif.

Langkah 5: Konfigurasi Aturan Peringatan dan Alertmanager

Peringatan Prometheus terdiri dari dua bagian: aturan peringatan yang didefinisikan di Prometheus, dan Alertmanager yang menangani perutean dan pengiriman.

Buat file aturan peringatan:

sudo mkdir -p /etc/prometheus/rules
sudo nano /etc/prometheus/rules/system_alerts.yml
groups:
  - name: system_alerts
    rules:
      - alert: HighCPUUsage
        expr: 100 - (avg by(instance) (rate(node_cpu_seconds_total{mode="idle"}[5m])) * 100) > 80
        for: 5m
        labels:
          severity: warning
        annotations:
          summary: "High CPU usage on {{ $labels.instance }}"
          description: "CPU usage has exceeded 80% for more than 5 minutes. Current value: {{ $value }}%"

      - alert: LowDiskSpace
        expr: (node_filesystem_avail_bytes{mountpoint="/"} / node_filesystem_size_bytes{mountpoint="/"}) * 100 < 15
        for: 10m
        labels:
          severity: critical
        annotations:
          summary: "Low disk space on {{ $labels.instance }}"
          description: "Available disk space on / is below 15%. Immediate action required."

      - alert: HighMemoryUsage
        expr: (1 - (node_memory_MemAvailable_bytes / node_memory_MemTotal_bytes)) * 100 > 85
        for: 5m
        labels:
          severity: warning
        annotations:
          summary: "High memory usage on {{ $labels.instance }}"
          description: "Memory usage has exceeded 85% for more than 5 minutes."

      - alert: InstanceDown
        expr: up == 0
        for: 1m
        labels:
          severity: critical
        annotations:
          summary: "Instance {{ $labels.instance }} is down"
          description: "Prometheus target {{ $labels.instance }} has been unreachable for more than 1 minute."

Validasi file aturan:

promtool check rules /etc/prometheus/rules/system_alerts.yml

Instal dan konfigurasi Alertmanager:

wget https://github.com/prometheus/alertmanager/releases/download/v0.26.0/alertmanager-0.26.0.linux-amd64.tar.gz
tar -xvf alertmanager-0.26.0.linux-amd64.tar.gz
sudo cp alertmanager-0.26.0.linux-amd64/alertmanager /usr/local/bin/
sudo mkdir /etc/alertmanager

Buat konfigurasi Alertmanager:

sudo nano /etc/alertmanager/alertmanager.yml
global:
  smtp_smarthost: 'smtp.yourdomain.com:587'
  smtp_from: 'alerts@yourdomain.com'
  smtp_auth_username: 'alerts@yourdomain.com'
  smtp_auth_password: 'your_password'

route:
  group_by: ['alertname', 'instance']
  group_wait: 30s
  group_interval: 5m
  repeat_interval: 4h
  receiver: 'email-notifications'

receivers:
  - name: 'email-notifications'
    email_configs:
      - to: 'admin@yourdomain.com'
        send_resolved: true

> Catatan: Untuk pengiriman email profesional dalam pipeline peringatan Anda, pertimbangkan untuk memasangkan Prometheus dengan AlexHost Email Hosting untuk infrastruktur SMTP yang andal.

Konfigurasi Lanjutan: Service Discovery

Untuk lingkungan dinamis — seperti cluster Kubernetes atau armada server dengan auto-scaling — daftar target statis dengan cepat menjadi tidak terkelola. Prometheus mendukung beberapa mekanisme service discovery secara bawaan:

scrape_configs:
  - job_name: "kubernetes-pods"
    kubernetes_sd_configs:
      - role: pod
    relabel_configs:
      - source_labels: [__meta_kubernetes_pod_annotation_prometheus_io_scrape]
        action: keep
        regex: true

Backend service discovery yang didukung meliputi Kubernetes, Consul, EC2, Azure, GCE, penemuan berbasis DNS, dan penemuan berbasis file — menjadikan Prometheus dapat beradaptasi dengan hampir semua topologi infrastruktur.

Kasus Penggunaan Prometheus

Prometheus unggul dalam berbagai skenario pemantauan:

Pemantauan Infrastruktur

Kumpulkan metrik tingkat server — CPU, memori, disk, jaringan — dari setiap node di armada Anda. Baik Anda menjalankan satu Dedicated Server atau cluster besar, Prometheus memberikan visibilitas terpadu di semua host.

Application Performance Monitoring (APM)

Lacak tingkat permintaan, tingkat kesalahan, latensi respons (metode RED), dan konsumsi sumber daya untuk aplikasi web dan API. Library klien Prometheus tersedia untuk Go, Python, Java, Ruby, Node.js, dan lainnya.

Pemantauan Kubernetes dan Container

Prometheus terintegrasi secara native dengan Kubernetes melalui exporter kube-state-metrics dan cAdvisor, memberikan visibilitas mendalam ke dalam kesehatan pod, kuota sumber daya, status deployment, dan metrik tingkat cluster.

Pemantauan Database

Pantau performa kueri, utilisasi connection pool, lag replikasi, dan rasio cache hit untuk database seperti PostgreSQL, MySQL, dan Redis menggunakan exporter khusus.

Metrik Bisnis Kustom

Instrumentasikan aplikasi Anda sendiri untuk mengekspos metrik khusus domain — seperti pesanan yang diproses per detik, sesi pengguna aktif, atau tingkat transaksi pembayaran — memungkinkan observabilitas tingkat bisnis di samping metrik teknis.

Pemantauan Beban Kerja GPU

Untuk tim yang menjalankan beban kerja machine learning atau komputasi berperforma tinggi, Prometheus dapat berintegrasi dengan exporter DCGM untuk memantau utilisasi GPU, memori, dan suhu. Ini berpadu baik dengan AlexHost GPU Hosting untuk infrastruktur AI dan ML.

Prometheus vs. Solusi Pemantauan Alternatif

FiturPrometheusNagiosZabbixDatadog
Model DataTime-series dengan labelBerbasis pemeriksaanBerbasis itemTime-series dengan tag
Model PengumpulanPull (+ Pushgateway)Pemeriksaan Aktif/PasifBerbasis agenBerbasis agen
Bahasa KueriPromQLTidak adaKustomKustom
Native KubernetesYa (kelas pertama)TerbatasTerbatasYa (berbayar)
BiayaGratis / Sumber TerbukaGratis / Sumber TerbukaGratis / Sumber TerbukaSaaS Komersial
SkalabilitasTinggi (dengan Thanos/Cortex)SedangSedangTinggi

Praktik Terbaik Produksi

Menerapkan Prometheus di produksi memerlukan perhatian terhadap beberapa masalah operasional:

  • Retensi Data: Periode retensi default adalah 15 hari. Sesuaikan --storage.tsdb.retention.time berdasarkan kapasitas penyimpanan dan persyaratan kepatuhan Anda. Untuk penyimpanan jangka panjang, pertimbangkan Thanos atau Cortex.
  • Keamanan: Batasi akses ke UI web dan API Prometheus menggunakan reverse proxy (Nginx atau Caddy) dengan autentikasi. Prometheus tidak menyertakan autentikasi bawaan.
  • Ketersediaan Tinggi: Jalankan beberapa instance Prometheus yang mengambil target yang sama untuk redundansi. Gunakan fitur clustering Alertmanager untuk mencegah notifikasi duplikat.
  • Manajemen Kardinalitas: Hindari label dengan kardinalitas tinggi (misalnya, ID pengguna, ID permintaan) dalam nama metrik, karena dapat menyebabkan masalah memori dan performa.
  • Enkripsi TLS: Aktifkan TLS untuk endpoint scrape dan API Prometheus. Padukan ini dengan SSL Certificate untuk mengamankan semua komunikasi antara komponen Prometheus.
  • Perencanaan Sumber Daya: Prometheus intensif memori. Alokasikan RAM yang cukup berdasarkan jumlah time series aktif. Aturan umum adalah sekitar 1–2 byte per sampel dalam memori.

Pertanyaan yang Sering Diajukan

T: Apa perbedaan antara Prometheus dan Grafana?

Prometheus adalah backend pemantauan dan peringatan — ia mengumpulkan, menyimpan, dan mengkueri metrik. Grafana adalah frontend visualisasi yang terhubung ke Prometheus (dan sumber data lainnya) untuk merender dashboard. Keduanya adalah alat yang saling melengkapi, bukan alternatif.

T: Bisakah Prometheus memantau server Windows?

Ya. Windows Exporter (sebelumnya WMI Exporter) mengekspos metrik sistem Windows dalam format yang kompatibel dengan Prometheus, mencakup CPU, memori, disk, jaringan, IIS, dan lainnya.

T: Bagaimana Prometheus menangani ketersediaan tinggi?

Prometheus sendiri dirancang untuk dijalankan sebagai instance tunggal per cluster. Untuk HA, Anda menjalankan dua server Prometheus identik yang mengambil target yang sama. Alertmanager mendukung clustering native untuk mendeduplikasi peringatan di beberapa instance Prometheus.

T: Untuk apa PromQL digunakan?

PromQL (Prometheus Query Language) digunakan untuk mengkueri data time-series yang tersimpan di Prometheus. Ini mendukung kueri instan, kueri rentang, agregasi, operasi matematika, dan fungsi — memungkinkan segalanya mulai dari pencarian metrik sederhana hingga ekspresi deteksi anomali yang kompleks.

Kesimpulan

Prometheus adalah solusi pemantauan kelas produksi yang telah teruji dalam pertempuran, memberikan visibilitas mendalam dan real-time ke dalam kesehatan dan performa seluruh tumpukan infrastruktur Anda. Arsitektur berbasis pull-nya, model data multi-dimensi, bahasa kueri PromQL yang powerful, dan integrasi mulus dengan alat seperti Grafana dan Alertmanager menjadikannya standar emas untuk observabilitas modern.

Baik Anda memantau satu server Linux, armada Dedicated Server, cluster Kubernetes, atau aplikasi layanan mikro yang kompleks, Prometheus berskala untuk memenuhi kebutuhan Anda. Dengan mengikuti langkah-langkah dalam panduan ini — menginstal Prometheus, menerapkan Node Exporter, mengonfigurasi dashboard Grafana, dan menyiapkan aturan peringatan cerdas — Anda akan memiliki fondasi pemantauan yang kuat yang membantu Anda mendeteksi anomali lebih awal, merespons insiden lebih cepat, dan terus meningkatkan keandalan sistem.

Mulailah dengan dasar-dasarnya, iterasikan dashboard dan ambang batas peringatan Anda seiring Anda mempelajari perilaku normal sistem Anda, dan secara progresif perluas cakupan ke setiap lapisan tumpukan Anda. Prometheus bukan sekadar alat pemantauan — ini adalah landasan rekayasa keandalan situs modern.

15%

Hemat 15% di Semua Layanan Hosting

Uji kemampuanmu dan dapatkan Diskon pada paket hosting apa saja

Gunakan kode:

Skills
Memulai