Skip to main content
  1. Posts/

Monitor Consul menggunakan Prometheus dan Grafana

·2 mins·
consul prometheus grafana consul
Table of Contents

Monitoring pada consul server terkadang diperlukan agar dapat mengetahui performa atau sekedar mengumpulkan data metric agar dapat dibaca melalui Grafana. Agar metric dapat dikirimkan ke Grafana, maka diperlukan prometheus sebagai data sumber atau data source.

Enable telemetry
#

Buat file server.json lalu edit seperti berikut.

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

Lalu jalankan consul sebagai server.

docker run -dit --name consul-server \
-v 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

Selanjutnya test akses metrics

curl http://127.0.0.1:8500/v1/agent/metrics
{"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"}},{"Name":"consul.consul.state.config_entries","Value":0,"Labels":
...

Configure node-exporter
#

Untuk menjalankan node-exporter

docker run -dit --name node \
-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)($$|/)"

Configure prometheus
#

Buat file prometheus.yml lalu edit seperti berikut

global:
  scrape_interval: 30s
  scrape_timeout: 10s

scrape_configs:
  - job_name: services
    metrics_path: /metrics
    static_configs:
      - targets:
          - 'prom:9090'
  - job_name: 'consul'
    metrics_path: '/v1/agent/metrics'
    params:
      format: ['prometheus']
    static_configs:
      - targets: ['consul-server:8500']
  - job_name: node
    metrics_path: /metrics
    static_configs:
      - targets:
          - 'node-exporter:9100'

Jalankan prometheus

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

Akses http://127.0.0.1:9090 melalui browser dan pastikan job service dan consul kondisi UP ![](/assets/img/Screen Shot 2023-06-06 at 13.03.16.png)

Configure grafana
#

Buat file grafana.ini lalu edit seperti 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 dapat Anda sesuaikan. {: .prompt-info }

Jalankan grafana

docker run -dit --name grafana \
-p 3000:3000 \
-v ./grafana.ini:/etc/grafana/grafana.ini \
grafana/grafana

Selanjutnya akses dashboard grafana melalui http://127.0.0.1:3000 ![](/assets/img/Screen Shot 2023-06-06 at 13.12.56.png)

Dari Home arahkan ke Connections > Your connections > Data sources dan klik Add data source ![](/assets/img/Screen Shot 2023-06-06 at 13.23.30.png)

Pilih Prometheus dan masukan URL ![](/assets/img/Screen Shot 2023-06-06 at 13.30.11.png)

Pastikan Data source is working {: .prompt-info }

Kembali ke Home lalu arahkan ke menu Dashboard > New > Import ![](/assets/img/Screen Shot 2023-06-06 at 13.19.21.png)

Masukan id 13396 lalu klik Load ![](/assets/img/Screen Shot 2023-06-06 at 13.20.47.png)

Untuk bagian Name dan Folder dapat Anda sesuaikan lalu pilih prometheus dan klik Import ![](/assets/img/Screen Shot 2023-06-06 at 13.22.32.png)

Tampilan dashboard ![](/assets/img/Screen Shot 2023-06-06 at 13.34.38.png)

Lakukan hal yang sama untuk import dashboard node exporter. ![](/assets/img/Screen Shot 2023-06-06 at 13.36.08.png)

Tampilan dashboard ![](/assets/img/Screen Shot 2023-06-06 at 13.48.46.png)

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