1. 程式人生 > 其它 >容器的監控和日誌管理

容器的監控和日誌管理

一、Docker監控工具和使用

1、Docker自帶的監控命令

監控容器最簡單的方法是使用Docker自帶的監控命令:docker ps、docker top、docker stats。

(1)docker ps檢視容器狀態

可以使用 docker psdocker container ls 命令顯示容器列表。

# 語法
[root@hqs ~]# 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                             # go模式格式化列印容器
  -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        Dont truncate output                                                # 不截斷輸出(ID和COMMAND)
  -q, --quiet           Only display numeric IDs                                            # 只顯示容器ID
  -s, --size            Display total file sizes                                            # 顯示總檔案大小

# 案例
[root@localhost docker]# docker ps 
CONTAINER ID   IMAGE     COMMAND       CREATED         STATUS         PORTS     NAMES
4fd309be3850   ubuntu    "/bin/bash"   3 seconds ago   Up 2 seconds             busy_cray

(2)docker top檢視容器程序

檢視容器中正在執行的程序。

# 語法
[root@localhost ~]# docker top --help
Usage:  docker top CONTAINER [ps OPTIONS]
Display the running processes of a container

# 案例
[root@localhost ~]# docker top busy_cray
UID                 PID                 PPID                C                   STIME               TTY                 TIME                CMD
root                1467                1448                0                   01:33               pts/0               00:00:00            /bin/bash
[root@localhost ~]# docker run -tid --name redis-test redis
3a0d4ca05b5c3ab4b65beb333264b504247c6dd4cedee323a7ecdb41c518f6bc
[root@localhost ~]# 
[root@localhost ~]# docker top redis-test
UID                 PID                 PPID                C                   STIME               TTY                 TIME                CMD
polkitd             1655                1636                0                   01:34               pts/0               00:00:00            redis-server *:6379

# 案例:跟引數的情況
[root@localhost ~]# docker top redis-test -ef
UID                 PID                 PPID                C                   STIME               TTY                 TIME                CMD
polkitd             1655                1636                0                   01:34               pts/0               00:00:00            redis-server *:6379
[root@localhost ~]# docker top redis-test aux
USER                PID                 %CPU                %MEM                VSZ                 RSS                 TTY                 STAT                START               TIME                COMMAND
polkitd             1655                0.1                 0.4                 52812               9880                pts/0               Ssl+                01:34               0:00                redis-server *:6379

# 案例:檢視所有正在執行的容器中的程序資訊
[root@localhost ~]# for i in `docker ps | grep Up|awk '{print $1}'`;do echo \ &&docker top $i;done
UID                 PID                 PPID                C                   STIME               TTY                 TIME                CMD
polkitd             1655                1636                0                   01:34               pts/0               00:00:00            redis-server *:6379
 
UID                 PID                 PPID                C                   STIME               TTY                 TIME                CMD
root                1467                1448                0                   01:33               pts/0               00:00:00            /bin/bash
 
UID                 PID                 PPID                C                   STIME               TTY                 TIME                CMD
root                1521                1503                0                   01:33               pts/0               00:00:00            /bin/bash
 
UID                 PID                 PPID                C                   STIME               TTY                 TIME                CMD
root                1575                1556                0                   01:33               pts/0               00:00:00            /bin/bash

(3)docker stats檢視容器資源使用

第三方工具cAdvisor:用於分析正在執行的容器的資源佔用情況和效能指標,是具有圖形介面、最易於入門的Docker容器監控工具。

Weave Scope:開源的故障診斷與監控工具,除了用於Docker外,還可以用於Kubernetes叢集。Weave Scope會自動生成容器之間的關係圖,便於管理員直觀地以視覺化的方式監控容器化和微服務化的應用。Weave Scope能夠進行跨主機監控,並且消耗的資源非常少。