docker容器监控系统部署

案例概述:

      Docker作为目前十分出色的容器技术,得到大量很多企业的青睐,在生产环境中使用docker容器部署服务及应用的情况越来越多。所以面对日益庞大的docker服务群应用,如何具有针对性的,有效的监控也变成了企业运维人员工作需求。

      容器信息采集及监控的方案有很多,有docker自身的docker stats命令、Scout、Data Dog.Prometheus等,本次为大家分享一款比较经典的容器开源监控组合方案:Cadvisor.+InfluxDB+Grafana。

一:Cadvisor

       Cadvisor,是Google用来监测单节点的资源信息的监控工具。Cadvisor提供了基础查询界面和 http接口,方便其他组件如 Grafana . Prometheus进行数据抓取。Cadvisor.可以对Docker 主机上的资源及容器进行实时监控和性能数据采集,包括CPU使用情况、内存使用情况、网络吞吐量及文件系统使用情况等。Cadvisor使用Go语言开发,利用Linux的 Cgroup;获取容器的资源使用信息。

      Google的 Kubernetes 中也默认地将其作为单节点的资源监控工具,各个节点缺省会被安装Cadvisor 。

  Cadvisor.产品特点:

  • 可以展示主机和容器两个层次的监控数据。
  • 可以展示历史变化数据。
  • 谷歌开源产品。
  • 监控指标齐全。
  • 方便部署,有官方的 docker镜像。
  • 默认只在本地保存1分钟数据,可以集成InfluxDB等存储使用。

      由于Cadvisor提供的操作界面略显简陋,而且需要在不同页面之间跳转,并且只能监控一个Host,这不免会让人质疑它的实用性。但 Cadvisor的一个亮点是它可以将监控到的数据导出给第三方工具,由这些工具进一步加工处理。

      我们可以把 Cadvisor定位为一个监控数据收集器,收集和导出数据是它的强项,而非展示数据。

二:InfluxDB

     InfluxDB是一个由InfluxData.开发的开源非关系型时序型数据库。它由Go 写成,着力于高性能地查询与存储时序型数据。InfluxDB.被广泛应用于存储系统的监控数据,loT行业的实时数据等场景。类似的数据库还有Elasticsearch、Graphite等。

     InfluxDB.应用场景:性能监控,应用程序指标,物联网传感器数据和实时分析等的后端存储。

InfluxDB主要功能

  • 基于时间序列,支持与时间有关的相关函数(如最大,最小,求和等);
  • 可度量性:你可以实时对大量数据进行计算;
  • 基于事件:它支持任意的事件数据;

lnfluxDB主要特点

  • 无结构(无模式):可以是任意数量的列;
  • 可拓展的;
  • 支持 min, max, sum, count, mean, median等一系列函数,方便统计;
  • 原生的HTTP支持,内置HTTP APl;
  • 强大的类SQL语法;
  • 自撒管理界面,方便使用;

三:Grafana

     Grafana是一个可视化面板(Dashboard),有着非常漂亮的图表和布局展示功能,功能齐全的度量仪表盘和图形编辑器,支持Graphite、zabbix、InfluxDB、-prometheus和OpenTSDB作为数据源。

  Grafana主要特性

  • 灵活丰富的图形化选项;
  • 可以混合多种风格;
  • 支持白天和夜间模式;
  • 支持多个数据源;

:监控组件架构

docker容器监控系统部署_第1张图片

提示:InfluxDB.用于数据存储,Cadvisor用户数据采集,Grafana用于数据展示

监控组件架构部署方案:

  1. 创建自定义网络 monitor(自定义网络名称),用于后期容器加入此网络中;
  2. 创建Influxdb,容器,创建数据用户、数据库;
  3. 创建Cadvisor容器;
  4. 创建Grafana容器,配置 grafana:

五:开始部署

1:安装docker-ce

《1》:iptables -F

《2》: systemctl stop firewalld

《3》:setenforce 0

《4》:cd /etc/yum.repos.d/

《5》:wget http://mirrors.aliyun.com/repo/Centos-7.repo 

《6》:yum -y install yum-utils device-mapper-persisted-data lvm2

docker容器监控系统部署_第2张图片

《7》: yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

《8》:yum -y install docker-ce

docker容器监控系统部署_第3张图片

《9》:systemctl start docker  启动

《10》:systemctl enable docker  开机自启动

《11》:rz 上传

《12》:ls  查看

《13》:docker load < grafana.tar

《14》:docker load < cadvisor.tar

《15》:docker load < influxdb.tar

docker容器监控系统部署_第4张图片

《16》:rz   上传

《17》: docker load < nginx-1.19.tar  

《18》:docker images  查看

docker容器监控系统部署_第5张图片

2:创建自定义网络

       为了把后期创建的CadvisortInfluxDBtGrafana,这三个容器都加入自己定义的网络便于理解和管理,所以才新建一个自定义网络。

《1》:docker network ls  查看

《2》:docker network create monitor 定义一个网络模式

《3》: docker network ls  chak

docker容器监控系统部署_第6张图片

3:创建influxdb 容器

启动容器,tutum/influxdb 镜像这里没有指定版本,默认会pull最新版本的influxdb

《1》: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下来;

《2》:docker ps -l  查看是否启动

docker容器监控系统部署_第7张图片

 《3》:访问   :  http://192.168.80.129:8083/

docker容器监控系统部署_第8张图片

docker容器监控系统部署_第9张图片

     从上图可以看到,在Query Templates选项中提供了常用的操作模板,可根据这些模版来管理influxdb,下面我们就来创建数据库和数据库用户。

    CREATE USER "root" WITH PASSWORD '123456' WITH ALL PRIVILEGES

docker容器监控系统部署_第10张图片

    创建 Cadvisor数据库cadvisor、用户 root,用户和数据库大家可以自行随意定义,用于后期grafana,的配置:

docker容器监控系统部署_第11张图片

docker容器监控系统部署_第12张图片

 4:创建Cadvisor 容器

《1》: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

《2》: docker ps -l

《3》:docker ps -a  查看

docker容器监控系统部署_第13张图片

参数说明:

  • -d:后台运行此容器;
  • --name:启运容器分配名字 Cadvisor ;
  • --net:把容器加入到新的网络 monitor;-p:映射端口8080;
  • --mout:把宿主机的相文目录绑定到容器中,这些目录都是 Cadvisor.需要采集的目录文件和监控内容;
  • -storage.driver:需要指定Cadxisor的存储驱动、数据库主机、数据库名;
  • google/Cadvisor,:通过Cadvisor.这个镜像来运行容器,默认会在docker官方仓库把镜像pull下来;

《4》:访问: http://192.168.80.129:8080/containers/

docker容器监控系统部署_第14张图片

docker容器监控系统部署_第15张图片

docker容器监控系统部署_第16张图片

准备测试镜像

《5》:docker run -itd --restart=always --name nginx -p 8000:80 nginx 启动

 《6》:在去访问,刷新

docker容器监控系统部署_第17张图片

docker容器监控系统部署_第18张图片

 5:创建grafana 容器

《1》:docker run -d --name grafana --net monitor -p 3000:3000 grafana/grafana   创建

《2》:docker ps -a  查看

docker容器监控系统部署_第19张图片

《3》:访问:   http://192.168.80.129:3000/

docker容器监控系统部署_第20张图片

docker容器监控系统部署_第21张图片

docker容器监控系统部署_第22张图片

docker容器监控系统部署_第23张图片

docker容器监控系统部署_第24张图片

docker容器监控系统部署_第25张图片

docker容器监控系统部署_第26张图片

docker容器监控系统部署_第27张图片

docker容器监控系统部署_第28张图片

docker容器监控系统部署_第29张图片

docker容器监控系统部署_第30张图片

docker容器监控系统部署_第31张图片

   

六:案例总结:

    没有最好、最优的监控方案,需要根据企业环境的自身特点结合每个监控产品的优势来达到监控的目的。一个企业完整的监控体系包括以下几个组成部分:

  • 监控数据采集的时效与精确
  • 监控数据采集存储与归档
  • 监控数据的图形化展示
  • 监控数据的自动化分析与联动处理.
  • 监控的告警及自动化处理监控工具自身的安全控制监控告警的响应及跟踪(

你可能感兴趣的:(容器,docker,容器,运维)