我在 docker swarm 中有几个节点,但运行“docker stats”命令时,两个节点都只显示正在运行的容器
但是当 docker stats 在任何一个节点上运行时,我想列出所有节点的容器统计信息(cpu,内存)。
这可能吗?
任何见解都会有很大帮助。
答案1
没有直接的方法来检索 Swarm 中给定服务的所有容器统计信息。
如果您需要有关 CPU、内存和其他信息,您可以在每个节点上使用docker node
、cut
和xargs
ssh组合: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 监控这些指标。