1、Docker自带的监控命令
监控容器最简单的方法是使用Docker自带的监控命令:docker ps、docker top、docker stats。
(1)docker ps查看容器状态
可以使用 或 命令显示容器列表。
(2)docker top查看容器进程
查看容器中正在运行的进程。
(3)docker stats查看容器资源使用
用 命令实时查看容器的系统资源使用情况。
2、第三方工具cAdvisor
用于分析正在运行的容器的资源占用情况和性能指标,是具有图形界面、最易于入门的Docker容器监控工具。
cAdvisor以守护进程方式运行,负责收集、聚合、处理、输出运行中容器的数据,可以监控资源隔离参数、历史资源使用情况和网络统计数据。
cAdvisor提供配置:
--storage_duration:历史数据保存的时间,默认为2min,即只保存最近2min的数据。
--allow_dynamic_housekeeping:控制cAdvisor如何和何时执行周期性的容器状态收集工作。
--global_housekeeping_interval:设置检测是否有新容器的时间周期。
--housekeeping_interval:统计每个容器数据的时间周期,默认每1s取一次数据,选取统计到的最近的60个数据。
cAdvisor将数据直接导出到本地文件:
cAdvisor优势:可以将监控数据导出给第三方工具;劣势:只能监控一个主机,数据展示功能有限。
3、Weave Scope
开源的故障诊断与监控工具,除了用于Docker外,还可以用于Kubernetes集群。
Weave Scope会自动生成容器之间的关系图,便于管理员直观地以可视化的方式监控容器化和微服务化的应用。
Weave Scope能够进行跨主机监控,并且消耗的资源非常少。
Weave Scope主要功能:
- 实时了解容器状态
- 提供内部细节与深度链接
- 支持容器的交互与管理
- 通过插件进行扩展与定制
(1)Weave Scope安装
前提是安装并运行Docker,此软件以容器方式运行。
(2)访问熟悉weave scope界面
对运行中的容器,Docker会将日志发送到容器的 STDOUT 和STDERR 上。
可以将STDOUT 和STDERR视为容器的控制台终端。
1、容器日志管理工具
(1)docker logs
命令输出正在运行的容器的日志信息。默认输出自容器启动以来完整的日志。
命令可能不会显示有用信息的两种情形:
- 如果使用将日志发送到文件、外部主机、数据库或另外一个后端日志系统的日志驱动,则docker logs命令不会显示有用信息,这时可以通过其他方式处理日志。
- 如果镜像运行的是Web服务器或数据库等非交互式进程,那么应用程序可能会将输出发送到日志文件而不是STDOUT和STDERR中。
- 如果容器以后台方式运行,则也不能看到输出的日志。
(2)docker service logs
命令显示swarm某服务/任务的所有容器的日志信息。
该命令适用于集群环境。
2、容器日志驱动
日志驱动(Logging Driver):Docker提供的帮助用户从运行的容器中提取日志信息的机制。默认的日志驱动是 。
选项值如下:
(1)配置默认的日志驱动
将文件中的值设为日志驱动名称。
案例1:将默认日志驱动设为
可以配置可配置选项。
案例2:日志驱动可配置选项
(2)配置容器的日志驱动
启动容器时,可以使用 选项来配置日志驱动,可以使用设置可配置选项(可以以键值对的方式配置多个)。
注意:说明同一个值配两次,最后一个生效。
3、容器日志清理
容器的日志文件会占用大量的空间,经常需要进行清理。如果直接删除 目录下的日志文件,并不会释放磁盘空间,因为日志文件是被打开的。
(1)清理正在运行的容器日志的shell脚本
(2)限制容器的日志上限
在daemon.json配置文件中通过log-opts选项来限制日志大小的上限
上例中设置容器日志大小上限是500M,容器最多有两个日志文件。
4、将容器的日志重定向到LINUX日志系统
运行在Linux操作系统的Docker主机上可以通过配置日志驱动将容器的日志重定向到Linux日志系统。
(1)将容器日志记录到syslog
是Linux标配的日志记录工具,主要用来收集系统产生的各种日志,日志文件默认放在/var/log目录下。
选择syslog作为日志驱动可将日志定向输出到syslog日志系统中,条件是:syslog守护进程必须在主机上运行。
(2)将容器日志记录到journald
是一个收集并存储日志数据的 systemd 日志系统服务,可以使用 命令查看它。
选择journald作为日志驱动可将日志定向输出到systemd日志系统中。
5、使用Logspout收集所有容器的日志
是一个 Docker 容器,大小仅 14MB,使用 BusyBox 作为其核心,它可以将来自容器应用程序的日志发送到某一个中央位置,比如单一 JSON 对象或者通过 HTTP API 可获得的流式端点。
选项容器会以前台方式运行。 选项可以设置容器环境变量。可以用来排除对某个容器日志路由:
(1)将所有容器的输出路由到远程syslog
案例:将所有日志转发给远程的syslog服务器,这里将本地服务器作为远程syslog服务器。