再次强调,时序数据库的ntp问题!!!!
ntpdate -u ntp.aliyun.com
当企业级容器上升到一定规模的时候,我们必须得实时监控每个容器的状态。我们可以执行
docket stats
这个统计命令是实时的,小公司的话,容器少还可以,够用。如果想看前几天的流量监控数据,显然是没有的,这个时候就需要更强大的容器监控软件。
容器监控架构组件
# docker stats
CONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS
093020ea60c6 blog_mysql 0.08% 227.3MiB / 3.685GiB 6.03% 1.73MB / 802kB 29.3MB / 641MB 30
748d2e63ec01 blog_wordpress 0.00% 112.7MiB / 3.685GiB 2.99% 2.46MB / 2.93MB 163MB / 16.4kB 8
215e25e8b63e blog_phpadmin 0.00% 40.87MiB / 3.685GiB 1.08% 314kB / 895kB 901kB / 41kB 7
通过docker stats命令可以很方便的看到当前宿主机上所有容器的CPU,内存以及网络流量等数据,一般小公司够用了
但是,docker stats统计结果只能是当前宿主机的全部容器,数据资料是实时的,没有地方存储、没有健康指标过线预警等功能。
如何解决,那就要用到接下来所要讲的方案:cAdvisor+InfluxDB+Grafana
cAdvisor监控收集 + InfluxDB存储数据 + Grafana展示图表
cAdvisor
cAdvisor 是一个容器资源监控工具,包括容器的内存、CPU、网络IO、磁盘IO等监控,同时提供了一个Web页面用于查看容器的实时运行状态。
cAdivisor 默认存储2分钟的数据,而且只是针对单物理机。
不过,cAdivisor提供了很多数据集成接口,支持InfluxDB、Redis、Kafka、Elasticsearch等集成,可以加上对应配置将监控数据发往这些数据库存储起来。
cAdvisor 功能主要有两点:
- 展示Host和容器两个层次的监控数据。
- 展示历史变化数据。
InfluxDB
InfluxDB 使用Go语言编写的一个开源分布式时序、时间和指标数据库,无需外部依赖。
cAdvisor 默认旨在本机保存最近2分钟的数据,为了持久化存储数据和统一收集展示监控数据,需要将数据存储到InfluxDB中。
InfluxDB是一个时许数据库,专门用于存储时许相关数据,很适合存储CADvisor的数据,而且,CAdvisor本身已经提供了InfluxDB的集成方法,启动容器时指定配置即可。
InfluxDB主要功能:
- 基于时间序列,支持与时间有关的相关函数(如最大、最小、求和等);
- 可度量性:你可以实时对大量数据进行计算;
- 基于事件:它支持任意的事件数据。
Grafana
Grafana 是一个开源的数据监控分析可视化平台,支持多种数据源配置(支持的数据源包括InfluxDB、Mysql、Elasticsearch、OpenTSDB、Graphite等)和丰富的插件及模块功能,支持图表权限控制和报警。
Grafana主要特性:
- 灵活丰富的图形化选项;
- 可以混合多种风格;
- 支持白天和夜间模式;
- 多个数据源。
部署思路
1.监控服务端主机,运行InfluxDB 、Grafana
涉及的容器环境变量
INFLUXDB_DB=cadvisor # 初始数据库名称
INFLUXDB_USER=root # 初始数据库用户名
INFLUXDB_USER_PASSWORD=www.yuchaoit.cn # 初始数据库密码
docker run -d -p 8086:8086 --restart=always --name www.yuchaoit.cn_influxdb \
-e INFLUXDB_DB=cadvisor \
-e INFLUXDB_USER=root \
-e INFLUXDB_USER_PASSWORD=www.yuchaoit.cn \
-v influxdb_data:/var/lib/influxdb \
influxdb:1.8
部署grafana
docker run -d -p 3000:3000 --restart=always --name grafana \
-v grafana_data:/var/lib/grafana \
grafana/grafana
2.被监控的容器主机,运行CAdvisor
-storage_driver_db=cadvisor # influxdb的数据库名称
-storage_driver_host=10.0.0.200:8086 # influxdb的主机地址
-storage_driver_user=root # influxdb的用户名
-storage_driver_password=www.yuchaoit.cn # influxdb的密码
docker run -d -p 8080:8080 --restart=always --name cadvisor \
-v /:/rootfs:ro \
-v /var/run:/var/run:rw \
-v /sys:/sys:ro \
-v /var/lib/docker/:/var/lib/docker:ro \
google/cadvisor \
-storage_driver=influxdb -storage_driver_db=cadvisor -storage_driver_host=192.168.92.148:8086 -storage_driver_user=root -storage_driver_password=www.yuchaoit.cn
单机一键部署
如果你想将cAdvisor+InfluxDB+Grafana以及其他的容器都安装到同一台主机上,那使用这个compose一套带走方案就可以了。
version: '3.1'
services:
influxdb:
image: influxdb:1.8
restart: always
environment:
- INFLUXDB_DB=cadvisor
- INFLUXDB_USER=root
- INFLUXDB_USER_PASSWORD=www.yuchaoit.cn
ports:
- "8086:8086"
volumes:
- influxdb_data:/var/lib/influxdb
cadvisor:
image: google/cadvisor
depends_on:
- influxdb
command: -storage_driver=influxdb -storage_driver_db=cadvisor -storage_driver_host=influxdb:8086 -storage_driver_user=root -storage_driver_password=www.yuchaoit.cn
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
depends_on:
- influxdb
ports:
- "3000:3000"
volumes:
- grafana_data:/var/lib/grafana
volumes:
influxdb_data: {}
grafana_data: {}
检测语法
[root@docker-200 /tmp]#docker-compose config -q
运行compose
[root@docker-200 /tmp]#docker-compose up -d
检查监控组件3剑客
访问cAdvisor
http://10.0.0.200:8080/ 可视化入口
http://10.0.0.200:8080/metrics 指标接口
访问InfluxDB
http://10.0.0.200:8086/metrics
访问Grafana
http://10.0.0.200:3000/login
默认admin、admin
修改为www.yuchaoit.cn
添加InfluxDB数据源
http://10.0.0.200:8086
http://influxdb:8086
compose已经做好依赖关系了
添加cAdvisor的数据源
添加仪表盘
标签:容器,方案,driver,storage,InfluxDB,influxdb,监控,docker From: https://www.cnblogs.com/sxy-blog/p/17916543.html看到数据即可。