跳到主要内容

认识

2024年12月24日
柏拉文
越努力,越幸运

一、认识


cAdvisor 是一个轻量级的容器监控工具,适用于 Docker 容器的实时资源监控和分析。它提供了详细的容器级性能数据,包括 CPU、内存、磁盘 I/O 和网络使用情况等。通过与 Prometheus 等监控系统的集成,cAdvisor 还能够支持长时间的数据存储、告警和分析,帮助用户优化容器部署和提高容器化环境的运维效率。

cAdvisor(Container Advisor) 核心功能:

  1. 资源监控: CPU 使用情况cAdvisor 可以监控每个容器的 CPU 使用率,包括 CPU 使用时间、负载等; 内存使用情况:监控容器内存的使用,包括实际内存和交换内存(swap)使用情况。磁盘 I/O:监控容器的磁盘读取、写入速率、磁盘使用情况等。网络流量cAdvisor 可以监控容器的网络流量,包括接收和发送的数据量。

  2. 容器性能数据cAdvisor 提供了每个容器的详细性能数据,包括但不限于:CPU、内存、磁盘、网络等的实时使用数据; 每个容器的运行状态、生命周期和资源利用率。每个容器的挂载点、PID(进程标识符)信息等。

  3. 易于集成: Web UIcAdvisor 提供了一个 web 界面,可以用来实时查看每个容器的性能数据。Prometheus 集成:cAdvisor 可以通过 Prometheus exporter 输出性能数据,用户可以将其与 Prometheus 集成,进行更详细的历史数据存储、查询和告警。JSON APIcAdvisor 提供了一个 RESTful API,可以通过 JSON 格式获取容器的各种性能数据。

  4. 多容器支持cAdvisor 支持多种容器运行时,不仅支持 Docker,还支持其他容器运行时,如 rkt 等。

  5. 历史数据cAdvisor 提供了短期的历史数据,帮助用户分析容器的资源使用趋势。尽管 cAdvisor 自身不会长期保存数据,但它可以与其他监控系统(如 Prometheus)集成,实现长期数据存储。

二、工作


cAdvisor 直接通过 Docker APILinux 内核的相关接口获取容器的资源使用情况。它通过以下几种方式进行监控和数据采集:

  • Docker APIcAdvisor 使用 Docker API 获取容器的元数据和基本信息。

  • Linux 内核:它通过访问 /sys/fs/cgroup、/procLinux 系统文件系统中的文件来获取容器的资源使用数据。

  • 控制组(cgroupscAdvisor 依赖 cgroups 来访问各个容器的资源使用情况。控制组是 Linux 内核提供的一种资源管理机制,用于限制、记录和隔离容器对 CPU、内存、磁盘和网络等资源的使用。

三、cAdvisor Vs Node Exporter


cAdvisor: 专注于 容器级别的监控, cAdvisor 主要用于监控 Docker 容器 的资源使用情况,包括 CPU、内存、磁盘 I/O、网络等。它为每个容器提供详细的资源使用信息。

Node Exporter: 专注于 主机级别的监控,即监控 宿主机 的硬件和操作系统资源。Node Exporter 监控的是 宿主机器 上的各类资源,包括 CPU、内存、磁盘、网络、文件系统等,并且可以监控宿主机上运行的所有容器和进程。它不会单独关注容器的性能数据,而是提供宿主机级别的资源数据。

cAdvisorNode Exporter 可以配合使用,分别监控 容器宿主机。通过这种方式,您可以全面监控整个容器化环境,不仅关注每个容器的资源使用情况,还能监控宿主机的性能和资源健康状态。

  • cAdvisor:专注容器内的资源(如 CPU、内存、磁盘 I/O、网络)。

  • Node Exporter:监控宿主机层级的资源(如硬件性能、操作系统资源)。

通过这种方式,Prometheus 可以从这两个数据源(cAdvisorNode Exporter)抓取数据,从而提供全方位的监控和告警功能。