cAdvisor、InfluxDB、Grafana搭建Docker1.12性能監控平臺

通過cadvisor+influxdb+grafana三者有機結合,打造跨主機容器監控。

優點

1、跨主機監控,可擴展
2、容器自發現
3、歷史數據長期保存
4、自定義配置程度高
5、採集間隔很短,達到秒級
6、多種方式告警

缺點

1、不能自動隱藏已停止的容器
2、grafana會展現所有的數據,導致展示長時間的數據時,各個數據點重疊。

展示長時間

組件

數據採集–cAdvisor

cAdvisor爲Docker容器用戶提供了了解運行時容器資源使用和性能特徵的工具。

cAdvisor是單機版容器監控系統,通過收集宿主機的cgroup統計信息,經過加工處理後通過圖展示在頁面上。

這些信息包括宿主機、容器的CPU、內存、網絡流量、磁盤空間等資源隔離和運行數據。
cadvisor資源隔離

工作流程大致:

1)、收集、聚集、處理宿主機的cgroup統計數據
2)、寫入後端基於事件序列的數據庫(本文使用InfluxDB)
3)、展示時讀取基於事件序列的數據庫

優勢:

部署、維護簡單:通過容器形式部署,“開箱即用”,無需配置即可使用
監控容器和宿主機
通過圖展示,比較美觀
支持多種基於事件序列的數據庫,寫入和讀取快

不足之處:

只能看到2-3分鐘的監控數據
消耗的內存較高,通常幾百M
頁面加載較慢

cadvisor監控圖

數據存儲–InfluxDB

InfluxDB是一個開源分佈式時序、事件和指標數據庫。

influxdb使用Go語言編寫,無需外部依賴。其設計目標是實現分佈式和水平伸縮擴展。

其主要特色功能

基於時間序列,支持與時間有關的相關函數(如最大,最小,求和等)
可度量性:可以實時對大量數據進行計算
基於事件:支持任意的事件數據

InfluxDB的主要特點

無結構(無模式):可以是任意數量的列
可拓展的
支持min, max, sum, count, mean, median 等一系列函數,方便統計
原生的HTTP支持,內置HTTP API
強大的類SQL語法
自帶管理界面,方便使用

在使用過程中發現influxdb缺點:

在select查詢時,字段必須是time或者value,不能爲其他字段
    例如:select container_name from "cpu_usage_user" limit 100無結果

監控配置和展示–Grafana

Grafana是一款開源的監控繪圖工具。

對收集來的數據進行展示和分析。

特性:

用於可視化大型測量數據的開源程序,提供了強大和優雅的方式去創建、共享、瀏覽數據。
dashboard中展示不同metric數據源中的數據。
常用於因特網基礎設施和應用分析,但在其他領域也有機會用到,比如:工業傳感器、家庭自動化、過程控制等等。
有熱插拔控制面板和可擴展的數據源,目前已經支持Graphite、Cloudwatch、Prometheus、InfluxDB、Elasticsearch。
自定義配置靈活,支持模板、展示數據內容配置等等。
支持告警

部署

運行環境

宿主機:CentOS7 7.3.1611

docker版本爲1.12.6

通過docker容器方式部署。部署情況

                        cadvisor    influxdb    grafana
docker1 192.168.20.128  部署      部署       部署
docker2 192.168.20.129  部署      /          /    
docker3 192.168.20.130  部署      /          /

influxdb

創建容器

docker create -p 8083:8083 -p 8086:8086 -v /opt/influxdb:/var/lib/influxdb --name=influxdb --hostname=influxdb tutum/influxdb 
docker start influxdb
8086用於Influxdb數據讀寫,8083用於數據庫管理界面

InfluxDB容器創建成功後,可以通過http://192.168.20.128:8083/打開管理界面。

創建用戶

點擊頁面右上角的設置圖標,數據賬號和密碼,點擊save
influxdb設置密碼

創建數據庫

創建cadvisor數據庫,用於收集存儲Docker的性能數據,在輸入框輸入CREATE DATABASE “cadvisor”然後按回車,執行命令。

在輸入框輸入SHOW DATABASES,可以看到剛纔創建的數據庫
influxdb建立數據庫

cadvisor

創建cAdvisor容器

docker run --volume=/:/rootfs:ro --volume=/var/run:/var/run:rw --volume=/sys:/sys:ro --volume=/var/lib/docker/:/var/lib/docker:ro --hostname=cadvisor --publish=8080:8080 --detach=true --name=cadvisor google/cadvisor -storage_driver=influxdb -storage_driver_host=192.168.20.128:8086 -storage_driver_db=cadvisor -storage_driver_user=root -storage_driver_password=1qaz2wsx

-storage_driver=influxdb 指定存儲驅動,使cadvisor將數據存儲到數據庫中,更多存儲插件

-storage_driver_host=influxdb:8086 InfluxDB數據庫的地址

-storage_driver_db=cadvisor 數據庫名稱

如果要指定用戶名可以用-storage_driver_user參數,默認是root

如果要指定密碼可以用-storage_driver_password參數,默認是root

cAdvisor運行以後,可以通過http://宿主機IP:8080/查看到Docker運行的機器和容器情況。

驗證cAdvisor是否已經向InfluxDB存入數據

打開http://192.168.20.128:8083/的InfluxDB管理界面

點擊右上角Database切換到cadvisor數據庫

然後在輸入框輸入SHOW MEASUREMENTS可以看到已經創建了很多個表

這裏寫圖片描述

grafana

部署容器

docker create -p 3000:3000 --hostname grafana --name grafana grafana/grafana

默認admin的用戶名和密碼是admin/admin

配置

訪問http://192.168.20.128:3000

添加數據庫

grafana數據庫配置
這裏寫圖片描述

配置模板

這裏寫圖片描述
這裏寫圖片描述

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