设为首页 收藏本站
查看: 1746|回复: 0

[经验分享] docker:快速构建容器监控系统cAdvisor+InfluxDB+Grafana

[复制链接]

尚未签到

发表于 2019-2-22 09:05:23 | 显示全部楼层 |阅读模式
  容器监控的方案有很多,有docker自身的docker stats命令、有Scout、有Data Dog等等,本文主要和大家分享一下比较经典的容器开源监控方案组合:cAdvisor+InfluxDB+Grafan。


1.概念
    cAdvisor:用于数据采集
  InfluxDB:用于数据存储
  Grafana: 用于数据展示



1.1 cAdvisor

  它是Google用来监测单节点的资源信息的监控工具。Cadvisor提供了一目了然的单节点多容器的资源监控功能。Google的Kubernetes中也缺省地将其作为单节点的资源监控工具,各个节点缺省会被安装上Cadvisor。总结起来主要两点:


  • 展示 Host 和容器两个层次的监控数据。
  • 展示历史变化数据。

   由于 cAdvisor 提供的操作界面略显简陋,而且需要在不同页面之间跳转,并且只能监控一个 host,这不免会让人质疑它的实用性。但 cAdvisor 的一个亮点是它可以将监控到的数据导出给第三方工具,由这些工具进一步加工处理。
   我们可以把 cAdvisor 定位为一个监控数据收集器,收集和导出数据是它的强项,而非展示数据。

1.2 InfluxDB

  InfluxDB 是用Go语言编写的一个开源分布式时序、事件和指标数据库,无需外部依赖。类似的数据库有Elasticsearch、Graphite等。

  InfluxDB主要特色功能


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


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

1.3 Grafana

  Grafana是一个可视化面板(Dashboard),有着非常漂亮的图表和布局展示,功能齐全的度量仪表盘和图形编辑器,支持Graphite、zabbix、InfluxDB、Prometheus和OpenTSDB作为数据源。Grafana主要特性:灵活丰富的图形化选项;可以混合多种风格;支持白天和夜间模式;多个数据源。


2.部署过程


  • 创建自定义网络monitor(自定义网络名称),用于后期容器加入此网络中,当然你也可以忽略此步;
  • 创建Influxdb容器,创建数据用户、数据库;
  • 创建cAdvisor容器;
  • 创建Grafana容器,配置grafana;

3.开始部署

3.1 创建自定义网络


  •   前面也说过了,你可以不用创建自定网络,作者只是为了把后期创建的cAdvisor+InfluxDB+Grafana这三个容器都加入自己定义的网络便于理解和管理,所以才新建一个自定义网络:

    [root@ganbing ~]# docker network create monitor
    cc193568263604e3bc3e7a5d78f18d07af99810e1d5c19bac99fccfa045f48f5
  • 查看创建的网络:


3.2 创建influxdb容器


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

    [root@ganbing ~]# 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@ganbing ~]# docker ps -l
    CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS                                            NAMES
    30b9789e680d        tutum/influxdb      "/run.sh"           22 seconds ago      Up 21 seconds       0.0.0.0:8083->8083/tcp, 0.0.0.0:8086->8086/tcp   influxdb
  • 访问influxdb控制台,ip+8083端口访问:


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



  • 创建cadvisor数据库cadvisor、用户root,用户和数据库大家可以自行随意定义,不一定要跟我一样,只是用于后期grafana的配置:
      CREATE USER "root" WITH PASSWORD '123456' WITH ALL PRIVILEGES




  CREATE DATABASE "cadvisor"



3.3 创建cadvisor容器


  •   运行cadvisor容器:

    $docker run -d \
    --name=cadvisor \
    --net monitor \
    -p 8080:8080 \
    --mount type=bind,src=/,dst=/rootfs,ro \
    --mount type=bind,src=/var/run,dst=/var/run \
    --mount type=bind,src=/sys,dst=/sys,ro \
    --mount type=bind,src=/var/lib/docker/,dst=/var/lib/docker,ro \
    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@ganbing ~]# docker ps -l
    CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                    NAMES
    90871ba5be7e        google/cadvisor     "/usr/bin/cadvisor -…"   51 seconds ago      Up 50 seconds       0.0.0.0:8080->8080/tcp   cadvisor
  • 通过ip+8080端口访问测试一下,第一次访问这个页面有点慢:

    从上图可以看到,其实cadvisor也有基础的图形展示功能,我们这里主要用它来做数据采集。

3.4 创建granafa容器


  •   运行granafa容器:

    [root@ganbing ~]# docker run -d --name grafana --net monitor -p 3000:3000 grafana/grafana
      这里的参数比较简单,跟上面都差不多,不做详细解释。

  •   查看运行结果:

    [root@ganbing ~]# docker ps -l
    CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS                    NAMES
    a90e03e2017a        grafana/grafana     "/run.sh"           17 seconds ago      Up 16 seconds       0.0.0.0:3000->3000/tcp   grafana
  •   访问granfa,通过ip+3000端口的方式访问,默认账户密码(admin/admin):


  • 添加数据源Add data source,如下图:




  •   新建New dashboard,如下图:




  • 新建了一个监控项之后,回来HOME,可以发现刚才创建的项目:


  到这里cAdvisor+InfluxDB+Grafana容器监控系统就部署完成了,至于其它grafana的监控项配置不是本文的重点,就不在这里一一介绍其它监控项怎么玩了,大家如果感兴趣可以参考一些官方资料或者百度一些资料参阅,都是图形化的界面操作,多点、多玩、多测两个就搞明白了。


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


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

  喜欢我的文章,请点击最上方右角处的《关注》支持一下!





运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-675579-1-1.html 上篇帖子: docker 01 下篇帖子: Docker从入门到实战(二)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表