zoukankan      html  css  js  c++  java
  • docker容器监控

    容器具有以下特性:

    容器是短期存活的,并且可以动态调度;
    
    容器的本质是进程,而不是一个完整操作系统;
    
    由于容器非常轻量,容器的创建和销毁也会比传统虚拟机更加频繁。
    

    Docker 容器的监控方案有很多,除了 Docker 自带的docker stats命令,还有很多开源的解决方案,例如 sysdig、cAdvisor、Prometheus 等,都是非常优秀的监控工具。
    docker stats命令确实可以获取并显示 Docker 容器运行状态。但是它的缺点也很明显,因为它只能获取本机数据,无法查看历史监控数据,没有可视化展示面板。

    因此,生产环境中我们通常使用另一种容器监控解决方案 cAdvisor。
    cAdvisor 的安装与使用

    首先使用以下命令启动 cAdvisor:

    $ docker run 
      --volume=/:/rootfs:ro 
      --volume=/var/run:/var/run:ro 
      --volume=/sys:/sys:ro 
      --volume=/var/lib/docker/:/var/lib/docker:ro 
      --volume=/dev/disk/:/dev/disk:ro 
      --publish=8080:8080 
      --detach=true 
      --name=cadvisor 
      --privileged 
      --device=/dev/kmsg 
      lagoudocker/cadvisor:v0.37.0
    

    此时,cAdvisor 已经成功启动,我们可以通过访问 http://localhost:8080 访问到 cAdvisor 的 Web 界面
    使用 cAdvisor 查看主机监控

    访问 http://localhost:8080/containers/

    使用 cAdvisor 查看容器监控

    访问 http://localhost:8080/docker/

    监控原理

    我们知道 Docker 是基于 Namespace、Cgroups 和联合文件系统实现的。其中 Cgroups 不仅可以用于容器资源的限制,还可以提供容器的资源使用率。无论何种监控方案的实现,底层数据都来源于 Cgroups。

    Cgroups 的工作目录为/sys/fs/cgroup,/sys/fs/cgroup目录下包含了 Cgroups 的所有内容。Cgroups包含很多子系统,可以用来对不同的资源进行限制。例如对CPU、内存、PID、磁盘 IO等资源进行限制和监控。

    为了更详细的了解 Cgroups 的子系统,我们通过 ls -l 命令查看/sys/fs/cgroup文件夹,可以看到很多目录:

    $ sudo ls -l /sys/fs/cgroup/
    total 0
    dr-xr-xr-x 5 root root  0 Jul  9 19:32 blkio
    lrwxrwxrwx 1 root root 11 Jul  9 19:32 cpu -> cpu,cpuacct
    dr-xr-xr-x 5 root root  0 Jul  9 19:32 cpu,cpuacct
    lrwxrwxrwx 1 root root 11 Jul  9 19:32 cpuacct -> cpu,cpuacct
    dr-xr-xr-x 3 root root  0 Jul  9 19:32 cpuset
    dr-xr-xr-x 5 root root  0 Jul  9 19:32 devices
    dr-xr-xr-x 3 root root  0 Jul  9 19:32 freezer
    dr-xr-xr-x 3 root root  0 Jul  9 19:32 hugetlb
    dr-xr-xr-x 5 root root  0 Jul  9 19:32 memory
    lrwxrwxrwx 1 root root 16 Jul  9 19:32 net_cls -> net_cls,net_prio
    dr-xr-xr-x 3 root root  0 Jul  9 19:32 net_cls,net_prio
    lrwxrwxrwx 1 root root 16 Jul  9 19:32 net_prio -> net_cls,net_prio
    dr-xr-xr-x 3 root root  0 Jul  9 19:32 perf_event
    dr-xr-xr-x 5 root root  0 Jul  9 19:32 pids
    dr-xr-xr-x 5 root root  0 Jul  9 19:32 systemd
    

    总结一下,容器的监控原理其实就是定时读取 Linux 主机上相关的文件并展示给用户。

    现在学习还不晚;
  • 相关阅读:
    SqlServer 查看数据库中所有存储过程
    SqlServer 查看数据库中所有视图
    SqlServer 查询表的详细信息
    SqlServer 遍历修改字段长度
    net core 操作Redis
    Tuning SharePoint Workflow Engine
    Open With Explorer
    Download language packs for SharePoint 2013
    Change Maximum Size For SharePoint List Template when Saving
    Six ways to store settings in SharePoint
  • 原文地址:https://www.cnblogs.com/ainimore/p/14414392.html
Copyright © 2011-2022 走看看