Setup Consul Server

Semua bisa kalian cek di halaman dokumentasi Consul

  1. Tambah repo dan install
wget -O - https://apt.releases.hashicorp.com/gpg | sudo gpg --dearmor -o /usr/share/keyrings/hashicorp-archive-keyring.gpg
echo "deb [signed-by=/usr/share/keyrings/hashicorp-archive-keyring.gpg] https://apt.releases.hashicorp.com $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/hashicorp.list
sudo apt update && sudo apt install consul
  1. Update consul config (/etc/consul.d/consul.hcl)
server = true
datacenter = "consul-server-1"
data_dir = "/opt/consul"

# Network configuration
bind_addr = "0.0.0.0" #bind to multiple IP
advertise_addr = "192.168.1.2"
client_addr = "0.0.0.0" #client came from anywhere



# Bootstrap configuration
bootstrap_expect = 1                  # Since this is a single server
bootstrap = true                      # Added to enable bootstrap mode
primary_datacenter = "consul-server-1"

# UI Configuration
ui_config {
  enabled = true
}

# Performance settings
performance {
  raft_multiplier = 1
}

# Node name
node_name = "consul-server-1"

# Basic settings
encrypt_verify_incoming = false
encrypt_verify_outgoing = false
leave_on_terminate = false

# Port configuration
ports {
  dns = 8600
  http = 8500
  https = -1
  grpc = 8502
  serf_lan = 8301
  serf_wan = 8302
  server = 8300
}

# Connect configuration
connect {
  enabled = true
}

# Enable address translation for WAN traffic
translate_wan_addrs = true

# Autopilot configuration
autopilot {
  cleanup_dead_servers = true
  last_contact_threshold = "200ms"
  max_trailing_logs = 250
  server_stabilization_time = "10s"
}

# Add retry_join for self-reference
retry_join = ["192.168.1.2"]  # Added to ensure server can rejoin
retry_interval = "30s"
  1. Jalankan Consul server dengan sudo service consul start

  2. Cek member dengan consul members, jika kamu mengubah config.hcl gunakan consul reload


Setup Consul Agent

  1. Tambah repo dan install
wget -O - https://apt.releases.hashicorp.com/gpg | sudo gpg --dearmor -o /usr/share/keyrings/hashicorp-archive-keyring.gpg
echo "deb [signed-by=/usr/share/keyrings/hashicorp-archive-keyring.gpg] https://apt.releases.hashicorp.com $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/hashicorp.list
sudo apt update && sudo apt install consul
  1. Update consul config (/etc/consul.d/consul.hcl)
datacenter = "consul-server-1"
data_dir = "/opt/consul"
server = false
client_addr = "192.168.1.11"
bind_addr = "192.168.1.11"
retry_join = ["192.168.1.2"] #server IP
retry_interval = "30s"
encrypt_verify_incoming = false
encrypt_verify_outgoing = false

# Services registration block as a list of service maps
services = [
  {
    name = "node-exporter"
    port = 9100
    tags = ["prometheus"]

    check {
      name     = "node_exporter health check"
      http     = "http://localhost:9100/metrics"
      interval = "10s"
    }
  },
  {
    name = "cadvisor"
    port = 9696
    tags = ["prometheus"]

    check {
      name     = "cadvisor health check"
      http     = "http://localhost:9696/metrics"
      interval = "10s"
    }
  }
]
  1. Jalankan Consul agent dengan sudo service consul start

  2. Masuk ke Consul server, cek member dengan consul members, jika kamu mengubah config.hcl gunakan consul reload


Integrasi dengan Prometheus

  1. Masuk ke prometheus.yml, tambahkan
- job_name: "consul-services"
  scrape_interval: 15s
  metrics_path: "/metrics"
  scheme: http
  consul_sd_configs:
    - server: "192.168.1.2:8500" # Use your Consul server IP instead of localhost
      services: ["node-exporter", "cadvisor"] # Specify the services you want to monitor
      tags: ["prometheus"] # Optional: filter by tags
      refresh_interval: 30s

  relabel_configs:
    - source_labels: [__meta_consul_service]
      target_label: service
    - source_labels: [__meta_consul_node]
      target_label: instance
    - source_labels: [__meta_consul_tags]
      target_label: tags