摘要:原文地址介紹如何使用的機(jī)制,自動發(fā)現(xiàn)并抓取網(wǎng)絡(luò)中的容器所提供的指標(biāo)。我們需要一種動態(tài)發(fā)現(xiàn)容器的方法。使用的機(jī)制,半自動的發(fā)現(xiàn)容器。文章最開始說到的半自動就是這個意思,我們得事先知道記錄有哪些,然后讓去發(fā)現(xiàn)這些記錄背后對應(yīng)的容器有哪些。
原文地址
介紹如何使用Prometheus的dns service discovery機(jī)制,自動發(fā)現(xiàn)并抓取Docker swarm overlay網(wǎng)絡(luò)中的容器所提供的指標(biāo)。
使用docker service create/docker stack deploy能夠很方便管理多個docker host,并且對應(yīng)用做擴(kuò)縮容。那么我們?nèi)绾巫ト∵@些動態(tài)創(chuàng)建的容器應(yīng)用所提供的指標(biāo)呢?
在《使用Prometheus+Grafana監(jiān)控JVM》一文里我們使用了static_config靜態(tài)配置指標(biāo)抓取目標(biāo),這顯然在docker swarm環(huán)境里是不合適的。我們需要一種動態(tài)發(fā)現(xiàn)容器的方法。
解決思路如下:
使用《一種生產(chǎn)環(huán)境Docker Overlay Network的配置方案》提到的方法配置overlay網(wǎng)絡(luò),并且把docker service、stack、standalone container都掛到這個overlay網(wǎng)絡(luò)里。
把Prometheus也掛到這個overlay網(wǎng)絡(luò)里。
使用Prometheus的DNS service discovery機(jī)制,半自動的發(fā)現(xiàn)容器。
本文所提到的腳本可以在這里下載
下面構(gòu)建一個實(shí)驗環(huán)境以說明方法。
第一步:構(gòu)建overlay network根據(jù)《一種生產(chǎn)環(huán)境Docker Overlay Network的配置方案》里提到的方法,創(chuàng)建Docker swarm,和一個overlay網(wǎng)絡(luò),名字叫做test-overlay:
docker network create -d overlay --attachable test-overlay第二步:啟動容器
為了方便起見,使用prometheus-mock-data來模擬一個提供指標(biāo)的應(yīng)用,這樣就能夠避免繁瑣的jmx-exporter。
1) 新建一個目錄,名字叫做docker-swarm-demo
2) 新建一個文件scrape-data.txt,這個文件就是我們要提供的假指標(biāo),內(nèi)容如下:
# HELP x mock metric # TYPE x gauge x 1 --- # HELP x mock metric # TYPE x gauge x 2 --- # HELP x mock metric # TYPE x gauge x 3 --- # HELP x mock metric # TYPE x gauge x 4
3) 為了演示docker service和standalone container都能被采集到,會啟動這兩種形式的容器:
4) 使用docker service create啟動一個service,replicas=3(注意--name參數(shù)):
docker service create --name mock --replicas 3 --network test-overlay --limit-memory 96M --mount type=bind,src=$(pwd)/scrape-data.txt,dst=/home/java-app/etc/scrape-data.txt chanjarster/prometheus-mock-data:latest
4) 使用docker run啟動一個standalone container(注意--name參數(shù)):
docker run -d -v $(pwd)/scrape-data.txt:/home/java-app/etc/scrape-data.txt --network test-overlay --name standalone-mock chanjarster/prometheus-mock-data:latest第三步:啟動Prometheus
1) 在之前新建目錄docker-swarm-demo里創(chuàng)建文件prom-config.yml,內(nèi)容如下:
scrape_configs: - job_name: "swarm-service" scrape_interval: 30s dns_sd_configs: - names: - tasks.mock - standalone-mock type: A port: 8080 relabel_configs: - source_labels: ["__meta_dns_name"] target_label: "service"
注意到上面的兩個關(guān)鍵配置:
設(shè)定了兩個DNS A記錄,tasks.mock和standalone-mock。
tasks.mock是Docker自動為docker service mock創(chuàng)建的,而standalone-mock就是容器名。文章最開始說到的半自動就是這個意思,我們得事先知道DNS A記錄有哪些,然后讓Prometheus去發(fā)現(xiàn)這些DNS A記錄背后對應(yīng)的容器有哪些。
把__meta_dns_name的值設(shè)置到指標(biāo)的service 這個label里。
2) 啟動Prometheus:
docker run -d --name=prometheus --network test-overlay -p 9090:9090 -v $(pwd):/prometheus-config -v $(pwd)/prom-data:/prometheus prom/prometheus --config.file=/prometheus-config/prom-config.yml
3) 訪問 http://localhost:9090 看看Prometheus是否啟動成功,在輸入框里輸入x然后執(zhí)行,應(yīng)該可以看到如下圖的結(jié)果:
其中3個instance是屬于tasks.mock的,還有一個則是standalone container(如果沒有看到4個instance,那么等一會兒再試)。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/28048.html
摘要:配置網(wǎng)絡(luò)參照生產(chǎn)環(huán)境配置中的和子網(wǎng)章節(jié)。特別注意觀察和的子網(wǎng)是否與已有網(wǎng)絡(luò)沖突如果有沖突則參考網(wǎng)絡(luò)的中的方法修改子網(wǎng)。部署使用的是的監(jiān)控方案。創(chuàng)建應(yīng)用網(wǎng)絡(luò)創(chuàng)建你也可以改成自己的名字參考網(wǎng)絡(luò)的檢查子網(wǎng)與是否配置正確。 原文 大綱 本文只是一種實(shí)際部署方案的例子,涉及到的技術(shù)有(除Docker/Docker Swarm外): Docker overlay network Fluentd...
摘要:后續(xù)將其他節(jié)點(diǎn)加入集群都會用到這個值將節(jié)點(diǎn)加入集群查看節(jié)點(diǎn)信息相關(guān)命令創(chuàng)建服務(wù)更新服務(wù)刪除服務(wù)減少服務(wù)實(shí)例增加服務(wù)實(shí)例查看所有服務(wù)查看服務(wù)的容器狀態(tài)查看服務(wù)的詳細(xì)信息。前言本篇是Docker第十三篇,Docker的使用至此就介紹完成,接下來繼續(xù)Kubernetes。Docker系列文章:為什么要學(xué)習(xí)DockerDocker基本概念Docker鏡像基本原理Docker容器數(shù)據(jù)卷Dockerfi...
摘要:介紹的集群的自動發(fā)現(xiàn)有兩種方式與本文使用的是的方式準(zhǔn)備安裝以上版本初始化集群創(chuàng)建一個名為的網(wǎng)絡(luò)開放端口初始化集群部份可看我之前的博客使用搭建多主機(jī)集群創(chuàng)建網(wǎng)絡(luò)查看當(dāng)前的網(wǎng)絡(luò)也是一個網(wǎng)絡(luò)可以跨主機(jī)通信本教程會創(chuàng)建一個新的創(chuàng)建網(wǎng)絡(luò) 介紹 docker 1.12 的swarm 集群的自動發(fā)現(xiàn)有兩種方式, virtual IP address (VIP) 與 DNS round-robin, ...
摘要:由于沒有了中心化的負(fù)載均衡器,集群不會因某臺機(jī)器異常而導(dǎo)致整個服務(wù)對外不可用,很好的避免了單點(diǎn)問題,同時也帶了可擴(kuò)展性。 Mesos/Marathon 折騰久了,我們一直希望有機(jī)會深入到 Swarm 內(nèi)部一探究竟。 另外, Mesos 這一套東西雖然是久經(jīng)企業(yè)級考驗的, 但是安裝、部署和使用相對復(fù)雜,上手有門檻。同時,在今年的 DockerCon 上,內(nèi)置了Swarm 功能的 Dock...
摘要:本文將以多主機(jī)網(wǎng)絡(luò)環(huán)境為基礎(chǔ),探討如何利用內(nèi)置編排工具模式對各主機(jī)上的容器加以管理。在本文中,我們將立足于臺主機(jī)與在負(fù)載均衡之上部署應(yīng)用程序容器,同時將其接入一套覆蓋網(wǎng)絡(luò)。管理節(jié)點(diǎn)會利用負(fù)載均衡以將服務(wù)公布至集群之外。 本文將以多主機(jī)網(wǎng)絡(luò)環(huán)境為基礎(chǔ),探討如何利用內(nèi)置編排工具 Docker Swarm模式對各主機(jī)上的容器加以管理。 Docker Engine – Swarm模式 在...
閱讀 2065·2021-10-11 10:59
閱讀 924·2021-09-23 11:21
閱讀 3541·2021-09-06 15:02
閱讀 1610·2021-08-19 10:25
閱讀 3364·2021-07-30 11:59
閱讀 2362·2019-08-30 11:27
閱讀 2574·2019-08-30 11:20
閱讀 2964·2019-08-29 13:15