三天入门 Docker - 第三天:实现 Docker 容器监控
Posted 愿许浪尽天涯
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了三天入门 Docker - 第三天:实现 Docker 容器监控相关的知识,希望对你有一定的参考价值。
使用 cAdvisor + InfluxDB + Grafana 实现监控 Docker 容器
一、基本介绍
1.cAdvisor 介绍
cAdvisor 是 Google 开源的一款 用于展示和分析容器有运行状态的可视化工具。通过在主机上运行 cAdvisor 用户,可以轻松的获取到当前主机上容器的运行统计信息,并以图表的形式向用户展示。
cAdvisor 功能: 可以用来展示 Host 主机和容器的监控数据;并且还可以用来展示历史变化数据。
其实 cAdvisor 主要就是通过利用 Docker 的 stats
命令(可以实时查看 Docker 容器内的资源情况)来实现的数据监控,那么这样的话,我们为什么不直接使用 stats
命令呢,原因是因为,使用 stats
命令我们需要登陆到 Docker 系统上,并且是监控不到历史数据的。
2.InfluxDB 介绍
InfluxDB 是一个开源的 分布式时序、事件和指标数据库,使用 Go 语言开发,无需外部的依赖。 InfluxDB 主要的功能有:基于时间序列(支持与时间有关的相关函数)、可度量性(可以实时对大量数据进行计算)、基于事件(它可以支持任意的事件数据)
InfluxDB 特点:
- 强大的类 SQL 语法。
- 自带管理界面,方便我们使用。
- 原生的 HTTP 支持,并且内置 HTTP API。
- 支持
min
max
sum
count
mean
median
等一系列函数,方便我们统计使用。
3.Grafana 介绍
Grafana 是一个用 Go 语言开发的 数据度量分析和可视化工具,可以通过将采集过来的数据查询后 通过界面的形式进行展示,并及时通知我们(因为 Grafana 可以配置告警功能);支持 Prometheus、Zabbix、InfluxDB 和 OpenTSDB 等作为数据源。
Grafana 特点:
- 可视化: Grafana 官方为我们提供了多种面板插件,来让我们选择,每个面板展示的指标都是有所不同的(官方面板插件地址)
- 通知: 我们可以在 Grafana 上配置告警,即,当条件达到告警标准时,将自动进行发送告警邮件等。
- 混合数据源: 即,我们可以在 Grafana 的监控界面,选择不同的数据源来对指标进行监控。
我们这里主要用 cAdvisor 来采集 Docker 容器内的数据,使用 InfluxDB 来存储数据,最后由 Grafana 来进行数据展示。
二、实现 Docker 容器监控
准备工作:
主机名 | 操作系统 | IP 地址 |
---|---|---|
Docker | CentOS 7.x | 192.168.1.4 |
- 这里我是直接使用的前面文章中的 Docker 环境:传送门
下载所需镜像
[root@Docker ~]# docker pull tutum/influxdb && docker pull google/cadvisor && docker pull grafana/grafana
- 这里你们可以选择性的下载镜像,因为我们运行容器时,Docker 会检测是否下载对应镜像,未下载时会自动进行下载。
1.创建 InfluxDB 容器
1)运行 InfluxDB 容器
[root@Docker ~]# docker run -itd --name influxdb -p 8083:8083 -p 8086:8086 tutum/influxdb
itd
:通过交互模式运行容器,并分配伪终端,并在后台启动容器;-p
:给 InfluxDB 容器做端口映射(8083 是 InfluxDB 的后台控制端口,8086 是 InfluxDB 的数据端口)
2)查看 InfluxDB 容器运行状态
[root@Docker ~]# docker ps -a | grep influxdb
3)配置 InfluxDB(http://192.168.1.4:8083
)
3.创建 cAdvisor 容器
1)运行 cAdvisor 容器
[root@Docker ~]# docker run -itd --name cadvisor -p 8080:8080 \\
-v /:/rootfs:ro \\
-v /sys:/sys:ro \\
-v /var/run:/var/run \\
-v /var/lib/docker:/var/lib/docker:ro google/cadvisor \\
-storage_driver=influxdb \\
-storage_driver_db=cadvisor \\
-storage_driver_user=root \\
-storage_driver_password=123123 \\
-storage_driver_host=192.168.1.4:8086
-v
:创建数据卷,可以将宿主机目录挂载到容器内(后面的ro
表示只读,rw
表示读写)-storage_driver
:指定cadvisor
的存储驱动,我们这里用的是InfluxDB
。-storage_driver_db
:指定存储的数据库。-storage_driver_user
:指定存储数据库的用户名。-storage_driver_password
:指定存储数据库的用户名密码。-storage_driver_host
:指定存储数据库的地址和端口(8086 端口是InfluxDB
的数据端口)
2)查看 cAdvisor 容器运行状态
[root@Docker ~]# docker ps -a | grep cadvisor
3)配置 cAdvisor(http://192.168.1.4:8080
)
这里就不再过多介绍,因为我们主要还是通过 Grafana 来实现界面监控。
4.创建 Grafana 容器
1)运行 Grafana 容器
[root@Docker ~]# docker run -itd --name=grafana -p 3000:3000 --restart=always grafana/grafana
2)查看 Grafana 容器运行状态
[root@Docker ~]# docker ps -a | grep grafana
3)配置 Grafana(http://192.168.1.4:3000
)
上面只是配置好了数据源,还并没有实现监控,我们可以自定义监控指标,来实现监控效果
5.验证
以上是关于三天入门 Docker - 第三天:实现 Docker 容器监控的主要内容,如果未能解决你的问题,请参考以下文章
三天入门 Docker - 第一天:Docker 基本介绍与使用