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

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
danadmin_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
Tambah Data Source Prometheus #
- Dari Home, buka menu:
Connections → Your connections → Data sources → Add data source
- Pilih Prometheus
- Masukkan URL Prometheus
- Klik Save & Test, pastikan status Data source is working ✅
Import Dashboard #
- Dari menu Dashboard → New → Import
- Masukkan Dashboard ID
13396
(community dashboard untuk Consul) → klik Load - Atur Name dan Folder sesuai kebutuhan
- Pilih Prometheus sebagai data source → klik Import
Grafana akan menampilkan dashboard monitoring untuk Consul.
Ulangi langkah yang sama untuk import dashboard Node Exporter (misalnya menggunakan ID populer 1860
).
Hasil Dashboard #
- Dashboard Consul menampilkan status cluster, members, health check, dsb.
- Dashboard Node Exporter menampilkan CPU, memory, filesystem, dan resource host lainnya.