Bootstrap

【云原生 • Docker】Docker容器监控之 CAdvisor+InfluxDB+Granfana

本章学习目标:
掌握时间序列数据库 influxDB 的安装与使用;
掌握容器监控工具 cAdvisor 的安装与使用;
掌握图表工具 Grafana 的安装与使用。

一、时序数据库 influxDB

1. 什么是 influxDB

influxDB 是一个分布式时间序列数据库,运维常用。由于 cAdvisor 仅仅显示实时信息,但是不能存储监视数据。因此我们需要提供时序数据库用于存储 cAdvisor 组件所提供的监控信息,以便显示除实时信息之外的时序数据。

实时信息之外的时序数据:比如当前的内存大小、CPU 的占用情况等。

在这里插入图片描述

2. influxDB 的安装

第一步:下载镜像;

docker pull tutum/influxdb

第二步:创建容器;

docker run -di \
    -p 8083:8083 \
    -p 8086:8086 \
    --expose 8090 \
    --expose 8099 \
    --name influxsrv \
    tutum/influxdb

该容器中:8083 端口为 Web 访问端口,8086 端口为数据写入端口,8090 和 8099 是要求暴露出来的端口。

第三步:容器创建成功之后,在本地进行访问,显示如下界面即安装完成;

在这里插入图片描述

3. influxDB 常用操作

创建数据库

我们可以通过查询模板 “Query Templates” 快速输入相关命令;

在这里插入图片描述
输入命令后按下回车,即可创建成功;
在这里插入图片描述

创建用户并授权

--创建用户 majinjian,密码 990214,为该用户赋予所有权限
CREATE USER "majinjian" WITH PASSWORD '990214' WITH ALL PRIVILEGES

在这里插入图片描述
此时搜索用户,可以看到我们创建的新用户;
在这里插入图片描述
用户授权语法如下:on 数据库名 to 用户名

--在 majinjian 数据库中为用户 majinjian 授予所有权限
grant all privileges on majinjian to majinjian
 
--在 majinjian 数据库中为用户 majinjian 授予写权限
grant WRITE on majinjian to majinjian
 
--在 majinjian 数据库中为用户 majinjian 授予读权限
grant READ on majinjian to majinjian

在这里插入图片描述

查看采集的数据

查看采集数据需要使用指令 SHOW MEASUREMENTS;可以看到此时是没有内容的,因为我们的数据库刚刚创建,并没有产生数据。

在这里插入图片描述

二、容器监控工具 cAdvisor

1. 什么是 cAdvisor

cAdvisor 是 Google 开源的用于监控基础设施应用的工具,是一个强大的监控工具,不需要任何配置就可以通过运行在 Docker 主机上的容器来监控 Docker 容器,而且可以监控 Docker 主机。

该应用的主要作用就是监控,而监控所产生的数据均存储于时序数据库 influxDB 中。

在这里插入图片描述

2. cAdvisor 的安装

第一步:下载镜像;

docker pull google/cadvisor

第二步:创建容器并连接 influxDB;

docker run \
--volume=/:/rootfs:ro \
--volume=/var/run:/var/run:rw \
--volume=/sys:/sys:ro \
--volume=/var/lib/docker/:/var/lib/docker:ro \
--publish=8080:8080 \
--detach=true \
--link influxsrv:influxsrv \
--name=cadvisor \
google/cadvisor \
-storage_driver=influxdb \
-storage_driver_db=majinjian \
-storage_driver_host=influxsrv:8086
  • -storage_driver_db=majinjian -storage_driver_host=influxsrv:8086 语法为连接 influxDB 数据库,此处的 majinjian 是我在 influxDB 中创建的数据库名。

第三步:在本地使用 虚拟机/服务器 IP:8080/containers/ 进行访问,看到以下界面即 cAdvisor 安装成功;
在这里插入图片描述
此时 cAdvisor 就已经处于运行状态了,它也会将监控产生的数据存入 influxDB 当中。
在这里插入图片描述
在这里插入图片描述
再次查看 influxDB 中的采集数据,可以看到已有数据产生;

在这里插入图片描述

三、图表工具 Granfana

1. 什么是 Grafana

通过上一节可以看到,在 influxDB 中查看数据时,数据比较凌乱且不够直观,而 Grafana 正是来解决这个问题的。

Grafana 是一个可视化面板,有着非常好的图表和布局展示,包含功能齐全的度量仪表盘和图形编辑器。支持 Graphite、zabbix、influxDB 和 OpenTSDB 作为数据源。

它的主要特性为:灵活丰富的图形化选项;可以混合多种风格;支持白天和夜间模式的切换;支持多个数据源。

在这里插入图片描述

2. Grafana 的安装

第一步:下载镜像

docker pull grafana/grafana

第二步:创建容器并连接 influxDB

docker run \
-d \
-p 3001:3000 \
-e INFLUXDB_HOST=influxsrv \
-e INFLUXDB_PORT=8086 \
-e INFLUXDB_NAME=majinjian \
-e INFLUXDB_USER=majinjian \
-e INFLUXDB_PASS=majinjian \
--link influxsrv:influxsrv \
--name grafana grafana/grafana

-e INFLUXDB_NAME=majinjian 数据库名称
-e INFLUXDB_USER=majinjian 数据库用户名
-e INFLUXDB_PASS=majinjian 数据库密码

第三步:本地浏览器进行访问,初始界面如下

在这里插入图片描述
输入用户名和密码登录,默认用户名为 admin,密码为 admin,首次登录后需要修改密码;
在这里插入图片描述

3. Grafana 的常用操作

添加数据源

点击设置 --> “Data sources”;
在这里插入图片描述
点击 “Add date source” 添加数据源,然后我们这里选择 influxDB;
在这里插入图片描述
设置相关参数;
在这里插入图片描述
在这里插入图片描述
点击 “save & test”,如下添加成功;
在这里插入图片描述

添加仪表盘

选择 “Dashboards” --> “Browse”;
在这里插入图片描述
点击 “New Dashboards” 添加,然后选择一种图表类型添加;
在这里插入图片描述
接下来就进入了图表编辑页面,可以设置数据源、图表标题、X轴、Y轴等各种属性;
在这里插入图片描述
如下是我按照容器名称索取的数据;
在这里插入图片描述
设置完成之后,点击 “save” 进行保存,如下为添加成功后图表;
在这里插入图片描述
当微服务开始运行后产生的数据便会体现在此图表上。

;