今天准备开始研究研究当前很是流行的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.接下来就是更详细的配置项等待咱们配置。
数据展现: