打造高逼格可视化的Docker容器监控系统平台

Posted 运维社

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了打造高逼格可视化的Docker容器监控系统平台相关的知识,希望对你有一定的参考价值。


打造高逼格、可视化的Docker容器监控系统平台


为什么需要监控??


对于一个物理机上运行多个容器应用时,容器的运行情况如:CPU使用率、内存使用率、网络状态、磁盘空间等信息,都是需要去了解的,因此监控是必须的。对于容器的监控方案可谓多种多样,本身自带命令docker stats。


     
       
       
     
  1. [root@docker ~]# docker stats

  2. CONTAINER      CPU %    MEM USAGE / LIMIT    MEM %      NET I/O         BLOCK I/O    PIDS

  3. bd96d72ed9c7   0.04%  14.97 MiB / 7.64 GiB  0.19%    8.22 MB / 805 MB   0 B / 0 B      9

  4. 665563143eb7   0.01%  18.12 MiB / 7.64 GiB   0.23%  19.7 MB / 18.5 MB   0 B / 39.4 MB  8

  5. f2304dad5855  0.18%  98.45 MiB / 7.64 GiB   1.26%   1.07 GB / 9.97 MB   0 B / 2.13 GB  9


今天民工哥要介绍的是一款开源方案cAdvisor+InfluxDB+Grafana。



组件简介


cAdvisor:用于数据采集


cadvisor谷歌公司自己用来监控他们基础设施的一款工具,这个工具厉害之处不仅能监控docker容器的实时信息,而且还能将你的cadvisor这容器所在的主机的系统的实时信息,但是由于cadvisor只是能监控到实时的信息而不能保存。


InfluxDB:用于数据存储


打造高逼格、可视化的Docker容器监控系统平台


InfluxDB 是用Go语言编写的一个开源分布式时序、事件和指标数据库,无需外部依赖。所以我们要使用influxdb将这些实时监控到的信息存放起来。


InfluxDB主要特色功能


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

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

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


InfluxDB主要特点


无结构(无模式)

可以是任意数量的列

可拓展的;

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

原生的HTTP支持,内置HTTP API

强大的类SQL语法

自带管理界面,方便使用


Grafana: 用于数据展示


Grafana是一个可视化面板(Dashboard),有着非常漂亮的图表和布局展示,功能齐全的度量仪表盘和图形编辑器,支持Graphite、zabbix、InfluxDB、Prometheus和OpenTSDB作为数据源。


Grafana主要特性:


灵活丰富的图形化选项

可以混合多种风格

支持白天和夜间模式

多个数据源。



安装布署过程


1、部署influxDB服务


     
       
       
     
  1. [root@master ~]# docker run -d --name influxdb -p 8086:8086 tutum/influxdb

  2. Unable to find image 'tutum/influxdb:latest' locally

  3. Trying to pull repository docker.io/tutum/influxdb ...

  4. latest: Pulling from docker.io/tutum/influxdb

  5. a3ed95caeb02: Pull complete

  6. 23efb549476f: Pull complete

  7. aa2f8df21433: Pull complete

  8. ef072d3c9b41: Pull complete

  9. c9f371853f28: Pull complete

  10. a248b0871c3c: Pull complete

  11. 749db6d368d0: Pull complete

  12. db2492acfcc3: Pull complete

  13. b7e7d2e12d53: Pull complete

  14. 4272a53eef10: Pull complete

  15. 9b2fefdb5321: Pull complete

  16. Digest: sha256:5b7c5e318303ad059f3d1a73d084c12cb39ae4f35f7391b79b0ff2c0ba45304b

  17. Status: Downloaded newer image for docker.io/tutum/influxdb:latest

  18. f384db08ffc78e01fc27bf4c35dc6503b0fd2473cd8d5114b4d8a5475f928b53


说明:


-d :后台运行此容器

--name :启运容器分配名字influxdb

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

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


查看容器


     
       
       
     
  1. [root@master ~]# docker ps

  2. CONTAINER ID      IMAGE          COMMAND      CREATED           STATUS                   PORTS                      NAMES

  3. f2304dad5855   tutum/influxdb   "/run.sh"   4 seconds ago   Up 4 seconds  0.0.0.0:8083->8083/tcp, 0.0.0.0:8086->8086/tcp   influxdb


现在可以通过浏览器去访问influxdb的管理端了。


打造高逼格、可视化的Docker容器监控系统平台


接下来创建cadvisor的数据库与用户,这个用于后期配置granfa。


打造高逼格、可视化的Docker容器监控系统平台


回车直接创建完成如下图


打造高逼格、可视化的Docker容器监控系统平台


创建管理用户


打造高逼格、可视化的Docker容器监控系统平台


创建完成如下图


打造高逼格、可视化的Docker容器监控系统平台


同时也是可以使用CLI命令行界面来创建的,命令一样。


打造高逼格、可视化的Docker容器监控系统平台


2、布署cadvisor服务


     
       
       
     
  1. [root@master ~]# docker run -d

  2. --name=cadvisor

  3. -p 8082:8080

  4. -v /:/rootfs,ro

  5. -v /var/run:/var/run

  6. -v /sys:/sys,ro

  7. -v /var/lib/docker/:/var/lib/docker,ro

  8. google/cadvisor

  9. -storage_driver=influxdb

  10. -storage_driver_db=cadvisor

  11. -storage_driver_host=influxdb:8086

  12. Unable to find image 'google/cadvisor:latest' locally

  13. Trying to pull repository docker.io/google/cadvisor ...

  14. latest: Pulling from docker.io/google/cadvisor

  15. ab7e51e37a18: Pull complete

  16. a2dc2f1bce51: Pull complete

  17. 3b017de60d4f: Pull complete

  18. Digest: sha256:9e347affc725efd3bfe95aa69362cf833aa810f84e6cb9eed1cb65c35216632a

  19. Status: Downloaded newer image for docker.io/google/cadvisor:latest

  20. a212dc33c9424b6e36485334511e6317bdebc06977b9af374b81b0cab113e724


说明:


-d :后台运行此容器

--name :启运容器分配名字cadvisor

-p :映射端口8082:8080(由于环境8080端口被占用,cadvisor默认端口是8080不建议修改)

-v:把宿主机的目录映射到容器中,这些目录都是cadviso需要采集的目录文件和监控内容

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

google/cadvisor:通过cadvisor这个镜像来运行容器,默认会在docker官方仓库把镜像pull下来;


查看cadvisor容器:


     
       
       
     
  1. [root@master ~]# docker ps

  2. CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                                   NAMES

  3. a212dc33c942        google/cadvisor     "/usr/bin/cadvisor..."   2 minutes ago       Up 2 minutes        0.0.0.0:8082->8080/tcp                 cadvisor


现在可以通过浏览访问cadisor的管理页面。


打造高逼格、可视化的Docker容器监控系统平台


cadvisor的基础图形功能也酷炫的


打造高逼格、可视化的Docker容器监控系统平台


测试是否写入influxdb数据库


打造高逼格、可视化的Docker容器监控系统平台


3、布署granafa


     
       
       
     
  1. [root@master ~]# docker run -d --name grafana -p 3000:3000 grafana/grafana

  2. Unable to find image 'grafana/grafana:latest' locally

  3. Trying to pull repository docker.io/grafana/grafana ...

  4. latest: Pulling from docker.io/grafana/grafana

  5. f2aa67a397c4: Pull complete

  6. 89573effc7c8: Pull complete

  7. b55c103da375: Pull complete

  8. Digest: sha256:364bec4a39ecbec744ea4270aae35f6554eb6f2047b3ee08f7b5f1134857c32c

  9. Status: Downloaded newer image for docker.io/grafana/grafana:latest

  10. 665563143eb74e5e2e76b7a1533cbf67a68590d355b0b22d453eac07e0e0b616

  11. [root@master ~]# docker ps

  12. CONTAINER ID      IMAGE             COMMAND        CREATED          STATUS              PORTS                  NAMES

  13. 665563143eb7  grafana/grafana       "/run.sh"   48 seconds ago    Up 47 seconds    0.0.0.0:3000->3000/tcp     grafana


访问WEB管理端


打造高逼格、可视化的Docker容器监控系统平台

用户名:密码 admin:admin


添加数据源


打造高逼格、可视化的Docker容器监控系统平台
打造高逼格、可视化的Docker容器监控系统平台

之后保存并测试连接


新建New dashboard


打造高逼格、可视化的Docker容器监控系统平台
打造高逼格、可视化的Docker容器监控系统平台


这里随便选择一个容器做为测试使用,实际环境可根据实际环境填写。


打造高逼格、可视化的Docker容器监控系统平台
打造高逼格、可视化的Docker容器监控系统平台


保存返回到HOME界面后,如下图


打造高逼格、可视化的Docker容器监控系统平台


最终的效果图如下


打造高逼格、可视化的Docker容器监控系统平台


End


据说很多技术大牛都扫码了

以上是关于打造高逼格可视化的Docker容器监控系统平台的主要内容,如果未能解决你的问题,请参考以下文章

TOP 互联网公司大牛带你打造高逼格自动化平台

如何打造一个高逼格的云运维平台?

Zabbix+Grafana打造高逼格监控系统

打造一款高逼格的Vim神器

教你打造一款高逼格的Vim神器

教你实现一个高逼格的系统监控