监控维度
1. 主机维度
对于Docker的容器监控,主要以容器级别的监控为主。这里介绍了一些Docker主机级别的监控指标,通过这些指标可以从整体上了解一下主机的运行情况。
- 主机CPU情况和使用量
- 主机内存情况和使用量
- 主机上本地镜像情况
- 主机上的容器运行情况
2. 镜像维度
作为容器的基础,还需要对主机的镜像信息进行监控。镜像的相关信息一般为静态信息,可以反映出主机上用于构建容器的基础情况, 以便从底层来掌握和优化主机的容器。
-
镜像的基本信息
docker images -
镜像与容器的对应关系
-
镜像构建的历史信息(底层的依赖信息)
- docker inspect
镜像的基本信息可以包括镜像的总数量、ID、名称、版本、大小等。
3. 容器维度
在主机上运行的容器是监控的重中之重。作为应用的直接载体,是哟好难过这需要对容器的各类信息进行实时监控,以保证应用的正常运行。Docker在底层使用了linux内核提供的资源机制 namespace和cgropus1,以此来支持容器的运行。通过这些机制,我们可以很方便的获取容器的各项监控指标。
-
容器的基本信息
- docker ps
-
容器的运行状态
- docker stats
- GET /containers/(id)/stats, 用户通过该命令,可以实时监控启动中的容器的运行情况,包括CPU、内存、块设备I/O和网络I/O,这些信息都会定期刷新以显示最新的运行情况。
- docker top 可以查看正在运行的容器中的进程运行情况,包括进程号、父进程号、命令等
- docker port 用于查看容器与主机之间的端口映射关系信息。
-
容器的用法用量
容器的基本信息包括容器的总数量、ID、名称、镜像、启动命令、端口等信息。容器监控时可以依据容器的运行状态,即运行中、暂停、停止及异常退出,来同年级个状态的容器的数量,并实时反馈各个容器的运行状态。容器的用量信息则是用户最关心的,也是监控中心 最为复杂的部分,他可以统计容器的CPU使用率、内存使用量、块设备I/O使用量、网络使用情况等资源的使用情况。这一部分监控数据大多数都来源于Cgroup下面的限制文件
常用监控工具
- Google的cAdvisor
- Datadog
- Prometheus
参考资料:
-【1】 Docker 容器与容器云(第二版) - 浙江大学SEL实验室
namespace和cgropus, 在谈论Docker时,常常会聊到Docker的实现方式。许多开发者都知道,Docker容器的本质是宿主机上的进程。Docker通过namespace实现了资源隔离,通过cgroups实现了资源限制,通过写时复制(copy-on-write)实现了高效的文件操作。如果希望更进一步了解 ,可以阅读参考资料内容 ↩︎