一個宿主機上能夠運行多個容器化應用,容器化應用運行於宿主機上,咱們須要知道該容器的運行狀況,包括 CPU使用率、內存佔用、網絡情況以及磁盤空間等等一系列信息,並且這些信息隨時間變化,咱們稱其爲時序數據,本文將實操 如何搭建一個可視化的監控中心 來收集這些承載着具體應用的容器的時序信息並可視化分析與展現!web
動手了,動手了...docker
注: 本文首發於 My 公衆號 CodeSheep ,可 長按 或 掃描 下面的 當心心 來訂閱 ↓ ↓ ↓
能夠將其視爲一個數據庫服務,其確實用於存儲數據。之因此選用該數據庫,緣由正如官網所說:shell
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
特別注意項:c#
在運行上述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則是一款開源的時序數據分析工具,並且界面專業易用,等下等部署好了,你們就能感覺到:socket
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指標,並將其同時顯示於圖中,怎麼樣是否是很直觀!
這裏能夠摸索的設置項還有不少,好比一些座標自定義、顯示策略自定義,甚至咱們還能夠自定義報警策略等等
做者更多的SpringBt實踐文章在此:
若是有興趣,也能夠抽點時間看看做者一些關於容器化、微服務化方面的文章: