docker(三、容器监控)

181 阅读5分钟

本文全部内容来自尚硅谷周阳老师

视频地址:www.bilibili.com/video/BV1gr…

本篇文章仅用于个人学习,如有侵权联系删除。

十、Docker轻量级可视化工具Portainer

1. 介绍

Portainer 是一款轻量级的应用,它提供了图形化界面,用于方便地管理Docker环境,包括单机环境和集群环境。

官网:

www.portainer.io/

docs.portainer.io/v/ce-2.9/st…

2. 安装

docker search portainer

docker pull portainer/portainer

[root@localhost mydockerfile]# docker search portainer
NAME                              DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
portainer/portainer               This Repo is now deprecated, use portainer/p…   2299
portainer/portainer-ce            Portainer CE - a lightweight service deliver…   1479
portainer/agent                   An agent used to manage all the resources in…   178
portainer/portainer-ee            Portainer BE - a fully featured service deli…   33
portainer/templates               App Templates for Portainer http://portainer…   26
portainer/golang-builder          Utility to build Golang binaries.               6                    [OK]
[root@localhost mydockerfile]# docker pull portainer/portainer
Using default tag: latest
latest: Pulling from portainer/portainer
94cfa856b2b1: Pull complete
49d59ee0881a: Pull complete
a2300fd28637: Pull complete
Digest: sha256:fb45b43738646048a0a0cc74fcee2865b69efde857e710126084ee5de9be0f3f
Status: Downloaded newer image for portainer/portainer:latest
docker.io/portainer/portainer:latest
[root@localhost mydockerfile]# docker run -d -p 8000:8000 -p 9000:9000 --name portainer --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer
948848baf40ce0a4b16702785a5d91466558f0f1b27bd4e9b20d655e300aa70e

3. 访问

地址:http://宿主机ip:9000/ http://192.168.198.100:9000/ 第一次登录需要创建admin 密码12345678

image.png

image.png

对应命令

[root@localhost mydockerfile]# docker system df
TYPE            TOTAL     ACTIVE    SIZE      RECLAIMABLE
Images          15        4         4.387GB   3.697GB (84%)
Containers      4         4         4B        0B (0%)
Local Volumes   9         2         113.3MB   113.1MB (99%)
Build Cache     0         0         0B        0B

image.png

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

1. 总体介绍

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

之所以使用这套监控,是因为传统的通过命令的容器监控有很多缺点,比如通过docker stats命令可以很方便的看到当前宿主机上所有容器的CPU,内存以及网络流量等数据,一般小公司够用了。但是docker stats统计结果只能是当前宿主机的全部容器,数据资料是实时的,没有地方存储、没有健康指标过线预警等功能。

CONTAINER ID   NAME                   CPU %     MEM USAGE / LIMIT     MEM %     NET I/O           BLOCK I/O         PIDS
948848baf40c   portainer              0.00%     9.805MiB / 1.777GiB   0.54%     349kB / 4.72MB    205kB / 1.65MB    11
b270e667c38c   ms01                   0.30%     368.4MiB / 1.777GiB   20.25%    60.9kB / 2.32MB   3.78MB / 0B       35
63c6fd934b25   mydockerfile_redis_1   0.19%     4.406MiB / 1.777GiB   0.24%     830B / 0B         4.36MB / 7.17kB   5
0ff5c685801f   mydockerfile_mysql_1   0.15%     179.4MiB / 1.777GiB   9.86%     830B / 0B         4.28MB / 12.7MB   27

image.png

2. CAdvisor监控收集

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

主要功能:

(1) 展示Host和容器两个层次的监控数据。

(2) 展示历史变化数据。

3. InfluxDB存储数据

InfluxDB是用Go语言编写的一个开源分布式时序、事件和指标数据库,无需外部依赖。

CAdvisor默认只在本机保存最近2分钟的数据,为了持久化存储数据和统一收集展示监控数据,需要将数据存储到InfluxDB中。InfluxDB是要给时序数据库,专门用于存储时序相关数据,很适合存储CAdvisor的数据。而且,CAdvisor本身已经提供了InfluxDB的集成方法,启动容器时指定配置即可。

InfluxDB主要功能:

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

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

(3) 基于事件:它支持任意的事件数据

4. Granfana展示图表

Granfana是一个开源的数据监控分析可视化平台,支持多种数据源配置(支持的数据源包括InfluxDB、mysql、Elasticsearch、OpenTSDB、Graphite等)和丰富的插件及模板功能,支持图标权限控制和报警。

Granfana主要特性

(1) 灵活丰富的图形化选项

(2) 可以混合多种风格

(3) 支持白天和夜间模式

(4) 多个数据源

5. Compose容器编排处理

[root@localhost ~]# docker pull tutum/influxdb:0.9

[root@localhost ~]# docker pull google/cadvisor

[root@localhost ~]# docker pull grafana/grafana

[root@localhost ~]# mkdir -p /mydocker/cig

[root@localhost ~]# cd /mydocker/cig

[root@localhost cig]# vim docker-compose.yml

[root@localhost cig]# docker-compose up

docker-compose.yml

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

6. 测试

6.1 查看三个服务容器是否都启动

[root@localhost ~]# docker ps
CONTAINER ID   IMAGE                COMMAND                  CREATED         STATUS         PORTS                                                                                  NAMES
6565e79e24da   google/cadvisor      "/usr/bin/cadvisor -…"   4 minutes ago   Up 4 minutes   0.0.0.0:8080->8080/tcp, :::8080->8080/tcp                                              cig_cadvisor_1
8b578678dab7   grafana/grafana      "/run.sh"                4 minutes ago   Up 4 minutes   0.0.0.0:3000->3000/tcp, :::3000->3000/tcp                                              cig_grafana_1
93663beada03   tutum/influxdb:0.9   "/run.sh"                4 minutes ago   Up 4 minutes   0.0.0.0:8083->8083/tcp, :::8083->8083/tcp, 0.0.0.0:8086->8086/tcp, :::8086->8086/tcp   cig_influxdb_1

6.2 浏览CAdvisor收集服务

地址:http://ip:8080/

第一次访问会慢一点,CAdvisor也有图形展现功能,这里主要用它来作数据采集

image.png

6.3 浏览influxdb存储服务

地址:http://ip:8083/

image.png

6.4 浏览grafana展现服务

地址:http://ip:3000 默认账号密码 admin/admin

image.png

image.png

6.4.1 配置步骤

6.4.1.1 配置数据源

image.png

6.4.1.2 选择influxdb

image.png

6.4.1.3 填写其他配置

image.png

6.4.1.4 配置面板panel

步骤1:

image.png

步骤2:

image.png

步骤3:

image.png

步骤4:

image.png