咱們採用如今比較流行的cAdvisor+InfluxDB+Grafana組合進行Docker監控。python
開源軟件cAdvisor(Container Advisor)是用於監控容器運行狀態的利器之一,該項目主頁爲https://github.com/google/cadvisor,它被用於多個與docker相關的開源項目中。實際上在Kubernetes系統中,cAdvisor已經被默認集成到了kubelet組件內。cAdvisor提供了web界面可供瀏覽器訪問,在接下來的環境中咱們會部署CAdvisor來收集數據信息。git
Influxdb是用Go語言編寫的一個開源的分佈式時序、事件和指標數據庫,不須要外部依賴,該項目的主頁爲https://www.influxdata.com。github
它有三大特性:web
同時,它還有如下幾大特色:sql
Grafana是一個可視化面板(Dashboard),有着很是漂亮的圖表和佈局展現,功能齊全的度量儀表盤和圖形編輯器,支持Graphite、zabbix、InfluxDB、Prometheus和OpenTSDB做爲數據源。Grafana主要特性:靈活豐富的圖形化選項;能夠混合多種風格;支持白天和夜間模式;多個數據源。其項目官方地址爲https://grafana.com。docker
a、建立網絡數據庫
[root@localhost ~]# docker network create monitor
46d9e7c32080ac35e1d3034ecf4edf2af804de9352eca37373f7437e37b1368d
b、建立influxdb容器瀏覽器
[root@localhost ~]# docker run -d --name influxdb --net monitor -p 8083:8083 -p 8086:8086 tutum/influxdb
a0fdc618d380ece7dabd7f1f802935502d0c6ae3f606216afed5dafc43ea8da5
c、訪問influxdb網絡
經過容器的8083端口訪問web頁面。less
d、建立數據庫cadvisor和用戶
cadvisor數據庫用於存儲數據,用戶用於grafana上進行鏈接,後續會用到此用戶。
e、建立cadvisor容器
$docker run -d \
--name=cadvisor \
--net monitor \
-p 8080:8080 \
--mount type=bind,src=/,dst=/rootfs,ro \
--mount type=bind,src=/var/run,dst=/var/run \
--mount type=bind,src=/sys,dst=/sys,ro \
--mount type=bind,src=/var/lib/docker/,dst=/var/lib/docker,ro \
google/cadvisor \
-storage_driver=influxdb \
-storage_driver_db=cadvisor \
-storage_driver_host=influxdb:8086
查看容器是否建立成功:
訪問cadvisor
經過8081端口訪問cadvisor:
f、安裝grafana容器
docker run -d --name grafana --net monitor -p 3000:3000 grafana/grafana
g、訪問grafana
a、添加數據源
b、製做dashboard
新建dashboard,選擇類型爲Graph:
c、添加監控指標
d、製做模板
按照c步驟中添加各個指標,而後作成模板,後續你想監控哪一個容器就直接替換container_name便可,是否是棒棒噠?
到這裏cAdvisor+InfluxDB+Grafana容器監控系統就部署完成了,是否是很是簡單?
可是,要作好容器的監控,知道這些還遠遠不行,咱們不但願每次都手動去添加吧?若是有成千上萬個容器,到那個時候該怎麼監控呢?確定是一種自動添加方式了,而不是原始的手工操做哦。