Bootstrap

十九、Docker容器监控之CAdvisor+InfluxDB+Granfana

1、概述

Docker自带查询容器状态的命令:docker stats,可以看到容器的ID\名称、占用CPU、内存等信息

 但是我们不能时时刻刻的盯着这个命令,并且这个都是实时数据不能留痕,如果这个时候某一个容器挂了,我们想查看下当时容器的CPU\MEM等信息,是查不到的,如果有个平台可以可视化的展示各个容器历史指标信息,是不是找问题就很方便了,如果搭建或者使用过ELK的朋友,就知道这个监控报警的重要性,CAdvisor+InfluxDB+Granfana 就是转为监控容器而生,简称CIG

2、容器监控3剑客作用以及官网

  • CAdvisor

用于兼容容器,并收集指标数据,但是它最长只能存储2分钟的数据,所以就需要将指标数据存储在其他数据库中

主页:https://github.com/google/cadvisor

  • InfluxDB

用于存储CAdvisor收集到的指标数据

官网:https://www.influxdata.com/

  • Granfana

用于将InfluxDB存储的数据以图表形式展示容器信息

官网:Grafana: The open observability platform | Grafana Labs

3、通过compose搭建CIG监控平台

编写compose.yml文件

volumes:
  grafana_data: {}
  
services:
  influxdb:
    image: tutum/influxdb:0.9
    restart: always
    environment:
      - PRE_CREATE_DB=cadvisor
    ports:
      - "8083:8083"
      - "8086:8086"
    volumes:
      - /usr/local/tool/volumn/influxdb:/data

  cadvisor:
    image: google/cadvisor
    links:
      - influxdb:influxsrv
    #https://gitcode.net/mirrors/google/cadvisor/-/blob/master/docs/storage/influxdb.md
    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
    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

实例操作:

CAdvisor访问地址:http://192.168.13.61:8080/containers/

InfluxDB访问地址:http://192.168.13.61:8083/

Grafana访问地址:http://192.168.13.61:3000/login  默认登录账号密码:admin/admin 进入后需要添加数据源

 

 

 

咱们直接在Grafana官网中找一个好看的Docker监控图表导入即可,图表查找地址: 

Dashboards | Grafana Labs

 选择自己想要的图表,进入

然后粘贴在Grafana图标导入中

 

或者可以自己新建panel。

;