# 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