今天準備開始研究研究當前很是流行的Grafana+Influxdb監控系統,二者都是很是輕量級的應用可是功能卻異常強大,能夠說Grafana在做圖顯示方面真的絕不遜色與Cacti。git
開源軟件cAdvisor(Container Advisor)是用於監控容器運行狀態的利器之一,該項目主頁爲https://github.com/google/cadvisor,它被用於多個與docker相關的開源項目中。實際上在Kubernetes系統中,cAdvisor已經被默認集成到了kubelet組件內。cAdvisor提供了web界面可供瀏覽器訪問,在接下來的環境中咱們會部署CAdvisor來收集數據信息。github
說到Grafana就不得不提到Influxdb數據庫,Influxdb是用Go語言編寫的一個開源的分佈式時序、事件和指標數據庫,不須要外部依賴,該項目的主頁爲https://www.influxdata.com。web
它有三大特性:sql
同時,它還有如下幾大特色:docker
Grafana是一個可視化面板(Dashboard),有着很是漂亮的圖表和佈局展現,功能齊全的度量儀表盤和圖形編輯器,支持Graphite、zabbix、InfluxDB、Prometheus和OpenTSDB做爲數據源。Grafana主要特性:靈活豐富的圖形化選項;能夠混合多種風格;支持白天和夜間模式;多個數據源。其項目官方地址爲https://grafana.com。shell
1.下載influxdb容器。
docker search influxdb
數據庫
INDEX NAME DESCRIPTION STARS OFFICIAL AUTOMATED docker.io docker.io/influxdb InfluxDB is an open source time series dat... 481 [OK] docker.io docker.io/tutum/influxdb InfluxDB image - listens in port 8083 (web... 219 [OK] docker.io docker.io/telegraf Telegraf is an agent for collecting metric... 156 [OK] docker.io docker.io/chronograf Chronograf is a visualization tool for tim... 85 [OK]
docker pull docker.io/influxdb
2.運行influxdb容器。
docker run -d -p 8086:8086 --name influxdb docker.io/influxdb
瀏覽器
Influxdb在0.13版本之後就已經關閉了web管理界面,可是目前在國內查到的文檔大可能是時間比較久的文檔,因此配置時大多存在web界面的配置,實際上在1.2之後的版本中web管理界面就已經被刪除了,因此咱們這裏作的端口映射只作了一個。bash
3.進入容器配置所需數據庫以及帳戶信息。
docker ps
less
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 404c10bd3531 docker.io/influxdb "/entrypoint.sh in..." 22 minutes ago Up 21 minutes 0.0.0.0:8086->8086/tcp influxdb
docker exec -it 404 /bin/bash
influx
Connected to http://localhost:8086 version 1.5.3 InfluxDB shell version: 1.5.3
在咱們登陸到Influxdb中能夠顯示出咱們當前Influxdb數據庫的版本信息。
create database cadvisor
use cadvisor
CREATE USER "root" WITH PASSWORD '123456' WITH ALL PRIVILEGES
4.退出數據庫在界面進行登陸測試。
influx -username root -password 123456 -database cadvisor
咱們首先建立了爲Grafana提供數據的數據庫名稱併爲此數據庫建立了一個帳戶及密碼。
1.下載cAdvisor鏡像。
docker pull docker.io/google/cadvisor
2.運行cAdvisor容器。
運行前首先要查看influxdb的ip地址,或者直接使用本機映射的地址,以便咱們啓動時的鏈接。
docker inspect --format '{{ .NetworkSettings.IPAddress }}' 404
172.17.0.2
sudo docker run \ --volume=/:/rootfs:ro \ --volume=/var/run:/var/run:rw \ --volume=/sys:/sys:ro \ --volume=/var/lib/docker/:/var/lib/docker:ro \ --volume=/dev/disk/:/dev/disk:ro \ --publish=8080:8080 \ --detach=true \ --name=cadvisor \ --privileged=true \ google/cadvisor:latest \ -storage_driver=influxdb \ -storage_driver_db=cadvisor \ -storage_driver_user=root \ -storage_driver_password=123456 \ -storage_driver_host=172.17.0.2:8086
以上建立命令能夠查看cAdvisor官網,須要注意的是,咱們要爲cAdvisor提供鏈接Influxdb的配置信息,使用官網提供的配置方法建立cAdvisor時會有如下報錯須要注意:
F0606 02:09:21.619637 1 cadvisor.go:156] Failed to start container manager: open /sys/fs/cgroup/cpuset: permission denied
解決辦法:(建立容器時添加上此選項)
--privileged=true \
3.登陸web界面,查看cAdvisor展現數據。
4.登陸influxdb查看cAdvisor是否將數據推送到influxdb。
use cadvisor
show measurements
name: measurements name ---- cpu_usage_per_cpu cpu_usage_system cpu_usage_total cpu_usage_user fs_limit fs_usage load_average memory_usage memory_working_set rx_bytes rx_errors tx_bytes tx_errors
至此,咱們已經能夠確認cAdvisor已經收集了數據並存儲至Influxdb中,接下來咱們就能夠建立Grafana用來展現咱們當前的數據了。
1.下載Grafana鏡像。
docker search grafana
INDEX NAME DESCRIPTION STARS OFFICIAL AUTOMATED docker.io docker.io/grafana/grafana The official Grafana docker container 761 docker.io docker.io/kamon/grafana_graphite All in one image running StatsD, Graphite ... 145 docker.io docker.io/monitoringartist/grafana-xxl Dockerized Grafana 5.x/4.x/3.x with all pr... 61 [OK] docker.io docker.io/tutum/grafana Grafana dashboard for InfluxDB. Please set... 56 [OK] docker.io docker.io/samuelebistoletti/docker-statsd-influxdb-grafana Docker Image with Telegraf (StatsD), Influ... 50
docker pull docker.io/grafana/grafana
2.建立Grafana容器。
docker run -d --name grafana -p 3000:3000 docker.io/grafana/grafana
3.登陸web界面配置Grafana。
Grafana默認的用戶名密碼爲admin
1.修改默認用戶密碼。
2.將Influxdb數據源添加入Grafana。
3.建立新的Dashbord。
4.接下來就是更詳細的配置項等待咱們配置。
數據展現: