本文已得到原做者霸都民工哥受權。docker
對於一個物理機上運行多個容器應用時,容器的運行狀況如:CPU使用率、內存使用率、網絡狀態、磁盤空間
等信息,都是須要去了解的,所以監控是必須的。對於容器的監控方案可謂多種多樣,自己自帶命令docker stats
。數據庫
[root@docker ~]# docker stats CONTAINER CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS bd96d72ed9c7 0.04% 14.97 MiB / 7.64 GiB 0.19% 8.22 MB / 805 MB 0 B / 0 B 9 665563143eb7 0.01% 18.12 MiB / 7.64 GiB 0.23% 19.7 MB / 18.5 MB 0 B / 39.4 MB 8 f2304dad5855 0.18% 98.45 MiB / 7.64 GiB 1.26% 1.07 GB / 9.97 MB 0 B / 2.13 GB 9
今天民工哥要介紹的是一款開源方案 cAdvisor+InfluxDB+Grafana。瀏覽器
cadvisor谷歌公司本身用來監控他們基礎設施的一款工具,這個工具厲害之處不只能監控docker容器的實時信息,並且還能將你的cadvisor這容器所在的主機的系統的實時信息,可是因爲cadvisor只是能監控到實時的信息而不能保存。微信
InfluxDB 是用 Go 語言編寫的一個開源分佈式時序、事件和指標數據庫,無需外部依賴。因此咱們要使用 influxdb 將這些實時監控到的信息存放起來。網絡
- 基於時間序列,支持與時間有關的相關函數(如最大,最小,求和等);
- 可度量性:你能夠實時對大量數據進行計算;
- 基於事件:它支持任意的事件數據;
- 無結構(無模式);
- 能夠是任意數量的列;
- 可拓展的;
- 支持 min, max, sum, count, mean, median 等一系列函數,方便統計;
- 原生的 HTTP 支持,內置 HTTP API;
- 強大的類 SQL 語法;
- 自帶管理界面,方便使用
- 參考文章:https://www.influxdata.com/pr...
Grafana 是一個可視化面板(Dashboard),有着很是漂亮的圖表和佈局展現,功能齊全的度量儀表盤和圖形編輯器,支持 Graphite、zabbix、InfluxDB、Prometheus 和 OpenTSDB 做爲數據源。運維
- 靈活豐富的圖形化選項
- 能夠混合多種風格
- 支持白天和夜間模式
- 多個數據源
首先得有 docker 環境,這個就不用介紹了吧,請參考前面的文章 tcp
[root@master ~]# docker run -d --name influxdb -p 8086:8086 tutum/influxdb Unable to find image 'tutum/influxdb:latest' locally Trying to pull repository docker.io/tutum/influxdb ... latest: Pulling from docker.io/tutum/influxdb a3ed95caeb02: Pull complete 23efb549476f: Pull complete aa2f8df21433: Pull complete ef072d3c9b41: Pull complete c9f371853f28: Pull complete a248b0871c3c: Pull complete 749db6d368d0: Pull complete db2492acfcc3: Pull complete b7e7d2e12d53: Pull complete 4272a53eef10: Pull complete 9b2fefdb5321: Pull complete Digest: sha256:5b7c5e318303ad059f3d1a73d084c12cb39ae4f35f7391b79b0ff2c0ba45304b Status: Downloaded newer image for docker.io/tutum/influxdb:latest f384db08ffc78e01fc27bf4c35dc6503b0fd2473cd8d5114b4d8a5475f928b53
說明:分佈式
- -d :後臺運行此容器
- --name :啓運容器分配名字influxdb
- -p :映射端口,8083端口爲infuxdb管理端口,8086端口是infuxdb的數據端口
- tutum/influxdb:經過這個容器來運行的,默認會在docker官方倉庫pull下來
查看容器 函數
[root@master ~]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES f2304dad5855 tutum/influxdb "/run.sh" 4 seconds ago Up 4 seconds 0.0.0.0:8083->8083/tcp, 0.0.0.0:8086->8086/tcp influxdb
如今能夠經過瀏覽器去訪問influxdb的管理端了
接下來建立cadvisor的數據庫與用戶,這個用於後期配置granfa
回車直接建立完成以下圖
建立管理用戶
建立完成以下圖
同時也是能夠使用CLI命令行界面來建立的,命令同樣
[root@master ~]# docker run -d \ --name=cadvisor \ -p 8082:8080 \ -v /:/rootfs,ro \ -v /var/run:/var/run \ -v /sys:/sys,ro \ -v /var/lib/docker/:/var/lib/docker,ro \ google/cadvisor \ -storage_driver=influxdb \ -storage_driver_db=cadvisor \ -storage_driver_host=influxdb:8086 Unable to find image 'google/cadvisor:latest' locally Trying to pull repository docker.io/google/cadvisor ... latest: Pulling from docker.io/google/cadvisor ab7e51e37a18: Pull complete a2dc2f1bce51: Pull complete 3b017de60d4f: Pull complete Digest: sha256:9e347affc725efd3bfe95aa69362cf833aa810f84e6cb9eed1cb65c35216632a Status: Downloaded newer image for docker.io/google/cadvisor:latest a212dc33c9424b6e36485334511e6317bdebc06977b9af374b81b0cab113e724
說明:
- -d :後臺運行此容器
- --name :啓運容器分配名字cadvisor
- -p :映射端口8082:8080(因爲環境8080端口被佔用,cadvisor默認端口是8080不建議修改)
- -v:把宿主機的目錄映射到容器中,這些目錄都是cadviso須要採集的目錄文件和監控內容
- -storage_driver:須要指定cadvisor的存儲驅動、數據庫主機、數據庫名
- google/cadvisor:經過cadvisor這個鏡像來運行容器,默認會在docker官方倉庫把鏡像pull下來;
查看cadvisor容器:
[root@master ~]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES a212dc33c942 google/cadvisor "/usr/bin/cadvisor..." 2 minutes ago Up 2 minutes 0.0.0.0:8082->8080/tcp cadvisor
如今能夠經過瀏覽訪問cadisor的管理頁面
cadvisor的基礎圖形功能也酷炫的
測試是否寫入influxdb數據庫
[root@master ~]# docker run -d --name grafana -p 3000:3000 grafana/grafana Unable to find image 'grafana/grafana:latest' locally Trying to pull repository docker.io/grafana/grafana ... latest: Pulling from docker.io/grafana/grafana f2aa67a397c4: Pull complete 89573effc7c8: Pull complete b55c103da375: Pull complete Digest: sha256:364bec4a39ecbec744ea4270aae35f6554eb6f2047b3ee08f7b5f1134857c32c Status: Downloaded newer image for docker.io/grafana/grafana:latest 665563143eb74e5e2e76b7a1533cbf67a68590d355b0b22d453eac07e0e0b616 [root@master ~]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 665563143eb7 grafana/grafana "/run.sh" 48 seconds ago Up 47 seconds 0.0.0.0:3000->3000/tcp grafana
訪問WEB管理端
用戶名:密碼 admin:admin
添加數據源
以後保存並測試鏈接
新建New dashboard
這裏隨便選擇一個容器作爲測試使用,實際環境可根據實際環境填寫
保存返回到HOME界面後,以下圖
最終的效果圖以下
做者:霸都民工哥
連接:https://mp.weixin.qq.com/s?...
來源:微信公衆號
更多相關閱讀:
docker容器監控初探
docker底層技術
從零開始瞭解docker
若是你還想了解更多,想和技術同僚分享切磋,可掃下方二維碼加好友,回覆yw,加入掘金運維技術交流羣