三天入门 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 地址
DockerCentOS 7.x192.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 基本介绍与使用

三天入门 Docker 系列

三天入门 Docker - 第二天:Dockerfile 基本介绍与使用

死磕三天总结出Docker小白入门操作指南(建议收藏)

三天爆肝快速入门机器学习:线性回归逻辑回归岭回归第三天

三天入门 Linux 系统 - 第三天:Linux 高级命令