Prometheus 使用consul 服務(wù)發(fā)現(xiàn)

1. concul 內(nèi)部原理
unmin.club.png

Consul分為Client和Server兩種節(jié)點(所有的節(jié)點也被稱為Agent)竿拆,Server節(jié)點保存數(shù)據(jù)鸣驱,Client負(fù)責(zé)健康檢查及轉(zhuǎn)發(fā)數(shù)據(jù)請求到Server蠢壹;Server節(jié)點有一個Leader和多個Follower死姚,Leader節(jié)點會將數(shù)據(jù)同步到Follower歇终,Server的數(shù)量推薦是3個或者5個帆喇,在Leader掛掉的時候會啟動選舉機(jī)制產(chǎn)生一個新的Leader。

集群內(nèi)的Consul節(jié)點通過gossip協(xié)議(流言協(xié)議)維護(hù)成員關(guān)系油啤,也就是說某個節(jié)點了解集群內(nèi)現(xiàn)在還有哪些節(jié)點典徘,這些節(jié)點是Client還是Server。單個數(shù)據(jù)中心的流言協(xié)議同時使用TCP和UDP通信益咬,并且都使用8301端口逮诲。跨數(shù)據(jù)中心的流言協(xié)議也同時使用TCP和UDP通信幽告,端口使用8302梅鹦。

集群內(nèi)數(shù)據(jù)的讀寫請求既可以直接發(fā)到Server,也可以通過Client使用RPC轉(zhuǎn)發(fā)到Server冗锁,請求最終會到達(dá)Leader節(jié)點齐唆,在允許數(shù)據(jù)輕微陳舊的情況下,讀請求也可以在普通的Server節(jié)點完成冻河,集群內(nèi)數(shù)據(jù)的讀寫和復(fù)制都是通過TCP的8300端口完成箍邮。

具體consul的原理及架構(gòu)請訪問:http://blog.didispace.com/consul-service-discovery-exp/

2. 使用docker部署consul 集群
#啟動第1個Server節(jié)點,集群要求要有3個Server叨叙,將容器8500端口映射到主機(jī)8900端口媒殉,同時開啟管理界面
docker run -d --name=consul1 -p 8900:8500 -e CONSUL_BIND_INTERFACE=eth0 consul agent --server=true --bootstrap-expect=3 --client=0.0.0.0 -ui
 
#啟動第2個Server節(jié)點,并加入集群
docker run -d --name=consul2 -e CONSUL_BIND_INTERFACE=eth0 consul agent --server=true --client=0.0.0.0 --join 172.17.0.1
 
#啟動第3個Server節(jié)點摔敛,并加入集群
docker run -d --name=consul3 -e CONSUL_BIND_INTERFACE=eth0 consul agent --server=true --client=0.0.0.0 --join 172.17.0.2
 
#啟動第4個Client節(jié)點廷蓉,并加入集群
docker run -d --name=consul4 -e CONSUL_BIND_INTERFACE=eth0 consul agent --server=false --client=0.0.0.0 --join 172.17.0.2

瀏覽器訪問容器映射的8900端口:


unmin.club
3. 服務(wù)注冊到Consul

使用HTTP API 方式注冊node-exporter服務(wù)到Consul


 curl -X PUT -d '{"id": "192.168.16.173","name": "node-exporter","address": "192.168.16.173","port": ''9100,"tags": ["DEV"], "checks": [{"http": "http://192.168.16.173:9100/","interval": "5s"}]}'     http://172.17.0.4:8500/v1/agent/service/register

解注冊:

curl --request PUT http://172.17.0.4:8500/v1/agent/service/deregister/192.168.166.14

注冊多個服務(wù)到consul,使用腳本:

#!/bin/bash 
all_IP=`cat  /opt/ip`
name=cadvisor
port=9100
for  I  in $all_IP
do
        curl -X PUT -d '{"id": "'$I'","name": "'$name'","address": "'$I'","port": '$port',"tags": ["cadvisor"], "checks": [{"http": "http://'$I':'$port'/","interval": "5s"}]}'     http://172.17.0.4:8500/v1/agent/service/register
done
unmin.club
4. Prometheus 配置consul 服務(wù)發(fā)現(xiàn)

consul 可以使用的元標(biāo)簽:

__meta_consul_address:目標(biāo)的地址
__meta_consul_dc:目標(biāo)的數(shù)據(jù)中心名稱
__meta_consul_tagged_address_<key>:每個節(jié)點標(biāo)記目標(biāo)的地址鍵值
__meta_consul_metadata_<key>:目標(biāo)的每個節(jié)點元數(shù)據(jù)鍵值
__meta_consul_node:為目標(biāo)定義的節(jié)點名稱
__meta_consul_service_address:目標(biāo)的服務(wù)地址
__meta_consul_service_id:目標(biāo)的服務(wù)ID
__meta_consul_service_metadata_<key>:目標(biāo)的每個服務(wù)元數(shù)據(jù)鍵值
__meta_consul_service_port:目標(biāo)的服務(wù)端口
__meta_consul_service:目標(biāo)所屬服務(wù)的名稱
__meta_consul_tags:標(biāo)記分隔符連接的目標(biāo)的標(biāo)記列表

修改Prometheus.yml 文件马昙,使用relabel將consul的元標(biāo)簽重寫便于查看

  - job_name: 'consul'
    consul_sd_configs:
      - server: '192.168.16.173:8900'
        services: []  #匹配所有service
    relabel_configs:
      - source_labels: [__meta_consul_service] #service 源標(biāo)簽
        regex: "consul"  #匹配為"consul" 的service
        action: drop       # 執(zhí)行的動作
      - source_labels: [__meta_consul_service]  # 將service 的label重寫為appname
        target_label: appname
      - source_labels: [__meta_consul_service_address]
        target_label: instance
      - source_labels: [__meta_consul_tags]
        target_label:  job

Prometheus 熱加載更新

curl -X POST http://192.168.16.173:9090/-/reload

訪問Prometheus web頁面


unmin.club

應(yīng)用注冊到consul

在不需要開發(fā)修改代碼的前提下桃犬,我們可以使用Prometheus的jmx-exporter收集應(yīng)用的相關(guān)指標(biāo),在應(yīng)用中間件tomcat/weblogic等調(diào)用jmx-exporter行楞,具體方式查看http://www.reibang.com/p/dfd6ba5206dc

啟動應(yīng)用后會啟動12345端口暴露jvm數(shù)據(jù)攒暇,現(xiàn)在我們要做的就是將這個端口注冊到Consul上,然后Prometheus會從consul 拉取應(yīng)用主機(jī)子房。

使用腳本實現(xiàn)

 $ cat     ip
TEST        192.168.166.10      192.168.166.11
UNMIN       192.168.166.12      192.168.166.13
---------------
       
$ cat consul.sh
#!/bin/bash
port=12345
while read app
do
    echo ${app}
    app_tmp=(${app})
    echo ${app_tmp[0]}
    length=${#app_tmp[@]}
    echo ${length}
    for((k=1;k<${length};k++));
    do
        echo ${app_tmp[k]}
    curl -X PUT -d '{"id": "'${app_tmp[k]}'","name": "'${app_tmp[0]}'","address": "'${app_tmp[k]}'","port": '$port',"tags": ["MIDL"],"checks": [{"http": "http://'${app_tmp[k]}':'$port'/","interval": "5s"}]}'     http://172.17.0.4:8500/v1/agent/service/register        
        done

done < ip

執(zhí)行腳本注冊到consul


unmin.club

配置Grafana JVM 監(jiān)控模板

Load 8563模板

unmin.club

報警的配置查看:http://www.reibang.com/p/dfd6ba5206dc

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末形用,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子证杭,更是在濱河造成了極大的恐慌田度,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,311評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件解愤,死亡現(xiàn)場離奇詭異镇饺,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)送讲,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,339評論 2 382
  • 文/潘曉璐 我一進(jìn)店門奸笤,熙熙樓的掌柜王于貴愁眉苦臉地迎上來惋啃,“玉大人,你說我怎么就攤上這事监右”呙穑” “怎么了?”我有些...
    開封第一講書人閱讀 152,671評論 0 342
  • 文/不壞的土叔 我叫張陵健盒,是天一觀的道長绒瘦。 經(jīng)常有香客問我,道長味榛,這世上最難降的妖魔是什么椭坚? 我笑而不...
    開封第一講書人閱讀 55,252評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮搏色,結(jié)果婚禮上善茎,老公的妹妹穿的比我還像新娘。我一直安慰自己频轿,他們只是感情好垂涯,可當(dāng)我...
    茶點故事閱讀 64,253評論 5 371
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著航邢,像睡著了一般耕赘。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上膳殷,一...
    開封第一講書人閱讀 49,031評論 1 285
  • 那天操骡,我揣著相機(jī)與錄音,去河邊找鬼赚窃。 笑死册招,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的勒极。 我是一名探鬼主播是掰,決...
    沈念sama閱讀 38,340評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼辱匿!你這毒婦竟也來了键痛?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 36,973評論 0 259
  • 序言:老撾萬榮一對情侶失蹤匾七,失蹤者是張志新(化名)和其女友劉穎絮短,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體乐尊,經(jīng)...
    沈念sama閱讀 43,466評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡戚丸,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,937評論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了扔嵌。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片限府。...
    茶點故事閱讀 38,039評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖痢缎,靈堂內(nèi)的尸體忽然破棺而出胁勺,到底是詐尸還是另有隱情,我是刑警寧澤独旷,帶...
    沈念sama閱讀 33,701評論 4 323
  • 正文 年R本政府宣布署穗,位于F島的核電站,受9級特大地震影響嵌洼,放射性物質(zhì)發(fā)生泄漏案疲。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,254評論 3 307
  • 文/蒙蒙 一麻养、第九天 我趴在偏房一處隱蔽的房頂上張望褐啡。 院中可真熱鬧,春花似錦鳖昌、人聲如沸备畦。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,259評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽懂盐。三九已至,卻和暖如春糕档,著一層夾襖步出監(jiān)牢的瞬間莉恼,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評論 1 262
  • 我被黑心中介騙來泰國打工速那, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留俐银,地道東北人。 一個月前我還...
    沈念sama閱讀 45,497評論 2 354
  • 正文 我出身青樓琅坡,卻偏偏與公主長得像悉患,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子榆俺,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,786評論 2 345