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

46 篇文章 3 订阅

目录

原生监控命令

一、操作

二、问题所在

是什么

一、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目录之下,内容:

version: '3.1'

 

volumes:

  grafana_data: {}

 

services:

 influxdb:

  image: tutum/influxdb:0.9

  restart: always

  environment:

    - PRE_CREATE_DB=cadvisor

  ports:

    - "8083:8083"

    - "8086:8086"

  volumes:

    - ./data/influxdb:/data

 

 cadvisor:

  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:

  user: "104"

  image: grafana/grafana

  user: "104"

  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-compose config -q

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


三、运行docker-compose.yml

在当前目录下:

docker-compose up

0901692348dd4013bcd45b2e67813084.png

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

docker ps

3062b3fbd46f452ca29d4aad46618d3f.png

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


四、登录测试

1.CAdvisor

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

192.168.150.30:8080
xxx.xxx.xxx.xxx:8080

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

96ca3469a0cf4d1a895d49018994335a.png

2.Influxdb

注意IP(端口号8083):

192.168.150.30:8083
xxx.xxx.xxx.xxx:8083

 点击show databases,然后回车

3389c0ee3d6a41089790fc446d86d4cd.png

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

b17d744cb14a4f8b9f4790a5e422268e.png

3.Grafana

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

192.168.150.30:3000
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到此告一段落,咱们后头见。

  • 4
    点赞
  • 5
    收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:书香水墨 设计师:CSDN官方博客 返回首页
评论

打赏作者

不会调制解调的猫

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值