Setup Consul Server
Semua bisa kalian cek di halaman dokumentasi Consul
- 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
- 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"
-
Jalankan Consul server dengan
sudo service consul start
-
Cek member dengan
consul members
, jika kamu mengubah config.hcl gunakanconsul reload
Setup Consul Agent
- 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
- 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"
}
}
]
-
Jalankan Consul agent dengan
sudo service consul start
-
Masuk ke Consul server, cek member dengan
consul members
, jika kamu mengubah config.hcl gunakanconsul reload
Integrasi dengan Prometheus
- 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