参考 https://www.cnblogs.com/CloudMan6/p/7637361.html   当 Docker 部署规模逐步变大后,可视化监控容器环境的性能和健康状态会变得越来越重要。   在本章中,我们将学习几个目前比较常用的容器监控工具和方案,为以后构建自己的监控系统提供参考。   078、Docker 最常用的监控方案(2019-04-25 周四) 随笔 第1张 078、Docker 最常用的监控方案(2019-04-25 周四) 随笔 第2张   首先我们会讨论 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 自带的,有点是运行方便,很适合想快速了解容器运行状态的场景。缺点是输出的数据有限,而且都是实时数据,无法反应历史变化和趋势。
扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄