一、图形化工具

1. 关于Portainer

Portainer是Docker的图形化管理工具,提供状态显示面板、应用模板快速部署、容器镜像网络数据卷的基本操作(包括上传下载镜像,创建容器等操作)、事件日志显示、容器控制台操作、Swarm集群和服务等集中管理和操作、登录用户管理和控制等功能。功能十分全面,基本能满足中小型单位对容器管理的全部需求。

官网:https://docs.portainer.io/

2. 安装

# First, create the volume that Portainer Server will use to store its database:
docker volume create portainer_data
# Then, download and install the Portainer Server container:
docker run -d -p 8000:8000 -p 9443:9443 --name portainer --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer-ce:latest

3. 使用

浏览器访问:https://192.168.137.101:9443/ 就可以进入Portainer管理界面。

二、CIG容器监控

参考:https://blog.csdn.net/z_xiaoluan/article/details/122778894

2.1 关于CAdivisor

为了解决docker stats的问题(存储、展示),谷歌开源的cadvisor诞生了,cadvisor不仅可以搜集一台机器上所有运行的容器信息,还提供基础查询界面和http接口,方便其他组件如Prometheus进行数据抓取,或者cadvisor + influxdb + grafna搭配使用。

cAdvisor可以对节点机器上的资源及容器进行实时监控和性能数据采集,包括CPU使用情况、内存使用情况、网络吞吐量及文件系统使用情况

CAdvisor默认存储2分钟的数据,而且只是针对物理机。

Cadvisor使用Go语言开发,利用Linux的cgroups获取容器的资源使用信息,在K8S中集成在Kubelet里作为默认启动项,官方标配。

2.2 关于InfluxDB

InfluxDB是一个由InfluxData开发的开源时序型数据库,专注于海量时序数据的高性能读、高性能写、高效存储与实时分析等,在DB-Engines Ranking时序型数据库排行榜上排名第一,广泛应用于DevOps监控、IoT监控、实时分析等场景。

InfluxDB部署简单、使用方便,在技术实现上充分利用了Go语言的特性,无需任何外部依赖即可独立部署。提供类似于SQL的查询语言,接口友好,使用方便。丰富的聚合运算和采样能力,提供灵活的数据保存策略(Retention Policy)来设置数据的保留时间和副本数,在保障数据可靠性的同时,及时删除过期数据,释放存储空间,提供灵活的连续查询(Continues Query)来实现对海量数据的采样。支持协议种类多,除了HTTP、UDP等原生协议,还兼容CollectD、Graphite、OpenTSDB、Prometheus等组件的通讯协议。

2.3 关于Granfana

grafana是用于可视化大型测量数据的开源程序,提供了强大和优雅的方式去创建、共享、浏览数据,有热插拔控制面板和可扩展的数据源。

2.4 通过容器编排启动CIG

创建docker-compose.yml文件

version: "3.1"
volumes:
  grafana_data: {}
services: 
  influxdb: 
    image: tutum/influxdb:0.9 
    container_name: ms01 
    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 up -d

2.5 访问

CAdvisor:http://192.168.137.101:8080/

InfluxDB:http://192.168.137.101:8083/

Grafana:http://192.168.137.101:3000/ 账号密码:admin/admin

2.6 配置

首先进入Grafana管理端页面,找到Configuration/Data sources菜单,添加一个InfluxDB的数据源,主要添加以下配置:

然后就可以进入Dashboard菜单,添加自定义的面板进行监控