Docker swarm,列出所有容器状态

Docker swarm,列出所有容器状态

我在 docker swarm 中有几个节点,但运行“docker stats”命令时,两个节点都只显示正在运行的容器

但是当 docker stats 在任何一个节点上运行时,我想列出所有节点的容器统计信息(cpu,内存)。

这可能吗?

任何见解都会有很大帮助。

答案1

没有直接的方法来检索 Swarm 中给定服务的所有容器统计信息。

如果您需要有关 CPU、内存和其他信息,您可以在每个节点上使用docker nodecutxargsssh组合:docker stats

docker node ls | cut -c 31-49 | grep -v HOSTNAME | xargs -I"SERVER" sh -c "echo SERVER; ssh SERVER /usr/local/bin/docker stats --no-stream"

上述命令将显示每个容器的 CPU、内存按节点分组,例如

节点1

b95a83497c91 awesome_brattain 0.28% 5.629MiB / 1.952GiB 0.28% 916B / 0B 147kB / 0B 9
e5c383697914 test-1951.1.kay7x1lh1twk9c0oig50sd5tr 0.00% 196KiB / 1.952GiB 0.01% 71.2kB / 0B 770kB / 0B 1

节点2

  67b2525d8ad1   foobar      0.00%     1.727MiB / 1.952GiB   0.09%   2.48kB / 0B         4.11MB / 0B         2
    4bda148efbc0 random. 0.00% 1.672MiB / 1.952GiB 0.08% 110kB / 0B 578kB / 0B 2

另请参阅。 https://stackoverflow.com/questions/45907274/docker-stats-in-swarm-mode

答案2

纯 docker 无法做到这一点,或者您可以使用 CAdvisor 监控集群中的节点并从容器中获取指标。如果您愿意,还可以使用 prometheus 和 grafana 监控这些指标。

相关内容