暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

docker 入门(六)

writeline 2021-04-19
331

 本文开始前,先回顾下上一篇docker 入门,主要讲解如何用最佳实践来对容器内的日志进行抓取。本篇将来聊聊如何对容器进行监控。


前言


一般地,容器监控就跟日志监控一样。要看的时候,你得有数据可以看。而对docker的监控大致有三种方案:

  • docker自带监控命令

  • Weave Scope

  • cAdvisor

下面让我们一起来探讨下这几种方案。


01

docker 自带监控命令


docker 自带了 ps,top,stats。

  • ps 会列出当前正在运行的容器,加参数 -a,包含已经停掉的容器

    docker ps
    CONTAINER ID IMAGE
    6a407c5e6d68 skywalking-ui:7.0.0
    7553b8df8617 skywalking-oap-server:7.0.0-es7
    66a7b3c3b42a    elasticsearch:7.5.0 
    • top 会显示容器中正在运行的进程

      docker top ui
      PID USER TIME COMMAND
      2637  root  0:49   java
      • stats 会显示容器使用的系统资源

        --实时展示全部容器信息
        docker stats 
        CONTAINER ID  NAME CPU %  MEM USAGE / LIMIT   MEM %  NET I/O  BLOCK I/O PIDS
        e4a17fcae937  k8s  0.29%  11.39MiB / 3.848GiB 0.29%  0B / 0B  0B / 0B   11
        --非实时展示全部容器信息
        docker stats --no-stream 
        --展示特定容器信息
        docker stats ui 
        通过这个命令,我们可以看到如下的信息:
        CPU  MEM
        当前使用的CPU,内存百分比
        MEM USAGE LIMIT当前使用的内存和最大可以使用的内存
        NET I/O
        网络IO
        BLOCK I/O
        磁盘IO
        PIDS
        创建的进程数或线程数

        结合上面的几个命令来看,虽然功能强大,但显然没有实时的图形化界面来的方便和给力。


        02


        Weave Scope


        Weave Scope 可对容器和主机做监控。

        • 安装

          curl -L git.io/scope -o usr/local/bin/scope
          chmod a+x usr/local/bin/scope
          • 运行

            scope launchd
            82980f97e167fe466c068490a9e4ef5edb64f4e65c07d15346a72faf4bc70aa
            Scope probe started
            Weave Scope is listening at the following URL(s): 
             * http://127.0.0.1:4040/

            看到如上的输出,就表示服务已经成功运行起来了。地址被我改过了。

            从图片来看,会自动显示出容器之间的关联关系,同时可以对容器与主机做监控,并提供CPU与内存指标。
            • 容器

              比如我点击查看下 heml-test1


            • 监控主机

              从图片我们可以发现,Weave Scope 对CPU,内存用高低水位图来展示。这也是比较贴心的地方了。点击中间的master

              从图中我们可以看到,提供了主机的资源使用的实时情况。以及在主机上运行的进程和容器列表。
            • 指标检索

              可以通过指定的逻辑查询条件显示符合条件的容器。      


            03


            cAdvisor

            cAdvisor 可以对容器,主机做监控。

            • 安装

              docker run
                --volume=/:/rootfs:ro
                --volume=/var/run:/var/run:rw
                --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
              google/cadvisor:latest

              出来上述信息后,说明服务已安装并运行起来了,默认8080端口。



              • 容器监控,以 helm-test1 为例

              从截图来看,我们能清楚的看到CPU,内存,网络,文件系统的使用情况。
              • 主机监控






              从以上信息来看,提供的监控数据很丰富。


              写在最后


              Weave Scope 功能强大,对于中小企业来说绝对够用了。但 cAdvisor 为啥还要在学习呢?它的功能甚至还不如Weave Scope,但其实这两者都缺乏告警功能。也就是说要想完整的实现监控报警一条龙,还必须在借助另外一个第三方系统才有可能实现。而 cAdvisor 比 Weave Scope 好的地方是它能够将自己的监控数据导出到第三方系统使用。比如说导给 Prometheus,在结合 Grafana 做进一步的数据展示。而事实上基于 Prometheus+Grafana+cAdvisor 的监控系统在业内已经非常成熟了。这也就是为什么我们还要在去学习 cAdvisor 的原因。下一篇将继续来聊下如何使用这一套业内的最佳实践来做监控。



              如有收获,点个在看,诚挚感

              文章转载自writeline,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

              评论