目录
简化描述
Cadvisor +InfluxDB+Grafana
监控组件架构图
部署
安装docker-ce
阿里云镜像加速器
下载组件镜像
创建自定义网络
创建influxdb容器
创建granafa容器
简化描述
Docker作为目前十分出色的容器管理技术,得到大量企业的青睐,在生产环境中使用Docker容器部署服务及应用的场景越来越多。所以面对日益庞大的docker服务群应用,如何具有针对性的,有效的监控也变成了企业运维人员工作需求。
容器信息采集及监控的方案有很多,有docker自身的docker stats命令、Scout、Data Dog、Prometheus等,本次为大家分享两款比较经典的容器开源监控组合方案Cadvisor +InfluxDB+Grafana和Cadvisor +Prometheus+Grafana
Cadvisor +InfluxDB+Grafana
Cadvisor、InfluxDB 和 Grafana 是三个常用的开源软件工具,通常在容器监控和可视化方面使用。
Cadvisor 是一个用于监控容器资源使用情况的工具,可以提供关于 CPU、内存、磁盘和网络等方面的性能指标。
特点:
- 可以展示主机和容器两个层次的监控数据。
- 可以展示历史变化数据。
- 谷歌公司的开源产品。
- 监控指标齐全。
- 方便部署,有官方的docker镜像。
- 默认只在本地保存1分钟数据,可以集成InfluxDB等第三方存储使用。
InfluxDB 是一个时间序列数据库,用于存储和管理大量时间序列数据。它被广泛应用于在实时监控、运维监控和物联网等领域。
主要功能
- 基于时间序列,支持与时间有关的相关函数(如最大,最小,求和等);
- 可度量性:你可以实时对大量数据进行计算;
- 基于事件:它支持任意的事件数据;
特点
- 无结构(无模式):可以是任意数量的列;
- 支持拓展;
- 支持min, max, sum, count, mean, median 等一系列函数,方便统计;
- 原生的HTTP支持,内置HTTP API;
- 强大的类SQL语法;
- 自带管理界面,方便使用;
Grafana 是一个用于创建和共享实时数据监控仪表盘的工具,可以从各种数据源中提取和可视化数据。它能够连接到 InfluxDB 数据库,并以可视化的方式展示容器运行时的各种性能指标和监控数据。
因此,Cadvisor、InfluxDB 和 Grafana 的组合通常用于容器环境中,以获取、存储和展示容器的性能指标和监控数据。
主要特性
- 灵活丰富的图形化选项;
- 可以混合多种风格;
- 支持白天和夜间模式;
- 支持多个数据源;
监控组件架构图
监控组件架构部署方案:
- 创建自定义网络monitor(自定义网络名称),用于后期容器加入此网络中;
- 创建Influxdb容器,创建数据用户、数据库;
- 创建Cadvisor 容器;
- 创建Grafana容器,配置grafana;
部署
安装docker-ce
环境:
关闭防火墙
保证连接外网
[root@localhost ~]# wget http://mirrors.aliyun.com/repo/Centos-7.repo
【下载镜像】
[root@localhost ~]# yum -y install yum-utils device-mapper-persistent-data lvm2
【在 CentOS 系统上安装了三个软件包:yum-utils、device-mapper-persistent-data 和 lvm2。这些软件包提供了一些方便的工具和库,用于增强 yum 命令的功能,并支持设备映射器的持久化数据和逻辑卷管理。】
[root@localhost ~]# yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
【添加仓库源】
[root@localhost ~]# yum -y install docker-ce 【安装docker-ce】
[root@localhost ~]# systemctl start docker 【启动】
[root@localhost ~]# systemctl enable docker 【设置开机自启】
[root@localhost ~]# docker version 【查看版本信息】
阿里云镜像加速器
阿里云登录 - 欢迎登录阿里云,安全稳定的云计算服务平台欢迎登录阿里云,全球领先的云计算及人工智能科技公司,阿里云为200多个国家和地区的企业、开发者和政府机构提供云计算基础服务及解决方案。阿里云云计算、安全、大数据、人工智能、企业应用、物联网等云计算服务。https://cr.console.aliyun.com/
[root@localhost ~]# cat << END > /etc/docker/daemon.json
{
"registry-mirrors":[ "https://nyakyfun.mirror.aliyuncs.com" ]
}
END
【指定的镜像加速器(阿里云镜像加速器)的地址添加到 Docker 配置文件
/etc/docker/daemon.json
中】
[root@localhost ~]# systemctl daemon-reload
【重新加载 systemd 守护程序配置文件】
[root@localhost ~]# systemctl restart docker
【重启】
下载组件镜像
[root@localhost ~]# docker pull tutum/influxdb
[root@localhost ~]# docker pull google/cadvisor
[root@localhost ~]# docker pull grafana/grafana
[root@localhost ~]# docker images
【查看已下载的 Docker 镜像列表及其相关信息】
创建自定义网络
为了把后期创建的Cadvisor+InfluxDB+Grafana这三个容器都加入自己定义的网络便于理解和管理,所以才新建一个自定义网络。
[root@localhost ~]# docker network create monitor
[root@localhost ~]# docker network ls
创建influxdb容器
启动容器,tutum/influxdb镜像这里没有指定版本,默认会pull最新版本的influxdb:
[root@localhost ~]# docker run -d --name influxdb --net monitor -p 8083:8083 -p 8086:8086 tutum/influxdb
参数说明:
- -d :后台运行此容器;
- --name :启运容器分配名字influxdb;
- --net : 把容器加入到新的网络monitor;
- -p :映射端口,8083端口为infuxdb后台控制端口,8086端口是infuxdb的数据端口;
- tutum/influxdb:通过这个容器来运行的,默认会在docker官方仓库pull下来;
查看influxdb容器是否启动
[root@localhost ~]# docker ps -l
访问influxdb控制台http://192.168.200.111:8083:
从上图可以看到,在Query Templates选项中提供了常用的操作模板,可根据这些模版来管理influxdb,下面我们就来创建数据库和数据库用户。
CREATE USER "root" WITH PASSWORD '123456' WITH ALL PRIVILEGES
创建Cadvisor 数据库cadvisor 、用户root,用户和数据库大家可以自行随意定义,用于后期grafana的配置:
CREATE DATABASE "cadvisor"
创建Cadvisor 容器
[root@localhost ~]# docker run -d --volume=/:/rootfs:ro --volume=/var/run:/var/run:rw --volume=/sys:/sys:ro --volume=/var/lib/docker/:/var/lib/docker:ro --net monitor --publish=8080:8080 --name=cadvisor google/cadvisor -storage_driver=influxdb -storage_driver_db=cadvisor -storage_driver_host=influxdb:8086
参数说明:
- -d:后台运行此容器;
- --name:启运容器分配名字Cadvisor ;
- --net:把容器加入到新的网络monitor;
- -p:映射端口8080;
- --mout:把宿主机的相文目录绑定到容器中,这些目录都是Cadvisor 需要采集的目录文件和监控内容;
- -storage_driver:需要指定Cadvisor 的存储驱动、数据库主机、数据库名;
- google/Cadvisor :通过Cadvisor 这个镜像来运行容器,默认会在docker官方仓库把镜像pull下来;
查看Cadvisor 容器:
[root@localhost ~]# docker ps -l
通过http://192.168.200.111:8080端口访问测试一下,第一次访问这个页面有点慢
从上图可以看到,其实Cadvisor 也有基础的图形展示功能,我们这里主要用它来做数据采集。
准备测试镜像
[root@localhost ~]# docker run -itd --name nginx -p 8000:80 nginx
[root@localhost ~]# docker images nginx
[root@localhost ~]# docker ps -l
创建granafa容器
[root@localhost ~]# docker run -d --name grafana --net monitor -p 3000:3000 grafana/grafana
docker run
:Docker 命令,用于运行一个容器。-d
:表示以后台方式运行容器(detached mode)。--name grafana
:为容器指定名称为 “grafana”。--net monitor
:将容器连接到名为 “monitor” 的网络。-p 3000:3000
:将主机的端口3000映射到容器的端口3000,允许主机通过端口3000访问容器内的Grafana服务。grafana/grafana
:使用 “grafana/grafana” 镜像创建容器。
查看运行结果:
[root@localhost ~]# docker ps -l
访问granfana,通过http://192.168.200.111:3000端口的方式访问,默认账户密码(admin/admin),首次登陆需要更新密码。
滚轮向下滑
新建 Dashboard,如下图: