---
# System prepended metadata

title: consul

---

# consul
# **SERVER**
https://github.com/hashicorp/learn-consul-docker
git clone下來
我都放/opt下面
進入/datacenter-deploy-secure

會使用這三個檔案
client.json
consul-acl.json
docker-compose.yml

先用docker-compose up -d 啟動

可以參考10.55.1.116
/opt/learn-consul-docker/datacenter-deploy-secure
consul web ui 是 http://10.55.1.116:8500

先用docker-compose up -d 啟動

和gitlab上有不同的是
consul-acl.json裡會加上下面這行
"acl_master_token": "2d337b97-1885-4d28-a96d-ec50ed77f63a"
用token登入
![](https://i.imgur.com/16QIYjo.png)

acl.json可以直接複製10.55.1.116裡的


啟動後檢查是否可以查看web ui介面(port 8500)

# **Linux-CLIENT**
通常放在/opt/tools/consul.sh
會在rc.local放 /bin/bash /opt/tools/consul.sh 讓他開機自動執行
server端正常後 client只要執行這隻東東馬上就可以在web ui裡看到
![](https://i.imgur.com/zUmcExH.png)
裡面長這樣
例如第七行
你在client下指令
local_ip=`ip route get 1 | awk '{print $7;exit}'`
然後在輸入 echo $local_ip 他就可以抓的到client的ip
![](https://i.imgur.com/sV4QCAa.png)

第14行，每個環境都要到ad dns上加上consul server的dns，
在ad上新建這筆A紀錄，才能解析的到。
![](https://i.imgur.com/in2aR18.png)
故不同環境consul.sh的第14行都需要修改。

# **Windows-CLIENT**
機器記得要先裝windows_exporter

以下已註冊10.30.95.188的win10機器為例
(consul server為10.30.95.56)

curl -X PUT --header "X-Consul-Token: 2d337b97-1885-4d28-a96d-ec50ed77f63a" -d '{
"id": "'"10.30.95.188"'",
"name": "'"10.30.0.0/16"'",
"address": "'"10.30.95.188"'",
"port": 9182,
"tags": ["'"team=IT"','"env=M"'"],
"checks": [{"http": "'"http://10.30.95.188:9182/metrics"'", "interval": "10s"}]}' \
http://10.30.95.56:8500/v1/agent/service/register

取消註冊可以直接執行以下

curl -X PUT --header "X-Consul-Token: 2d337b97-1885-4d28-a96d-ec50ed77f63a" -d '{
"id": "'"10.30.95.188"'",
"name": "'"10.30.0.0/16"'",
"address": "'"10.30.95.188"'",
"port": 9182,
"tags": ["'"team=IT"','"env=M"'"],
"checks": [{"http": "'"http://10.30.95.188:9182/metrics"'", "interval": "10s"}]}' \
http://10.30.95.56:8500/v1/agent/service/deregister/10.30.95.188

---

# **CLIENT&ansblie-playbook**

在新建機器上會跑以下三個playbook腳本
1. playbook/hostname.yml 
* 機器命名正規化 & firewalld add 9100 port

跑hostname.yml 之前inventories/T4/DBA 內容須先改為以下格式
![](https://i.imgur.com/CGKTILF.png)

2. playbooks/install-node-exporter.yml 
* 確保node-exporter有安裝

3. playbooks/depoly-consul.yml 
* copy consul.sh & 執行




# **prom**
https://gitlab.com/
https://gitlab.com/tools111/prom.git
ansible-playbook app-prom.yml -i inventories/host -e host=GCP
執行完後 docker-compose up -d
docker ps
![](https://i.imgur.com/hvxr0Wj.jpg)

vim /opt/prom/prometheus/prometheus.yml
![](https://i.imgur.com/aP7u0BS.png)
上圖是T4我將consul機器分成10.30.0.0,10.40.0.0兩群

garfana import dashborad
http://10.30.95.56/d/9CWBz0bik/1-node-exporter-for-prometheus-dashboard-cn-20201010?orgId=1









