Docker 监控系统说明
系统说明
1
2
3
|
CentOS: 7.4 | X86_64
Docker: 18.06 | CE
Monitor: 基于 docker 容器搭建监控系统
|
Docker 监控组件
1
2
3
|
cAdvisor: 用于数据采集, 对应镜像:google/cadvisor
InfluxDB: 用于数据存储, 对应镜像:tutum/influxdb (带有 web 管理界面)
Grafana: 用于数据展示, 对应镜像:grafana/grafana
|
Docker 监控系统部署过程
1
2
3
4
5
6
|
1. 创建自定义网络 `monitor`(自定义网络名称), 用于将后期容器加入此网络中, 即实现容器互联
> Note: 推荐使用自定义网络实现容器互联,而不是使用 --link 参数
2. 准备 docker 镜像
3. 创建 influxdb 容器, 创建数据库用户和数据库
4. 创建 cadvisor 容器
5. 创建 grafana 容器,配置 grafana 监控页面(Dashboard)
|
开始部署
创建自定义网络
1
2
3
4
5
6
|
# 默认创建 bridge 网络
$ docker network create monitor
ccbb8f8e0b0f28cc9039104ee2a55f9eb2cd4451c1446946b5d11386e4dd6a0c
$ docker network ls
ccbb8f8e0b0f monitor bridge local
|
准备 docker 镜像
拉去镜像前先配置加速器,否则 pull 过程会及其缓慢且容易中断… 233333~~~ (Note: 这里给出中科大的镜像加速站点:https://docker.mirrors.ustc.edu.cn/)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
# Step1: 配置加速[optional]
$ vim /lib/systemd/system/docker.service
# 找到 ExecStart=/usr/bin/dockerd
# 添加 --registry-mirror=<加速地址>
ExecStart=/usr/bin/dockerd --registry-mirror=https://docker.mirrors.ustc.edu.cn/
$ systemctl daemon-reload
$ systemctl restart docker
# Step2: 拉去镜像
$ docker pull google/cadvisor
$ docker pull tutum/influxdb
$ docker pull grafana/grafana
|
创建 influxdb 容器
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
# 启动容器,基镜像采用 tutum/influxdb
$ docker run --name influxdb --net monitor --restart always -p 8083:8083 -p 8086:8086 -d tutum/influxdb
# 参数说明:
# --name 启运容器分配名字influxdb
# --net 把容器加入到新的网络 monitor
# --restart 保证容器实例挂掉或者服务器重启后能够自动重启
# -p 映射端口,8083端口为infuxdb的webd端控制端口,8086端口是infuxdb的数据端口
# -d 后台运行此容器
# 查看运行结果
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
26e4aa121715 tutum/influxdb "/run.sh" 1 second ago Up Less than a second 0.0.0.0:8083->8083/tcp, 0.0.0.0:8086->8086/tcp influxdb
|
创建数据库用户
open host:8083
1
2
3
4
5
|
# 创建 cadvisor 数据库:cadvisor; 用户 root; 密码 <xxx>(写入自己的密码)
Query: CREATE USER "root" WITH PASSWORD "<xxx>" WITH ALL PRIVILEGES
# 输入完成,回车,即可完成操作
# Note:All PRIVILEGES 指给 root 给与所有特权
|
创建数据库
1
2
3
|
# 创建用于存储 cadvisor 采集到的数据的数据库:cadvisor
Query: CREATE DATABASE "cadvisor"
|
创建 cadvisor 容器
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
# 启动容器,基镜像采用 google/cadvisor
$ docker run --name cadvisor --net monitor --restart always -p 8080:8080 --volume=/:/rootfs:ro --volume=/var/run:/var/run:rw --volume=/sys:/sys:ro --volume=/var/lib/docker/:/var/lib/docker:ro --volume=/cgroup:/cgroup:ro --privileged=true --userns=host -d google/cadvisor -storage_driver=influxdb -storage_driver_db=cadvisor -storage_driver_host=influxdb:8086
# 参数说明:
# --volume 把宿主机目录挂载到容器中,这些目录都是cadvisor需要采集的目录文件和监控内容 [:ro 表示只读权限]
# -storage_driver 指定 cadvisor 的存储驱动
# -storage_driver_db 数据库名称
# -storage_driver_host 数据库主机地址
# [可选用的参数]
# -storage_driver_user 指定用户名, 默认是root
# -storage_driver_password 指定指定密码, 默认是root
# 查看运行结果
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
430ec6291596 google/cadvisor "/usr/bin/cadvisor -…" 1 second ago Up Less than a second 0.0.0.0:8080->8080/tcp cadvisor
|
cAdvisor 应用容器启动成功后,通过 Web 浏览器访问地址 http://docker-host-ip:8080,便可以查看cAdvisor监控工具所收集到的Docker主机和容器的资源统计信息
验证 cAdvisor 是否已经向 InfluxDB 存入数据
- 打开 http://host:8083/ 的 InfluxDB 管理界面
- 点击右上角 Database 切换到 cadvisor 数据库
- 然后在输入框输入 SHOW MEASUREMENTS 可以看到已经创建了很多个表
创建 grafana 容器
1
2
3
4
5
6
7
|
# 启动容器,基镜像采用 grafana/grafana
$ docker run --name grafana --net monitor --restart always -p 3000:3000 -d grafana/grafana
# 查看运行结果
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
6fcd1a9da386 grafana/grafana "/run.sh" 1 second ago Up Less than a second 0.0.0.0:3000->3000/tcp grafana
|
Grafana 平台配置及展示
通过 Web 浏览器访问地址 http://docker-host-ip:3000
, 登录 Grafana 管理平台. 默认账户密码(admin/admin)
添加数据源 Add data source
新建面板 New dashboard
See Also
Thanks to the authors 🙂