zoukankan      html  css  js  c++  java
  • Docker监控:google/cadvisor

    Docker自带了容器监控功能,可以对容器进行相关的性能监控,指标查看

    主要包括:

    • 主机的CPU情况和使用量
    • 主机的内存情况和使用量
    • 主机的本地镜像情况
    • 主机的容器运行情况

    常规使用docker ps -a   ,docker images命令查看后两者,当然docker stats命令就是监控相关容器实例情况。

    [root@vm-50-151 ~]# docker ps -a
    CONTAINER ID        IMAGE                   COMMAND                  CREATED             STATUS                    PORTS                                                                  NAMES
    14330de27f9d        yatho_nginx:1.0.1       "/usr/local/sbin/run."   26 hours ago        Up 26 hours               0.0.0.0:32770->22/tcp, 0.0.0.0:32769->80/tcp, 0.0.0.0:32768->443/tcp   nginx_test
    d4e1352fa5a7        c782eddf525a            "/bin/sh -c '-y updat"   27 hours ago        Exited (2) 27 hours ago                                                                          stoic_kilby
    b573605ad104        c782eddf525a            "/bin/sh -c 'yum inst"   29 hours ago        Exited (1) 29 hours ago                                                                          tender_jennings
    480b1bbe7845        docker.io/hello-world   "/hello"                 13 days ago         Exited (0) 13 days ago                                                                           trusting_visvesvaraya
    [root@vm-50-151 ~]# docker images
    REPOSITORY                          TAG                 IMAGE ID            CREATED             SIZE
    yatho92/yatho_nginx_centos6.5       1.0.0               f75f41326048        26 hours ago        1.243 GB
    yatho_nginx                         1.0.1               f75f41326048        26 hours ago        1.243 GB
    docker.io/centos                    latest              d123f4e55e12        12 days ago         196.6 MB
    docker.io/hello-world               latest              05a3bd381fc2        9 weeks ago         1.84 kB
    docker.io/hagaico/centos-base-6.5   latest              17e89775b93c        3 years ago         595.3 MB
    [root@vm-50-151 ~]# docker stats
    
    CONTAINER           CPU %               MEM USAGE / LIMIT      MEM %               NET I/O               BLOCK I/O           PIDS
    14330de27f9d        0.00%               1.297 MiB / 3.86 GiB   0.03%               3.142 kB / 3.436 kB   6.675 MB / 0 B      3
    
    CONTAINER           CPU %               MEM USAGE / LIMIT      MEM %               NET I/O               BLOCK I/O           PIDS
    14330de27f9d        0.00%               1.297 MiB / 3.86 GiB   0.03%               3.142 kB / 3.436 kB   6.675 MB / 0 B      3
    
    CONTAINER           CPU %               MEM USAGE / LIMIT      MEM %               NET I/O               BLOCK I/O           PIDS
    14330de27f9d        0.00%               1.297 MiB / 3.86 GiB   0.03%               3.142 kB / 3.436 kB   6.675 MB / 0 B      3
    
    CONTAINER           CPU %               MEM USAGE / LIMIT      MEM %               NET I/O               BLOCK I/O           PIDS
    14330de27f9d        0.00%               1.297 MiB / 3.86 GiB   0.03%               3.142 kB / 3.436 kB   6.675 MB / 0 B      3

      也可以使用类似top命令查看进程情况

    [root@vm-50-151 ~]# docker stats nginx_test
    
    CONTAINER           CPU %               MEM USAGE / LIMIT      MEM %               NET I/O               BLOCK I/O           PIDS
    nginx_test          0.00%               1.297 MiB / 3.86 GiB   0.03%               3.142 kB / 3.436 kB   6.675 MB / 0 B      3
    
    CONTAINER           CPU %               MEM USAGE / LIMIT      MEM %               NET I/O               BLOCK I/O           PIDS
    nginx_test          0.00%               1.297 MiB / 3.86 GiB   0.03%               3.142 kB / 3.436 kB   6.675 MB / 0 B      3
    
    CONTAINER           CPU %               MEM USAGE / LIMIT      MEM %               NET I/O               BLOCK I/O           PIDS
    nginx_test          0.00%               1.297 MiB / 3.86 GiB   0.03%               3.142 kB / 3.436 kB   6.675 MB / 0 B      3
    

      如果想要看到更为详细的容器属性,还可以通过netcat,使用Docker远程API来查看。发送一个HTTP GET请求/containers/[CONTAINER_NAME],其中CONTAINER_NAME是你想要统计的容器名称。你可以从这里看到一个容器stats请求的完整响应信息。在上述的例子中你会得到缓存、交换空间以及内存的详细信息。

      当然这种方式并不会令人接受,大家还是希望能够看到非常直观,详细的可视化界面

      CAdvisor是一个易于设置并且非常有用的工具,我们不用非要SSH到服务器才能查看资源消耗,而且它还给我们生成了图表。此外,当集群需要额外的资源时,压力表(pressure gauges )提供了快速预览。而且,CAdvisor是免费的,并且还开源。

    另外,它的资源消耗也比较低。但是,它有它的局限性,它只能监控一个Docker主机。因此,如果你是多节点的话,那就比较麻烦了,你得在所有的主机上都安装一个CAdvisor,者肯定特别不方便。值得注意的是,如果你使用的是Kubernetes,你可以使用heapster来监控多节点集群。另外,在图表中的数据仅仅是时长一分钟的移动窗口,并没有方法来查看长期趋势。如果资源使用率在危险水平,它却没有生成警告的机制。如果在Docker节点的资源消耗方面,你没有任何可视化界面,那么CAdvisor是一个不错的开端来带你步入容器监控,然而如果你打算在你的容器中运行任何关键任务,那你就需要一个更强大的工具或者方法。

    CAdvisor使用:

      下载官方镜像:

    [root@vm-50-151 ~]# docker pull  google/cadvisor
    Using default tag: latest
    Trying to pull repository docker.io/google/cadvisor ... 
    latest: Pulling from docker.io/google/cadvisor
    709515475419: Pull complete 
    5760eeb1525d: Downloading [=======================>                           ]  6.32 MB/13.74 MB
    e485506b272e: Download complete 
    e485506b272e: Pulling fs layer 
    

      启用镜像容器实例,映射端口

    [root@vm-50-151 /]# docker run
    > --volume=/:/rootfs:ro
    > --volume=/var/run:/var/run:rw
    > --volume=/sys:/sys:ro
    > --volume=/var/lib/docker/:/var/lib/docker:ro
    > --publish=8080:8080
    > --detach=true
    > --name=cadvisor
    > google/cadvisor:latest
    38423c30e04364265999c2642d54d6737b798f887b19be045c440ce90968c548
    [root@vm-50-151 /]# docker ps
    CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
    38423c30e043 google/cadvisor:latest "/usr/bin/cadvisor -l" 14 seconds ago Up 12 seconds 0.0.0.0:8080->8080/tcp cadvisor
    14330de27f9d yatho_nginx:1.0.1 "/usr/local/sbin/run." 27 hours ago Up 27 hours 0.0.0.0:32770->22/tcp, 0.0.0.0:32769->80/tcp, 0.0.0.0:32768->443/tcp nginx_test

      打开链接查看,容器宿主机IP:8080

     

      

      该容器对于我们来说已经足够使用了,不过相比较更加专业的公司,该工具显示的docker信息详细程度不够,集成度也不太强,而且无生成警报的能力,也只能监控容器资源,不支持非docker资源监控。

      免费的东西,你还想怎么样呢?

  • 相关阅读:
    vb6 控件未注册问题解决
    Collection of algorithm for sorting. 常见排序算法集(二)
    Unity中uGUI的多分辨率处理
    大型站点技术架构PDF阅读笔记(一):
    GTK入门学习:glade的介绍
    java io (java输入输出流)具体解释
    python类的继承
    Python基础二--基本控制语句
    restlet Framework2.2和2.3版本号的对照
    crm创建团队设置团队的业务部门
  • 原文地址:https://www.cnblogs.com/YatHo/p/7845250.html
Copyright © 2011-2022 走看看