本文全部内容来自尚硅谷周阳老师
视频地址:www.bilibili.com/video/BV1gr…
本篇文章仅用于个人学习,如有侵权联系删除。
十、Docker轻量级可视化工具Portainer
1. 介绍
Portainer 是一款轻量级的应用,它提供了图形化界面,用于方便地管理Docker环境,包括单机环境和集群环境。
官网:
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
对应命令
[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
十一、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
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收集服务
第一次访问会慢一点,CAdvisor也有图形展现功能,这里主要用它来作数据采集
6.3 浏览influxdb存储服务
6.4 浏览grafana展现服务
地址:http://ip:3000 默认账号密码 admin/admin
6.4.1 配置步骤
6.4.1.1 配置数据源
6.4.1.2 选择influxdb
6.4.1.3 填写其他配置
6.4.1.4 配置面板panel
步骤1:
步骤2:
步骤3:
步骤4: