• Docker重量级监控系统CIG - CAdvisor + InfluxDB + Grafana


    目录

    原生监控命令

    一、操作

    二、问题所在

    是什么

    一、CAdvisor

    二、InfluxDB

    三、Grafana

    compose编排

    一、新建目录

    二、新建docker-compose.yml

    三、运行docker-compose.yml

    四、登录测试

    1.CAdvisor

    2.Influxdb

    3.Grafana

    五、配置

    1.配置数据源

    2.选择Influxdb数据库

    3.配置细节

    4.配置面板

      一切在云端,服务就是容器。 


    原生监控命令

    一、操作

    一句命令:

    docker stats

    命令效果:

    1845e1680508434697a31c8d77ec1891.png


    二、问题所在

    通过docker stats命令可以很方便的看到当前宿主机上所有容器的CPU,内存以及网络流量等数据,一般小公司够用了。但是,docker stats统计结果只能是当前宿主机的全部容器,数据资料是实时的,没有地方存储、没有健康指标过线预警等功能。举个栗子,如果我有个容器在半夜里宕掉了,那我隔天想去看看具体信息,stats是看不到的,它不具备数据的存储功能。


    是什么

     CAdvisor监控收集+InfluxDB存储数据+Grafana展示图表 

    一、CAdvisor

    CAdvisor是一个容器资源监控工具,包括容器的内存CPU,网络IO,磁盘I0等监控,同时提供了一个WEB页面用于查看容器的实时运行状态。CAdvisor默认存储2分钟的数据, 而且只是针对单物理机。不过,CAdvisor提供了很多数据集成接口,支持InfluxDB,Redis,Kafka,Elasticsearch等集成,可以加上对应配置将监控数据发往这些数据库存储起来。
    CAdvisor功能主要有两点:
    ●展示Host和容器两个层次的监控数据
    ●展示历史变化数据


    二、InfluxDB

    InfluxDB是用Go语言编写的一个开源分布式时序、 事件和指标数据库,无需外部依赖。CAdvisor默认只在本机保存最近2分钟的数据,为了持久化存储数据和统-收集展示监控数据,需要将数据存储到InfluxDB中。InfluxDB是一 个时序数据库,专用于存储时序相关数据,很适合存储CAdvisor的数据。且 CAdvisor本身已经提供了InfluxDB的集成方法,在启动容器时指定配置即可。
    InfluxDB主要功能:
    ●基于时间序列,支持与时间有关的相关函数(如最大、最小、求和等)
    ●可度量性:你可以实时对大量数据进行计算
    ●基于事件:它支持任意的事件数据


    三、Grafana

    Grafana是一个开源的数据监控分析可视化平台,支持多种数据源配置(支持的数据源报错InfluxDB,MySQL,Elasticsearch,OpenTSDB,Graphite等)和丰富的插件及模板功能,支持图表权限控制和报警。
    Grafana主要特性:
    ●灵活丰富的图形化选项
    ●可以混合多种风格
    ●支持白天和夜间模式
    ●多个数据源



     

    compose编排

    一、新建目录

    这里的jardocker是之前做的微服务编排:Docker容器:compose容器编排(Java微服务项目实例)

    mkdir cig

    9c806b01f896447ea94a62d03d7ca6b9.png


    二、新建docker-compose.yml

    注意位置在刚刚新建的cig目录之下,内容:

    1. version: '3.1'
    2. volumes:
    3. grafana_data: {}
    4. services:
    5. influxdb:
    6. image: tutum/influxdb:0.9
    7. restart: always
    8. environment:
    9. - PRE_CREATE_DB=cadvisor
    10. ports:
    11. - "8083:8083"
    12. - "8086:8086"
    13. volumes:
    14. - ./data/influxdb:/data
    15. cadvisor:
    16. image: google/cadvisor
    17. links:
    18. - influxdb:influxsrv
    19. command: -storage_driver=influxdb -storage_driver_db=cadvisor -storage_driver_host=influxsrv:8086
    20. restart: always
    21. ports:
    22. - "8080:8080"
    23. volumes:
    24. - /:/rootfs:ro
    25. - /var/run:/var/run:rw
    26. - /sys:/sys:ro
    27. - /var/lib/docker/:/var/lib/docker:ro
    28. grafana:
    29. user: "104"
    30. image: grafana/grafana
    31. user: "104"
    32. restart: always
    33. links:
    34. - influxdb:influxsrv
    35. ports:
    36. - "3000:3000"
    37. volumes:
    38. - grafana_data:/var/lib/grafana
    39. environment:
    40. - HTTP_USER=admin
    41. - HTTP_PASS=admin
    42. - INFLUXDB_HOST=influxsrv
    43. - INFLUXDB_PORT=8086
    44. - INFLUXDB_NAME=cadvisor
    45. - INFLUXDB_USER=root
    46. - INFLUXDB_PASS=root

    这里说白了其实就是把三个容器写进去。随便敲一句看看无语有没有报错:

    docker-compose config -q

    没有提示即代表语法没有问题。


    三、运行docker-compose.yml

    在当前目录下:

    docker-compose up

    0901692348dd4013bcd45b2e67813084.png

    老规矩!ps看一眼启动是否正常: 

    docker ps

    3062b3fbd46f452ca29d4aad46618d3f.png

    三个全部正常启动,还剩一个是portainer,这里无视即可。


    四、登录测试

    1.CAdvisor

    访问页面,这里要注意自己的真实IP,还有要把tomcat关掉,避免占用8080端口:

    1. 192.168.150.30:8080
    2. xxx.xxx.xxx.xxx:8080

    第一次启动可能会有点慢,效果如下:

    96ca3469a0cf4d1a895d49018994335a.png

    2.Influxdb

    注意IP(端口号8083):

    1. 192.168.150.30:8083
    2. xxx.xxx.xxx.xxx:8083

     点击show databases,然后回车

    3389c0ee3d6a41089790fc446d86d4cd.png

    这里可以看到一个叫做cadvisor的数据库,顾名思义 它的作用就是用来存储CAdvisor发送过来的数据:

    b17d744cb14a4f8b9f4790a5e422268e.png

    3.Grafana

    再次注意真实IP(端口号3000):

    1. 192.168.150.30:3000
    2. xxx.xxx.xxx.xxx:3000

     首次登录时,这的用户名和密码都是admin 

    0e47f61d45c34c73b46a5bf7b937c2bc.png

    然后重设密码以进行登录: 

    8c0204d11ce74456b26d704f319d2eb9.png

    登录后的主界面如下,当然你也可以选择把一些不想看的删掉: 

    edc9d0876fbd4892b6a5b3a248654c5c.png

    到此三个全部启动和登录成功。接下来进行更细一步的配置


    五、配置

    1.配置数据源

    说白了就是得告诉grafana我要展示的数据是从哪来的,你的去给我拉过来:

    844fedfa247d4e389fc2dea530135208.png

    2.选择Influxdb数据库

    可以看到它真的支持很多很多的数据库啊,这里我们选择Influxdb:

    7a1751a0342240c3b3d50f8f9438aa27.png

    3.配置细节

    名称和语句不用管,这里的URL我们要注意以服务地方式填写,尽量避免以IP的方式:

    http://InfluxDB:8086

    b3855cc463e5482bae1f4d2ff877363f.png

    这里填写咱们的数据库名,上面在登录InfluxDB的时候也查看过了,用户名和密码都为root,然后点击保存测试:

    42a000797c384f80999a69142580655e.png

    测试正常

    2186748aa87a452fb025745bc9370656.png

    4.配置面板

    点击新建 Dashboard 

    713473fdf3b548b9bd0b5dbb65e612c7.png

    点击右上角的 Time series 

    c5764b46ad5b433c99ce74f992ee8643.png

    下面这些里面随便选一个你喜欢的: 

    2e569607ef714414883e77e7c1f06803.png

    这里随便写写: 

    85669287263b453bac187b18df3453af.png

     然后点击右上角的save:

    430ba7b88b074ed1aded5ff7720e1a3a.png

    随便给个名字,然后save:

    12381c44499145da8ae1064d8921262e.png

    添加成功,然后咱们弄点东西进去看看效果 

    c257647769af43c7be5d42586ea4544e.png

    点击编辑: 

    e14d5254537744208a72fdc608685f86.png

    咱们把目光移到下面,这里已经选好了InfluxDB: 

    b95af9d6fca44e82bcab77c0ad54e56c.png

    随便选一个,这里选的是cpu的总耗损

    3fb802df45f24ce6853f8acf93e65e67.png

    where, 这里选容器名

    30d32df748634abf9242363ed043ed1a.png

    这时候咱们回到服务器中docker stats看一眼:

    docker stats

    f68142bf06bb45729b0830b9c407b12c.png

    咱们之前说过了,CAdvisor才是用来收集数据的,所以名字得填这:

    b0c32b3a66b7481a9da247d653ead7db.png

    可以看到,这时候数据已经出来了,然后咱们点击右上角的save保存:

    6342e3447c8d4b219e3932a01043f210.png

    完成。

      一切在云端,服务就是容器。 

    Docker到此告一段落,咱们后头见。

  • 相关阅读:
    结构体学习
    索引-mysql详解(三)
    拓展培训开场白集锦
    漏刻有时数据可视化Echarts组件开发(40)pictorialBar象形柱图
    公共关系学试题及答案
    CCF CSP认证 历年题目自练Day49
    基于Spring Boot的房屋租赁系统
    使用EPPlus实现C#控件Excel文件内容导入转换
    vue+cesium项目demo
    SpringBoot
  • 原文地址:https://blog.csdn.net/Trollz/article/details/126279517