文档章节

容器监控方案选择

爱宝贝丶
 爱宝贝丶
发布于 07/22 10:02
字数 1502
阅读 21
收藏 0
  • 对于容器的监控方案可谓多种多样,本身自带命令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:负责分析和展示时序数据。
  • 安装部署

    • 部署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
      
    • 说明

      • --name:启动容器分配名字influxdb;
      • -p:映射端口,8083端口为influxdb管理端口,8086端口是influxdb的数据端口;
      • -v:挂载数据;
      • -d:后台运行此容器;
      • influxdb:通过这个容器来运行的,默认会在docker官方仓库pull下来。
    • 浏览器访问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服务

      • 谷歌的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的存储驱动、数据库主机、数据库名;
    • 部署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;

  • 集成的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
    

© 著作权归作者所有

上一篇: docker日志监控
下一篇: 数据库中间件
爱宝贝丶

爱宝贝丶

粉丝 337
博文 136
码字总数 456051
作品 0
武汉
程序员
私信 提问
一张表搞懂各种 Docker 监控方案 - 每天5分钟玩转 Docker 容器技术(86)

前面我们已经介绍了ps/top/stats、Sysdig、Weave Scope、cAdvisor 和 Prometheus 多种容器监控工具和方案,是时候做一个比较了。下面将从五个方面来对比它们之间的优劣。 部署容易度 ps/top...

CloudMan6
2017/10/27
0
0
一张表搞懂各种 Docker 监控方案 - 每天5分钟玩转 Docker 容器技术(86)

前面我们已经介绍了ps/top/stats、Sysdig、Weave Scope、cAdvisor 和 Prometheus 多种容器监控工具和方案,是时候做一个比较了。下面将从五个方面来对比它们之间的优劣。 部署容易度 ps/top...

CloudMAN
2017/10/27
103
0
容器云落地的痛点

企业要用正确的姿态拥抱容器并且使用好容器,需要在应用容器技术之前考虑清楚以下九个关键问题: 企业容器云方案设计需要遵循什么原则?容器云技术产品如何选型?容器云的网络应该如何设计?...

baishuchao
2017/12/22
0
0
基于阿里云容器服务监控 Kubernetes集群GPU指标

简介 当您在阿里云容器服务中使用GPU ECS主机构建Kubernetes集群进行AI训练时,经常需要知道每个Pod使用的GPU的使用情况,比如每块显存使用情况、GPU利用率,GPU卡温度等监控信息,本文介绍如...

萧元
2018/10/08
0
0
几种 Docker 监控工具对比

轻量级虚拟化容器 Docker,自发布以来便广受业界关注,在开源界和企业界掀起了一阵风。Docker 容器相对于 VM 有以下几个优势:启动速度快;资源利用率高;性能开销小。 从图中可以看出 Dock...

OneAPM蓝海讯通
2015/12/01
97
0

没有更多内容

加载失败,请刷新页面

加载更多

最简单的获取相机拍照的图片

  import android.content.Intent;import android.graphics.Bitmap;import android.os.Bundle;import android.os.Environment;import android.provider.MediaStore;import andr......

MrLins
41分钟前
4
0
说好不哭!数据可视化深度干货,前端开发下一个涨薪点在这里~

随着互联网在各行各业的影响不断深入,数据规模越来越大,各企业也越来越重视数据的价值。作为一家专业的数据智能公司,个推从消息推送服务起家,经过多年的持续耕耘,积累沉淀了海量数据,在...

个推
43分钟前
7
0
第三方支付-返回与回调注意事项

不管是支付宝,微信,还是其它第三方支付,第四方支付,支付机构服务商只要涉及到钱的交易都要进行如下校验,全部成功了才视为成功订单 1.http请求是否成功 2.校验商户号 3.校验订单号及状态...

Shingfi
45分钟前
4
0
简述Java内存分配和回收策略以及Minor GC 和 Major GC(Full GC)

内存分配: 1. 栈区:栈可分为Java虚拟机和本地方法栈 2. 堆区:堆被所有线程共享,在虚拟机启动时创建,是唯一的目的是存放对象实例,是gc的主要区域。通常可分为两个区块年轻代和年老代。更...

DustinChan
51分钟前
6
0
Excel插入批注:可在批注插入文字、形状、图片

1.批注一直显示:审阅选项卡-------->勾选显示批注选项: 2.插入批注快捷键:Shift+F2 组合键 3.在批注中插入图片:鼠标右键点击批注框的小圆点【重点不可以在批注文本框内点击】----->调出批...

东方墨天
今天
6
1

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部