consul支援眾多監控工具進行對自身監控。我們這裡使用prometheus進行監控。
server監控我們採用prometheus基於檔案的自動發現(file_sd_configs
),也可以使用靜態配置(static_config
)。
因為我們要做consul的報警,報警需要有主機名,所以我們使用基於檔案的自動發現(file_sd_configs
),對每台主機打上consul_node_name
標籤。而靜態配置(static_config
)則不能對每一台主機單獨打標籤,只能對整體的targets列表打標籤。
配置檔案如下,此配置檔案是k8s的配置檔案
~]
# cat prometheus-configmap.yaml
apiversion
: v1
kind
: configmap
metadata
:name
: prometheus-config-consul
namespace
: prometheus
labels
:: prometheus-consul
environment
: prod
release
: release
data
:prometheus.yml:|
global:
external_labels:
region: cn-hangzhou
monitor: consul
replica: a
scrape_configs:
- job_name: prometheus
static_configs:
- targets:
- localhost:9090
-job_name
: consul-server
# 採集頻率
scrape_interval
: 60s
# 採集超時
scrape_timeout
: 10s
# 採集物件的path路徑
}]
至此,prometheus就可以採集的consul server的資料了,可以使用prometheus自帶的ui進行查詢。
對於consul client監控,因為consul client數量太多,成百上千臺。因此如果使用基於檔案的發現(file_sd_configs
)給每一台主機打標籤,維護這個檔案工作量太大(有主機的新增和刪除)。所以我們選用基於consul的自動發現(consul_sd_config
)`來實現client的監控。
要想讓prometheus或者別的服務發現,那這個服務必須得註冊到consul中。因此我們使用指令碼生成乙個簡單的服務註冊
~]
# cat create-consul-registration.sh
#!/bin/bash
addr=
`ip addr show|
awk -f '[ /]+'
'/eth[0-9]|em[0-9]/ && /inet/ '
`consul_conf_dir=
'/usr/local/consul/consul.d'
consul_redister_file=
"$consul_conf_dir/consul-members-registration.json"if[
[ -n "$addr"
&& -d $consul_conf_dir]]
;then
cat>
$<<-eof
","name"
:"consul-members",
"tags":[
"prometheus",
"client",
"consul-client"
], "address"
:"$",
"port"
: 8500,
"check":}
} eof
else
echo
"ip address is empty or the $consul_conf_dir does not exist"
fi
執行這個指令碼會在/usr/local/consul/consul.d/
下建立服務註冊的配置檔案consul-members-registration.json
~
]# cat /usr/local/consul/consul.d/consul-members-registration.json
}}
之後執行consul reload
載入配置
~]
# consul reload
此時,這個服務就已經註冊到consul中了,service名稱為consul-members
,service id為consul-10.111.74.86
,我們可以使用curl命令或者瀏覽器來驗證。
~
]# curl -s 127.0
.0.1
:8500
/v1/agent/services|python -m json.tool
,"port"
:8500
,"service"
:"consul-members"
,"tags":[
"prometheus"
,"client"
,"consul-client"],
"weights":}
}
配置如下:
~]
# cat prometheus-configmap.yaml
apiversion
: v1
kind
: configmap
metadata
:name
: prometheus-config-consul
namespace
: prometheus
labels
:: prometheus-consul
environment
: prod
release
: release
data
:prometheus.yml:|
global:
external_labels:
region: cn-hangzhou
monitor: consul
replica: a
scrape_configs:
- job_name: prometheus
static_configs:
- targets:
- localhost:9090
-job_name
: consul-client
# 採集頻率
scrape_interval
: 60s
# 採集超時
scrape_timeout
: 10s
# 採集物件的path路徑
: consul_service_id
因為我們要做consul的報警,報警需要有主機名、service名稱、service id、dc等資訊,所以我們需要對標籤進行重寫。可重寫的標籤有: 開發環境 測試環境 預生產環境 生產環境區別
環境分以下幾種 1.開發和配置環境 所有的開發和配置在這個環境裡進行。一般情況下,只有這個環境可以改配置和進行開發,並且一般不在這個環境下建立資料。開發環境就是每個開發人員電腦上的開發環境,只有開發人員可以配置和開發,寫資料測試放在測試環境 2.測試環境 3.預生產環境 不是必須的 從生產環境不定期...
開發環境 測試環境 預生產環境 生產環境區別
環境分以下幾種 1.開發和配置環境 所有的開發和配置在這個環境裡進行。一般情況下,只有這個環境可以改配置和進行開發,並且一般不在這個環境下建立資料。開發環境就是每個開發人員電腦上的開發環境,只有開發人員可以配置和開發,寫資料測試放在測試環境 2.測試環境 3.預生產環境 不是必須的 從生產環境不定期...
生產環境故障
系統執行緩慢 ipmi應該是用於系統管理的遠控程序,雖然這是乙個利用空餘的cpu資源進行一些介面自動調節的任務,但看著佔那麼多的資源還是怕出意外。並且現在已經出了意外 反正不管怎麼樣試試 通過kipmid max busy us值可占用以改變kipmi的排程方式實現降低cpu占用。臨時降低 echo...