怎么选择web容器监控方案

本篇内容主要讲解“怎么选择web容器监控方案”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么选择web容器监控方案”吧!

创新互联长期为上千余家客户提供的网站建设服务,团队从业经验10年,关注不同地域、不同群体,并针对不同对象提供差异化的产品和服务;打造开放共赢平台,与合作伙伴共同营造健康的互联网生态环境。为木兰企业提供专业的网站制作、成都网站设计木兰网站改版等技术服务。拥有10多年丰富建站经验和众多成功案例,为您定制开发。

  • 对于容器的监控方案可谓多种多样,本身自带命令docker stats命令,Scout、Data Dog、Sysdig Cloud、Sensu Monitoring Framework、CAdvisor等。

  • 通过docker stats命令可以很方便的看到当前宿主机上所有容器的CPU,内存以及网络流量等数据。但是docker stats命令的缺点是统计的只是当前宿主机的所有容器,而获取的监控数据是实时的,没有地方存储,也没有报警功能。

    docker stats

  • Scout、Sysdig Cloud、Data Dog虽然都提供了完善的服务,但是它们都是托管的服务,而且都收费,Sensu Monitoring Framework集成度较高,也免费,但是部署过于复杂。综合考虑,我们选择了CAdvisor做容器监控工具。

  • CAdvisor是谷歌出品,优点是开源产品,监控指标齐全,部署方便,而且有官方的docker镜像。缺点是集成度不高,默认只在本地保存2分钟数据。不过可以加上influxDB存储数据,对接Grafana展示图标,比较便利地搭建好了容器监控系统,数据收集和图标展示效果良好,对系统性能也几乎没有什么影响。

  • CAdvisor是一个容器资源监控工具,包括容器的内存、CPU、网络IO、磁盘IO等监控,同时提供了一个web页面用于查看容器的实时运行状态。CAdvisor默认存储2分钟的数据,而且只是针对单物理机。不过CAdvisor提供了很多数据集成接口,支持influxDB、redis、kafka、elasticsearch等集成,可以加上对应配置将监控数据发往这些数据库存储起来。

  • CAdvisor功能主要有两点:

    • 展示host和容器两个层次的监控数据;

    • 展示历史变化数据。

  • influxDB是用Go语言编写的一个开源分布式时序、事件和指标数据库,无需外部依赖。

  • 前面说到,CAdvisor默认只在本机保存最近2分钟的数据,为了持久化存储数据和统一收集展示监控数据,需要将数据存储到influxDB中。InfluxDB是一个时序数据库,专门用于存储时序相关数据,很适合存储CAdvisor的数据。而且,CAdvisor本身已经提供了InfluxDB的集成方法,在容器启动时指定配置即可。

  • InfluxDB主要功能:

    • 基于时间序列,支持与时间有关的相关函数(如最大、最小、求和等);

    • 可度量性:你可以实时对大量数据进行计算;

    • 基于事件:它支持任意的事件数据。

  • InfluxDB主要特点

    • 无结构(无模式);

    • 可以是任意数量的列;

    • 可扩展的;

    • 支持min,max,sum,count,mean,median等一系列函数,方便统计;

    • 原生的HTTP支持,内置HTTP API;

    • 强大的类SQL语法;

    • 自带管理界面,方便使用。

  • Grafana是一个开源的数据监控分析可视化平台,支持多种数据源配置(支持的数据源包括influxDB、MySQL、elasticsearch、OpenTSDB、Graphite等)和丰富的插件及模板功能,支持图表权限控制和报警。

  • Grafana主要特性:

    • 灵活丰富的图形化选项;

    • 可以混合多种风格;

    • 支持白天和夜间模式;

    • 支持多个数据源。

  • CAdvisor+InfluxDB+Grafana

    • CAdvisor:负责收集容器随时间变化的数据;

    • InfluxDB:负责存储时序数据;

    • Grafana:负责分析和展示时序数据。

  • 安装部署

    • grafana是一款开源的时序数据分析工具,而且界面专业易用

      docker run -d -p 3000:3000 -v /Users/zhangxufeng/xufeng.zhang/docker/volumes/grafana:/var/lib/grafana --link=influxdb:influxdb --name grafana grafana/grafana

    • 通过ip+3000端口来访问grafana的web服务,第一次访问需要修改admin用户密码,默认用户名/密码为admin/admin;

    • 谷歌的cadvisor可以用于收集docker容器的时序信息,包括容器运行过程中的资源使用情况和性能数据

      docker run --volume=/:/rootfs:ro --volume=/var/run:/var/run:ro --volume=/sys:/sys:ro --volume=/var/lib/docker/:/var/lib/docker:ro --volume=/dev/disk/:/dev/disk:ro --volume=/cgroup:/cgroup:ro --publish=8080:8080 --detach=true --privileged=true --name=cadvisor google/cadvisor:latest -storage_driver=influxdb -storage_driver_host=influxdb:8086 -storage_driver_db=test_storage_driver_user=root -storage_driver_password=root

           

    • -d:后台运行此容器;

    • --name:启动运行容器分配的名字cadvisor;

    • -p:映射端口8080;

    • --mount:把宿主机的文件目录绑定到容器中,这些目录都是cadvisor需要采集的目录文件和监控内容;

    • -storage_driver:需要指定cadvisro的存储驱动、数据库主机、数据库名;

    • --name:启动容器分配名字influxdb;

    • -p:映射端口,8083端口为influxdb管理端口,8086端口是influxdb的数据端口;

    • -v:挂载数据;

    • -d:后台运行此容器;

    • influxdb:通过这个容器来运行的,默认会在docker官方仓库pull下来。

    • 部署InfluxDB服务

      docker run -d -p 8083:8083 -p 8086:8086 --expose 8090 --expose 8099 -v /Users/zhangxufeng/xufeng.zhang/docker/volumes/influxdb:/var/lib/influxdb --hostname=influxdb --name influx tutum/influxdb

    • 说明

    • 浏览器访问influxdb的管理端:http://127.0.0.1:8083,可以看到管理页面

    • 创建test的数据库与root用户,这个用于后期配置grafana

      docker exec -it influxdb influx
      
      CREATE DATABASE "test"
      CREATE USER "root" WITH PASSWORD 'root' WITH ALL PRIVILEGES

    • 部署CAdvisor服务

    • 部署grafana服务

  • 集成的docker-compose文件

    version: '3.1'
    
    volumes:
      grafana_data: {}
    
    services:
     influxdb:
      image: tutum/influxdb:0.9
      #image: tutum/influxdb
      #image: influxdb
      restart: always
      #user: 
      environment:
        - PRE_CREATE_DB=cadvisor
      ports:
        - "8083:8083"
        - "8086:8086"
      expose:
        - "8090"
        - "8099"
      volumes:
        - ./data/influxdb:/data
    
     cadvisor:
      #image: google/cadvisor:v0.29.0
      image: google/cadvisor
      links:
        - influxdb:influxsrv
      command: -storage_driver=influxdb -storage_driver_db=cadvisor -storage_driver_host=influxsrv:8086
      restart: always
      ports:
        - "8080:8080"
      volumes:
        - /:/rootfs:ro
        - /var/run:/var/run:rw
        - /sys:/sys:ro
        - /var/lib/docker/:/var/lib/docker:ro
    
     grafana:
      #image: grafana/grafana:2.6.0
      user: "104"
      image: grafana/grafana
      user: "104"
      #user: "472"
      restart: always
      links:
        - influxdb:influxsrv
      ports:
        - "3000:3000"
      volumes:
        - grafana_data:/var/lib/grafana
      environment:
        - HTTP_USER=admin
        - HTTP_PASS=admin
        - INFLUXDB_HOST=influxsrv
        - INFLUXDB_PORT=8086
        - INFLUXDB_NAME=cadvisor
        - INFLUXDB_USER=root
        - INFLUXDB_PASS=root

到此,相信大家对“怎么选择web容器监控方案”有了更深的了解,不妨来实际操作一番吧!这里是创新互联网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!


标题名称:怎么选择web容器监控方案
URL链接:http://ybzwz.com/article/jspjco.html