Docker容器监控系统

目录

简化描述

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,如下图:

猜你喜欢

转载自blog.csdn.net/2302_77750172/article/details/132165187