Skip to main content
  1. Posts/

Monitoring Consul dengan Prometheus dan Grafana

·3 mins·
consul prometheus grafana consul
Table of Contents

Monitoring pada Consul server diperlukan untuk mengetahui performa serta mengumpulkan data metrik yang dapat ditampilkan melalui Grafana. Agar metrik dapat dikirimkan dan dibaca di Grafana, dibutuhkan Prometheus sebagai data source.

Enable Telemetry di Consul
#

Buat file server.json dengan konfigurasi berikut:

{
  "datacenter": "dc1",
  "telemetry": {
    "prometheus_retention_time": "60s",
    "disable_hostname": true
  },
  "enable_local_script_checks": true,
  "enable_script_checks": true
}

Jalankan Consul sebagai server menggunakan Docker:

docker run -dit --name consul-server \
  -v $(pwd)/server.json:/consul/config/server.json:ro \
  -p 8500:8500 -p 8600:8600 \
  consul agent -server -ui -node=consul-server \
  -bootstrap-expect=1 -client=0.0.0.0

⚠️ Pastikan path server.json sesuai dengan lokasi file di host.

Jalankan perintah berikut untuk memastikan telemetry aktif:

curl http://127.0.0.1:8500/v1/agent/metrics

Contoh output (dipotong untuk ringkas):

{
  "Timestamp": "2023-06-05 00:15:30 +0000 UTC",
  "Gauges": [
    {"Name":"consul.autopilot.failure_tolerance","Value":0,"Labels":{}},
    {"Name":"consul.autopilot.healthy","Value":1,"Labels":{}},
    {"Name":"consul.consul.members.clients","Value":0,"Labels":{"datacenter":"dc1"}},
    {"Name":"consul.consul.members.servers","Value":1,"Labels":{"datacenter":"dc1"}}
  ]
}

Konfigurasi Node Exporter
#

Untuk memonitor resource host (CPU, memory, filesystem, dll.), jalankan Node Exporter:

docker run -dit --name node-exporter \
  -p 9100:9100 \
  -v /proc:/host/proc:ro \
  -v /sys:/host/sys:ro \
  -v /:/rootfs:ro \
  prom/node-exporter \
    --path.procfs=/host/proc \
    --path.sysfs=/host/sys \
    --collector.filesystem.ignored-mount-points \
    "^/(sys|proc|dev|host|etc|rootfs/var/lib/docker/containers|rootfs/var/lib/docker/overlay2|rootfs/run/docker/netns|rootfs/var/lib/docker/aufs)($$|/)"

Konfigurasi Prometheus
#

Buat file konfigurasi prometheus.yml seperti berikut:

global:
  scrape_interval: 30s
  scrape_timeout: 10s

scrape_configs:
  # Prometheus internal metrics
  - job_name: services
    metrics_path: /metrics
    static_configs:
      - targets:
          - 'prom:9090'

  # Consul metrics
  - job_name: consul
    metrics_path: /v1/agent/metrics
    params:
      format: ['prometheus']
    static_configs:
      - targets: ['consul-server:8500']

  # Node Exporter metrics
  - job_name: node
    metrics_path: /metrics
    static_configs:
      - targets:
          - 'node-exporter:9100'

Gunakan Docker untuk menjalankan Prometheus dengan konfigurasi di atas:

docker run -dit --name prom \
  -v $(pwd)/prometheus.yml:/etc/prometheus/prometheus.yml \
  -p 9090:9090 \
  prom/prometheus \
    --web.enable-lifecycle \
    --config.file=/etc/prometheus/prometheus.yml

⚠️ Pastikan path prometheus.yml sesuai dengan lokasi file di host.

Buka Prometheus UI melalui browser di http://127.0.0.1:9090 Lalu cek menu Status → Targets, pastikan job berikut dalam kondisi UP:

  • services
  • consul
  • node
cek status

Konfigurasi Grafana
#

Buat file konfigurasi grafana.ini dengan isi minimal sebagai berikut:

# Sample file: https://github.com/grafana/grafana/blob/master/conf/sample.ini

instance_name = ${HOSTNAME}

#################################### Security ############################
[security]
# default admin user, created on startup
admin_user = admin

# default admin password, can be changed before first start of grafana, or in profile settings
admin_password = admin

💡 admin_user dan admin_password sebaiknya diganti sesuai kebutuhan sebelum production.

Jalankan grafana.

docker run -dit --name grafana \
  -p 3000:3000 \
  -v $(pwd)/grafana.ini:/etc/grafana/grafana.ini \
  grafana/grafana

Akses Grafana melalui browser di http://127.0.0.1:3000

akses dashboard

Tambah Data Source Prometheus
#

  1. Dari Home, buka menu: Connections → Your connections → Data sources → Add data source
    add datasource
  2. Pilih Prometheus
  3. Masukkan URL Prometheus
    masukan url
  4. Klik Save & Test, pastikan status Data source is working

Import Dashboard
#

  1. Dari menu Dashboard → New → Import
    new import
  2. Masukkan Dashboard ID 13396 (community dashboard untuk Consul) → klik Load
    load id
  3. Atur Name dan Folder sesuai kebutuhan
  4. Pilih Prometheus sebagai data source → klik Import
    import prometheus

Grafana akan menampilkan dashboard monitoring untuk Consul.

Ulangi langkah yang sama untuk import dashboard Node Exporter (misalnya menggunakan ID populer 1860).

node exporter

Hasil Dashboard
#

  • Dashboard Consul menampilkan status cluster, members, health check, dsb.
    Dashboard Consul
  • Dashboard Node Exporter menampilkan CPU, memory, filesystem, dan resource host lainnya.
    Dashboard Node Exporter

Related

Modifying Headers Consul
·1 min
consul consul
Setup Multi Datacenter menggunakan Consul
·2 mins
consul consul
Membangun Koneksi Peering Antar Cluster Consul
·2 mins
consul consul
Install Consul dengan Docker
·2 mins
consul docker consul
Register Service ke Consul
·2 mins
consul consul
Port Forwarding dengan Firewalld
·1 min
firewalld linux firewalld