当 Docker 部署规模逐步变大后,可视化监控容器环境的性能和健康状态会变得越来越重要。
 
在本章中,我们将学习几个目前比较常用的容器监控工具和方案,为以后构建自己的监控系统提供参考。
 
 
首先我们会讨论 Docker 自带的几个监控子命令:ps、top、stats。然后是几个功能更强的开源监控工具 sysdig、Weave Scope、cAdvisor 和 Prometheus 。最后我们在对这几个工具做一个对比。
 
docker container ps
 
查看当前运行的容器,下面三个命令的效果是完全一样的,加上 -a 可以查看没有运行的容器
 
root@host1:~# docker container ls --help
Usage:    docker container ls [OPTIONS]
List containers
Aliases:
  ls, ps, list
Options:
  -a, --all             Show all containers (default shows just running)
  -f, --filter filter   Filter output based on conditions provided
      --format string   Pretty-print containers using a Go template
  -n, --last int        Show n last created containers (includes all states) (default -1)
  -l, --latest          Show the latest created container (includes all states)
      --no-trunc        Don't truncate output
  -q, --quiet           Only display numeric IDs
  -s, --size            Display total file sizes
root@host1:~# docker container ps --help
Usage:    docker container ls [OPTIONS]
List containers
Aliases:
  ls, ps, list
Options:
  -a, --all             Show all containers (default shows just running)
  -f, --filter filter   Filter output based on conditions provided
      --format string   Pretty-print containers using a Go template
  -n, --last int        Show n last created containers (includes all states) (default -1)
  -l, --latest          Show the latest created container (includes all states)
      --no-trunc        Don't truncate output
  -q, --quiet           Only display numeric IDs
  -s, --size            Display total file sizes
root@host1:~# docker ps --help
Usage:    docker ps [OPTIONS]
List containers
Options:
  -a, --all             Show all containers (default shows just running)
  -f, --filter filter   Filter output based on conditions provided
      --format string   Pretty-print containers using a Go template
  -n, --last int        Show n last created containers (includes all states) (default -1)
  -l, --latest          Show the latest created container (includes all states)
      --no-trunc        Don't truncate output
  -q, --quiet           Only display numeric IDs
  -s, --size            Display total file sizes
 
root@host1:~# docker ps
CONTAINER ID        IMAGE               COMMAND              CREATED              STATUS              PORTS               NAMES
b89ca1da78c3        busybox             "sh"                 About a minute ago   Up About a minute                       sad_sanderson
7874b10cb1d4        httpd               "httpd-foreground"   2 minutes ago        Up 2 minutes        80/tcp              keen_yalow
root@host1:~# docker container ps
CONTAINER ID        IMAGE               COMMAND              CREATED              STATUS              PORTS               NAMES
b89ca1da78c3        busybox             "sh"                 About a minute ago   Up About a minute                       sad_sanderson
7874b10cb1d4        httpd               "httpd-foreground"   2 minutes ago        Up 2 minutes        80/tcp              keen_yalow
root@host1:~# docker container ls
CONTAINER ID        IMAGE               COMMAND              CREATED              STATUS              PORTS               NAMES
b89ca1da78c3        busybox             "sh"                 About a minute ago   Up About a minute                       sad_sanderson
7874b10cb1d4        httpd               "httpd-foreground"   2 minutes ago        Up 2 minutes        80/tcp              keen_yalow
root@host1:~#
root@host1:~# docker ps -a
CONTAINER ID        IMAGE               COMMAND              CREATED              STATUS                          PORTS               NAMES
07373028ad05        busybox             "sh"                 About a minute ago   Exited (0) About a minute ago                       stoic_jepsen
b89ca1da78c3        busybox             "sh"                 About a minute ago   Up About a minute                                   sad_sanderson
7874b10cb1d4        httpd               "httpd-foreground"   2 minutes ago        Up 2 minutes                    80/tcp              keen_yalow
root@host1:~# docker container ps -a
CONTAINER ID        IMAGE               COMMAND              CREATED              STATUS                          PORTS               NAMES
07373028ad05        busybox             "sh"                 About a minute ago   Exited (0) About a minute ago                       stoic_jepsen
b89ca1da78c3        busybox             "sh"                 About a minute ago   Up About a minute                                   sad_sanderson
7874b10cb1d4        httpd               "httpd-foreground"   2 minutes ago        Up 2 minutes                    80/tcp              keen_yalow
root@host1:~# docker container ls -a
CONTAINER ID        IMAGE               COMMAND              CREATED              STATUS                          PORTS               NAMES
07373028ad05        busybox             "sh"                 About a minute ago   Exited (0) About a minute ago                       stoic_jepsen
b89ca1da78c3        busybox             "sh"                 2 minutes ago        Up 2 minutes                                        sad_sanderson
7874b10cb1d4        httpd               "httpd-foreground"   2 minutes ago        Up 2 minutes                    80/tcp              keen_yalow
 
docker container top container 
 
如果想知道某容器运行了哪些进程,可以执行 docker top
 
还可以在最后面跟上linux中ps的参数 -aux
 
root@host1:~# docker top --help
Usage:    docker top CONTAINER [ps OPTIONS]
Display the running processes of a container
 
root@host1:~# docker container top --help
Usage:    docker container top CONTAINER [ps OPTIONS]
Display the running processes of a container
 
root@host1:~# docker run -d --name lamp mattrayner/lamp
b67aded0f855a3d02c3b19539667a76ca88fe927d5ade9322d94f7cb0a0a0d82
 
root@host1:~# docker container top lamp
UID                 PID                 PPID                C                   STIME               TTY                 TIME                CMD
root                22808               22789               0                   09:26               ?                   00:00:00            /usr/bin/python /usr/bin/supervisord -n
root                23408               22808               0                   09:27               ?                   00:00:00            /bin/sh /usr/bin/mysqld_safe
root                23409               22808               0                   09:27               ?                   00:00:00            apache2 -D FOREGROUND
usera               23811               23409               0                   09:27               ?                   00:00:00            apache2 -D FOREGROUND
usera               23812               23409               0                   09:27               ?                   00:00:00            apache2 -D FOREGROUND
usera               23815               23409               0                   09:27               ?                   00:00:00            apache2 -D FOREGROUND
usera               23817               23409               0                   09:27               ?                   00:00:00            apache2 -D FOREGROUND
usera               23818               23409               0                   09:27               ?                   00:00:00            apache2 -D FOREGROUND
999                 23826               23408               1                   09:27               ?                   00:00:00            /usr/sbin/mysqld --basedir=/usr --datadir=/var/lib/mysql --plugin-dir=/usr/lib/mysql/plugin --user=mysql --log-error=/var/log/mysql/error.log --pid-file=/var/run/mysqld/mysqld.pid --socket=/var/run/mysqld/mysqld.sock --port=3306 --log-syslog=1 --log-syslog-facility=daemon --log-syslog-tag=
root@host1:~# docker top lamp
UID                 PID                 PPID                C                   STIME               TTY                 TIME                CMD
root                22808               22789               0                   09:26               ?                   00:00:00            /usr/bin/python /usr/bin/supervisord -n
root                23408               22808               0                   09:27               ?                   00:00:00            /bin/sh /usr/bin/mysqld_safe
root                23409               22808               0                   09:27               ?                   00:00:00            apache2 -D FOREGROUND
usera               23811               23409               0                   09:27               ?                   00:00:00            apache2 -D FOREGROUND
usera               23812               23409               0                   09:27               ?                   00:00:00            apache2 -D FOREGROUND
usera               23815               23409               0                   09:27               ?                   00:00:00            apache2 -D FOREGROUND
usera               23817               23409               0                   09:27               ?                   00:00:00            apache2 -D FOREGROUND
usera               23818               23409               0                   09:27               ?                   00:00:00            apache2 -D FOREGROUND
999                 23826               23408               1                   09:27               ?                   00:00:00            /usr/sbin/mysqld --basedir=/usr --datadir=/var/lib/mysql --plugin-dir=/usr/lib/mysql/plugin --user=mysql --log-error=/var/log/mysql/error.log --pid-file=/var/run/mysqld/mysqld.pid --socket=/var/run/mysqld/mysqld.sock --port=3306 --log-syslog=1 --log-syslog-facility=daemon --log-syslog-tag=
 
root@host1:~# docker top lamp -aux
USER                PID                 %CPU                %MEM                VSZ                 RSS                 TTY                 STAT                START               TIME                COMMAND
root                22808               0.1                 0.9                 51188               18704               ?                   Ss                  09:26               0:00                /usr/bin/python /usr/bin/supervisord -n
root                23408               0.0                 0.0                 4504                1632                ?                   S                   09:27               0:00                /bin/sh /usr/bin/mysqld_safe
root                23409               0.0                 1.5                 524236              32268               ?                   S                   09:27               0:00                apache2 -D FOREGROUND
usera               23811               0.0                 0.5                 524268              10496               ?                   S                   09:27               0:00                apache2 -D FOREGROUND
usera               23812               0.0                 0.5                 524268              10496               ?                   S                   09:27               0:00                apache2 -D FOREGROUND
usera               23815               0.0                 0.5                 524268              10496               ?                   S                   09:27               0:00                apache2 -D FOREGROUND
usera               23817               0.0                 0.5                 524268              10496               ?                   S                   09:27               0:00                apache2 -D FOREGROUND
usera               23818               0.0                 0.5                 524268              10496               ?                   S                   09:27               0:00                apache2 -D FOREGROUND
999                 23826               0.1                 10.1                1757648             207788              ?                   Sl                  09:27               0:00                /usr/sbin/mysqld --basedir=/usr --datadir=/var/lib/mysql --plugin-dir=/usr/lib/mysql/plugin --user=mysql --log-error=/var/log/mysql/error.log --pid-file=/var/run/mysqld/mysqld.pid --socket=/var/run/mysqld/mysqld.sock --port=3306 --log-syslog=1 --log-syslog-facility=daemon --log-syslog-tag=
 
 
docker container stats
 
该命令用于显示每个容器各种资源的使用情况,默认会显示一个实时变化的列表,展示每个容器的CPU、MEM的使用率和可用量,还有网络和IO的情况。
 
ps:容器启动时如果没有特别指定内存 limit 、stats命令会显示host的内存总量,但这并不意味着每个容器都能使用到这么多大的内存。
 
我们还可以查看指定容器的性能,只需在后面指定容器的名字即可,可以是一个,也可以是多个。
 
root@host1:~# docker stats --help
 
Usage:    docker stats [OPTIONS] [CONTAINER...]
 
Display a live stream of container(s) resource usage statistics
 
Options:
  -a, --all             Show all containers (default shows just running)
      --format string   Pretty-print images using a Go template
      --no-stream       Disable streaming stats and only pull the first result
      --no-trunc        Do not truncate output
root@host1:~# docker container stats --help
 
Usage:    docker container stats [OPTIONS] [CONTAINER...]
 
Display a live stream of container(s) resource usage statistics
 
Options:
  -a, --all             Show all containers (default shows just running)
      --format string   Pretty-print images using a Go template
      --no-stream       Disable streaming stats and only pull the first result
      --no-trunc        Do not truncate output
 
root@host1:~# docker container stats
CONTAINER ID        NAME                CPU %               MEM USAGE / LIMIT     MEM %               NET I/O             BLOCK I/O           PIDS
b67aded0f855        lamp                0.04%               206.7MiB / 1.953GiB   10.34%              648B / 0B           4.61MB / 398MB      35
3c9c0f060dd0        admiring_bohr       0.04%               200.9MiB / 1.953GiB   10.05%              648B / 0B           60.6MB / 375MB      35
b89ca1da78c3        sad_sanderson       0.00%               56KiB / 1.953GiB      0.00%               648B / 0B           0B / 0B             1
7874b10cb1d4        keen_yalow          0.00%               7.566MiB / 1.953GiB   0.38%               1.3kB / 0B          0B / 0B             82
 
root@host1:~# docker container stats lamp admiring_bohr
 
CONTAINER ID        NAME                CPU %               MEM USAGE / LIMIT     MEM %               NET I/O             BLOCK I/O           PIDS
b67aded0f855        lamp                0.04%               206.7MiB / 1.953GiB   10.34%              648B / 0B           4.61MB / 398MB      35
3c9c0f060dd0        admiring_bohr       0.04%               209.1MiB / 1.953GiB   10.45%              648B / 0B           60.6MB / 375MB      35
 
 
ps、top、stats这几个命令是docker 自带的,有点是运行方便,很适合想快速了解容器运行状态的场景。缺点是输出的数据有限,而且都是实时数据,无法反应历史变化和趋势。

078、Docker 最常用的监控方案(2019-04-25 周四)的更多相关文章

  1. 第 10 章 容器监控 - 078 - Docker 最常用的监控方案

    Docker 最常用的监控方案 当 Docker 部署规模逐步变大后,可视化监控容器环境的性能和健康状态将会变得越来越重要. Docker 自带的几个监控子命令: ps .top .stats 功能更 ...

  2. Docker 最常用的监控方案 - 每天5分钟玩转 Docker 容器技术(78)

    当 Docker 部署规模逐步变大后,可视化监控容器环境的性能和健康状态将会变得越来越重要. 在本章中,我们将讨论几个目前比较常用的容器监控工具和方案,为大家构建自己的监控系统提供参考. 首先我们会讨 ...

  3. docker stack 部署容器监控方案(cAdvisor、Prometheus、Grafana)

    =============================================== 2018/7/8_第1次修改                       ccb_warlock === ...

  4. Work 4(通知类) (2019.04.25)

  5. centos7下安装docker(17.5docker监控的总结对比)

    到现在为止,我已经学习了docker自带的监控方案:ps/ls/top/stats,以及sysdig,weave scope,cadvisor,prometheus多种监控工具,现在做个总结和比较 部 ...

  6. docker管理监控方案

    docker相关管理可分为四类:docker基础功能.docker监控.docker集群管理和docker系统认证管理.docker管理的基础或信息来源都是docker命令行或docker API. ...

  7. 斌哥的 Docker 进阶指南—监控方案的实现

    过去的一年中,关于 Docker 的话题从未断过,而如今,从尝试 Docker 到最终决定使用 Docker 的转化率依然在逐步升高,关于 Docker 的讨论更是有增无减.另一方面,大家的注意力也渐 ...

  8. 一张表搞懂各种 Docker 监控方案 - 每天5分钟玩转 Docker 容器技术(86)

    前面我们已经介绍了ps/top/stats.Sysdig.Weave Scope.cAdvisor 和 Prometheus 多种容器监控工具和方案,是时候做一个比较了.下面将从五个方面来对比它们之间 ...

  9. 086、一张表搞定各种Docker监控方案(2019-05-08 周三)

    参考https://www.cnblogs.com/CloudMan6/p/7736176.html   前面已经学习了  ps/top/stats.Sysdig.Weave Scope .cAdvi ...

随机推荐

  1. 在cmd里,java运行jar包中指定Class的命令

    java -classpath ****.jar ****.****.className

  2. 获取OlapConnection连接

    目录: 1.获取org.olap4j.OlapConnection对象 2.获取mondrian.olap.Connection对象 一.org.olap4j.OlapConnection对象 说明: ...

  3. 金蝶K3外购入库单单价取数规则调整

    涉及界面: 问题:财务抱怨外购入库单价格取错,单价多除了一次税率 例如,采购单里面注明了价格是不含税15.3256 结果在外购入库单里面,又自做主张除以税率17%,把采购成本搞成了13.0988, 咨 ...

  4. 360 随身 WiFi3 在 Ubuntu 14.04 下的使用

    由于 360 随身 WiFi3 采用 Mediaek 代号 0e8d:760c 的芯片,目前没有官方或第三方 Linux 驱动,所以造成 Linux 用户的诸多困扰. 本文给出一个迂回的解决方案:在 ...

  5. day11(函数参数,函数对象,打散机制,函数嵌套调用)

    一,复习 # 什么是函数:具体特定功能的代码块 - 特定功能代码块作为一个整体,并给该整体命名,就是函数 # 函数的优点: # 1.减少代码的冗余 # 2.结构清晰,可读性强 # 3.具有复用性,开发 ...

  6. 制作自己cocoapods库

    https://www.cnblogs.com/czc-wjm/p/5958103.html 今天来讲一下cocoapods制作,网上教程很多,就不再讲理论,直接操作: 1.创建仓库: 2.将仓库克隆 ...

  7. JS获取登录者IP和登录城市

    登录城市:<sp class="cy"></sp><br /> 管理员个数:<font color=</strong>< ...

  8. 【刷题】【LeetCode】总

    参考资料 用动画的形式呈现解LeetCode题目的思路 目录: 000-十大经典排序算法 001-两数之和-easy 暴力法(遍历):两遍哈希表:一遍哈希表 002- 003- 004- 005- 0 ...

  9. vue 中 assets 和 static 的区别

    Vue中的静态资源管理(src下的assets和static文件夹的区别)

  10. ABP实践(1)-通过官方模板创建ASP.NET Core 2.x版本+vue.js单页面模板-启动运行项目

    1,打开ABP官网下载模板页面 2,根据下图选择对应的选项及输入项目名 注:上图验证码下方的选择框打钩表示下载最新稳定版,不打钩表示下载最新版本(有可能是预览版) 3,解压下载的压缩包 解压之后是个a ...