【原文連接】https://www.jianshu.com/p/9e47ffaf5e31?hmsr=toutiao.io&utm_medium=toutiao.io&utm_source=toutiao.iojavascript
一個宿主機上能夠運行多個容器化應用,容器化應用運行於宿主機上,咱們須要知道該容器的運行狀況,包括 CPU使用率、內存佔用、網絡情況以及磁盤空間等等一系列信息,並且這些信息隨時間變化,咱們稱其爲時序數據,本文將實操 如何搭建一個可視化的監控中心 來收集這些承載着具體應用的容器的時序信息並可視化分析與展現!java
動手了,動手了...web
adviser:負責收集容器的隨時間變化的數據docker
influxdb:負責存儲時序數據shell
grafana:負責分析和展現時序數據數據庫
能夠將其視爲一個數據庫服務,其確實用於存儲數據。之因此選用該數據庫,緣由正如官網所說:bash
Open Source Time Series DB Platform for Metrics & Events (Time Series Data)網絡
下面咱們將該服務部署起來socket
docker run -d -p 8086:8086 \
-v ~/influxdb:/var/lib/influxdb \
--name influxdb tutum/influxdb
docker exec -it influxdb influx
CREATE DATABASE "test"
CREATE USER "root" WITH PASSWORD 'root' WITH ALL PRIVILEGES
谷歌的cadvisor能夠用於收集Docker容器的時序信息,包括容器運行過程當中的資源使用狀況和性能數據。工具
docker run -d \
-v /:/rootfs -v /var/run:/var/run -v /sys:/sys \ -v /var/lib/docker:/var/lib/docker \
--link=influxdb:influxdb --name cadvisor google/cadvisor:v0.27.3 \
--storage_driver=influxdb \
--storage_driver_host=influxdb:8086 \
--storage_driver_db=test \
--storage_driver_user=root \
--storage_driver_password=root
特別注意項:
在運行上述docker時,這裏有可能兩個其餘配置項須要添加(CentOS, RHEL須要):
設置爲true以後,容器內的root才擁有真正的root權限,能夠看到host上的設備,而且能夠執行mount;否者容器內的root只是外部的一個普通用戶權限。因爲cadvisor須要經過socket訪問docker守護進程,在CentOs和RHEL系統中須要這個這個選項。
對於CentOS和RHEL系統的某些版本(好比CentOS6),cgroup的層級掛在/cgroup目錄,因此運行cadvisor時須要額外添加–volume=/cgroup:/cgroup:ro選項。
grafana則是一款開源的時序數據分析工具,並且界面專業易用,等下等部署好了,你們就能感覺到:
docker run -d -p 5000:3000 \
-v ~/grafana:/var/lib/grafana \
--link=influxdb:influxdb \
--name grafana grafana/grafana
至此3個容器都已經啓動了:
下面開始具體實驗了
打開localhost:5000來訪問grafana的web服務,此時提示你須要登陸,注意用戶名和密碼都是admin
登陸後能夠看到grafana的主頁面:
看的很明顯,在Grafana上有好幾個步驟須要作,這裏Install Grafana
已經完成了,接下來咱們須要:
點擊Add data source進入
而後主要是Setting選項卡設置
咱們須要根據實際狀況來填寫各項內容:
Data source添加成功會予以提示
數據源添加完成之後,咱們須要添加儀表盤(Dashboard)
點擊Add dashboard進入
這裏有不少類型的儀表盤供選擇,咱們選用最經常使用的Graph就好
進入以後,點擊Panel Title下拉列表,再選擇Edit進行編輯便可
在Edit裏面主要的就是須要添加查詢的條件,繼續看下文
查詢條件中咱們能夠選擇要監控的指標:
這裏選一個memory usage好了,而後要監控的容器選擇grafana自身好了。
固然這裏不止能夠監控一個指標,也不止能夠監控一個容器,更多組合咱們只須要在下面並列着一個一個添加query條目就好!
最後我添加了三個監控條件,分別用於監控grafana、influxdb和cadvisor三個容器的memory usage指標,並將其同時顯示於圖中,怎麼樣是否是很直觀!
這裏能夠摸索的設置項還有不少,好比一些座標自定義、顯示策略自定義,甚至咱們還能夠自定義報警策略等等
一個宿主機上能夠運行多個容器化應用,容器化應用運行於宿主機上,咱們須要知道該容器的運行狀況,包括 CPU使用率、內存佔用、網絡情況以及磁盤空間等等一系列信息,並且這些信息隨時間變化,咱們稱其爲時序數據,本文將實操 如何搭建一個可視化的監控中心 來收集這些承載着具體應用的容器的時序信息並可視化分析與展現!
動手了,動手了...
adviser:負責收集容器的隨時間變化的數據
influxdb:負責存儲時序數據
grafana:負責分析和展現時序數據
能夠將其視爲一個數據庫服務,其確實用於存儲數據。之因此選用該數據庫,緣由正如官網所說:
Open Source Time Series DB Platform for Metrics & Events (Time Series Data)
下面咱們將該服務部署起來
docker run -d -p 8086:8086 \
-v ~/influxdb:/var/lib/influxdb \
--name influxdb tutum/influxdb
docker exec -it influxdb influx
CREATE DATABASE "test"
CREATE USER "root" WITH PASSWORD 'root' WITH ALL PRIVILEGES
谷歌的cadvisor能夠用於收集Docker容器的時序信息,包括容器運行過程當中的資源使用狀況和性能數據。
docker run -d \
-v /:/rootfs -v /var/run:/var/run -v /sys:/sys \ -v /var/lib/docker:/var/lib/docker \
--link=influxdb:influxdb --name cadvisor google/cadvisor:v0.27.3 \
--storage_driver=influxdb \
--storage_driver_host=influxdb:8086 \
--storage_driver_db=test \
--storage_driver_user=root \
--storage_driver_password=root
特別注意項:
在運行上述docker時,這裏有可能兩個其餘配置項須要添加(CentOS, RHEL須要):
設置爲true以後,容器內的root才擁有真正的root權限,能夠看到host上的設備,而且能夠執行mount;否者容器內的root只是外部的一個普通用戶權限。因爲cadvisor須要經過socket訪問docker守護進程,在CentOs和RHEL系統中須要這個這個選項。
對於CentOS和RHEL系統的某些版本(好比CentOS6),cgroup的層級掛在/cgroup目錄,因此運行cadvisor時須要額外添加–volume=/cgroup:/cgroup:ro選項。
grafana則是一款開源的時序數據分析工具,並且界面專業易用,等下等部署好了,你們就能感覺到:
docker run -d -p 5000:3000 \
-v ~/grafana:/var/lib/grafana \
--link=influxdb:influxdb \
--name grafana grafana/grafana
至此3個容器都已經啓動了:
下面開始具體實驗了
打開localhost:5000來訪問grafana的web服務,此時提示你須要登陸,注意用戶名和密碼都是admin
登陸後能夠看到grafana的主頁面:
看的很明顯,在Grafana上有好幾個步驟須要作,這裏Install Grafana
已經完成了,接下來咱們須要:
點擊Add data source進入
而後主要是Setting選項卡設置
咱們須要根據實際狀況來填寫各項內容:
Data source添加成功會予以提示
數據源添加完成之後,咱們須要添加儀表盤(Dashboard)
點擊Add dashboard進入
這裏有不少類型的儀表盤供選擇,咱們選用最經常使用的Graph就好
進入以後,點擊Panel Title下拉列表,再選擇Edit進行編輯便可
在Edit裏面主要的就是須要添加查詢的條件,繼續看下文
查詢條件中咱們能夠選擇要監控的指標:
這裏選一個memory usage好了,而後要監控的容器選擇grafana自身好了。
固然這裏不止能夠監控一個指標,也不止能夠監控一個容器,更多組合咱們只須要在下面並列着一個一個添加query條目就好!
最後我添加了三個監控條件,分別用於監控grafana、influxdb和cadvisor三個容器的memory usage指標,並將其同時顯示於圖中,怎麼樣是否是很直觀!
這裏能夠摸索的設置項還有不少,好比一些座標自定義、顯示策略自定義,甚至咱們還能夠自定義報警策略等等