[轉]Docker容器可視化監控中心搭建

【原文鏈接】https://www.jianshu.com/p/9e47ffaf5e31?hmsr=toutiao.io&utm_medium=toutiao.io&utm_source=toutiao.io

概述

一個宿主機上可以運行多個容器化應用,容器化應用運行於宿主機上,我們需要知道該容器的運行情況,包括 CPU使用率、內存佔用、網絡狀況以及磁盤空間等等一系列信息,而且這些信息隨時間變化,我們稱其爲時序數據,本文將實操 如何搭建一個可視化的監控中心 來收集這些承載着具體應用的容器的時序信息並可視化分析與展示!

動手了,動手了...


準備鏡像

  • adviser:負責收集容器的隨時間變化的數據
  • influxdb:負責存儲時序數據
  • grafana:負責分析和展示時序數據

鏡像準備


部署Influxdb服務

可以將其視爲一個數據庫服務,其確實用於存儲數據。之所以選用該數據庫,原因正如官網所說:

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
  • 進入influxdb容器內部,並執行influx命令:
docker exec -it influxdb influx

進入influxdb的shell命令行

  • 創建數據庫test和root用戶用於本次試驗測試
CREATE DATABASE "test"
CREATE USER "root" WITH PASSWORD 'root' WITH ALL PRIVILEGES

創建測試數據庫並查看


部署cAdvisor服務

谷歌的cadvisor可以用於收集Docker容器的時序信息,包括容器運行過程中的資源使用情況和性能數據。

  • 運行cadvisor服務
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需要):

  • --privileged=true

設置爲true之後,容器內的root才擁有真正的root權限,可以看到host上的設備,並且可以執行mount;否者容器內的root只是外部的一個普通用戶權限。由於cadvisor需要通過socket訪問docker守護進程,在CentOs和RHEL系統中需要這個這個選項。

  • --volume=/cgroup:/cgroup:ro

對於CentOS和RHEL系統的某些版本(比如CentOS6),cgroup的層級掛在/cgroup目錄,所以運行cadvisor時需要額外添加–volume=/cgroup:/cgroup:ro選項。


部署Grafana服務

grafana則是一款開源的時序數據分析工具,而且界面專業易用,等下等部署好了,大家就能感受到:

docker run -d -p 5000:3000 \
-v ~/grafana:/var/lib/grafana \
--link=influxdb:influxdb \
--name grafana grafana/grafana

至此3個容器都已經啓動了:

3個容器均已啓動完成

下面開始具體實驗了


實戰

  • 訪問grafana服務

打開localhost:5000來訪問grafana的web服務,此時提示你需要登錄,注意用戶名和密碼都是admin

grafana登陸界面

登錄後可以看到grafana的主頁面:

grafana的主頁面

看的很明顯,在Grafana上有好幾個步驟需要做,這裏Install Grafana已經完成了,接下來我們需要:

  • Add data source
  • Create dashboard
  • …...

  • Add Data Source

點擊Add data source進入

Add Data Source

然後主要是Setting選項卡設置

Setting

我們需要根據實際情況來填寫各項內容:

填寫Setting中的內容

Data source添加成功會予以提示

Data source添加成功

數據源添加完成以後,我們需要添加儀表盤(Dashboard)


  • Add Dashboard

點擊Add dashboard進入

Add dashboard

這裏有很多類型的儀表盤供選擇,我們選用最常用的Graph就好

Graph

進入之後,點擊Panel Title下拉列表,再選擇Edit進行編輯即可

Panel Title → Edit

在Edit裏面主要的就是需要添加查詢的條件,繼續看下文


  • Add Query Editor

查詢條件中我們可以選擇要監控的指標:

Add Query Editor

這裏選一個memory usage好了,然後要監控的容器選擇grafana自身好了。

當然這裏不止可以監控一個指標,也不止可以監控一個容器,更多組合我們只需要在下面並列着一個一個添加query條目就好!

最後我添加了三個監控條件,分別用於監控grafana、influxdb和cadvisor三個容器的memory usage指標,並將其同時顯示於圖中,怎麼樣是不是很直觀!

監測三個容器的memory usage指標

這裏可以摸索的設置項還有很多,比如一些座標自定義、顯示策略自定義,甚至我們還可以自定義報警策略等等

作者:hansonwang99 鏈接:https://www.jianshu.com/p/9e47ffaf5e31 來源:簡書 著作權歸作者所有。商業轉載請聯繫作者獲得授權,非商業轉載請註明出處。

概述

一個宿主機上可以運行多個容器化應用,容器化應用運行於宿主機上,我們需要知道該容器的運行情況,包括 CPU使用率、內存佔用、網絡狀況以及磁盤空間等等一系列信息,而且這些信息隨時間變化,我們稱其爲時序數據,本文將實操 如何搭建一個可視化的監控中心 來收集這些承載着具體應用的容器的時序信息並可視化分析與展示!

動手了,動手了...


準備鏡像

  • adviser:負責收集容器的隨時間變化的數據
  • influxdb:負責存儲時序數據
  • grafana:負責分析和展示時序數據

鏡像準備


部署Influxdb服務

可以將其視爲一個數據庫服務,其確實用於存儲數據。之所以選用該數據庫,原因正如官網所說:

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
  • 進入influxdb容器內部,並執行influx命令:
docker exec -it influxdb influx

進入influxdb的shell命令行

  • 創建數據庫test和root用戶用於本次試驗測試
CREATE DATABASE "test"
CREATE USER "root" WITH PASSWORD 'root' WITH ALL PRIVILEGES

創建測試數據庫並查看


部署cAdvisor服務

谷歌的cadvisor可以用於收集Docker容器的時序信息,包括容器運行過程中的資源使用情況和性能數據。

  • 運行cadvisor服務
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需要):

  • --privileged=true

設置爲true之後,容器內的root才擁有真正的root權限,可以看到host上的設備,並且可以執行mount;否者容器內的root只是外部的一個普通用戶權限。由於cadvisor需要通過socket訪問docker守護進程,在CentOs和RHEL系統中需要這個這個選項。

  • --volume=/cgroup:/cgroup:ro

對於CentOS和RHEL系統的某些版本(比如CentOS6),cgroup的層級掛在/cgroup目錄,所以運行cadvisor時需要額外添加–volume=/cgroup:/cgroup:ro選項。


部署Grafana服務

grafana則是一款開源的時序數據分析工具,而且界面專業易用,等下等部署好了,大家就能感受到:

docker run -d -p 5000:3000 \
-v ~/grafana:/var/lib/grafana \
--link=influxdb:influxdb \
--name grafana grafana/grafana

至此3個容器都已經啓動了:

3個容器均已啓動完成

下面開始具體實驗了


實戰

  • 訪問grafana服務

打開localhost:5000來訪問grafana的web服務,此時提示你需要登錄,注意用戶名和密碼都是admin

grafana登陸界面

登錄後可以看到grafana的主頁面:

grafana的主頁面

看的很明顯,在Grafana上有好幾個步驟需要做,這裏Install Grafana已經完成了,接下來我們需要:

  • Add data source
  • Create dashboard
  • …...

  • Add Data Source

點擊Add data source進入

Add Data Source

然後主要是Setting選項卡設置

Setting

我們需要根據實際情況來填寫各項內容:

填寫Setting中的內容

Data source添加成功會予以提示

Data source添加成功

數據源添加完成以後,我們需要添加儀表盤(Dashboard)


  • Add Dashboard

點擊Add dashboard進入

Add dashboard

這裏有很多類型的儀表盤供選擇,我們選用最常用的Graph就好

Graph

進入之後,點擊Panel Title下拉列表,再選擇Edit進行編輯即可

Panel Title → Edit

在Edit裏面主要的就是需要添加查詢的條件,繼續看下文


  • Add Query Editor

查詢條件中我們可以選擇要監控的指標:

Add Query Editor

這裏選一個memory usage好了,然後要監控的容器選擇grafana自身好了。

當然這裏不止可以監控一個指標,也不止可以監控一個容器,更多組合我們只需要在下面並列着一個一個添加query條目就好!

最後我添加了三個監控條件,分別用於監控grafana、influxdb和cadvisor三個容器的memory usage指標,並將其同時顯示於圖中,怎麼樣是不是很直觀!

監測三個容器的memory usage指標

這裏可以摸索的設置項還有很多,比如一些座標自定義、顯示策略自定義,甚至我們還可以自定義報警策略等等

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章