我正在尝试在Swarm模式下设置Docker,并监控运行在Swarm中的所有服务/容器的资源利用率。但是,管理节点上的Docker stats似乎无法显示工作节点上的资源利用率。请问有什么方法可以解决这个问题吗?谢谢。
尝试使用Ansible:
ansible docker -a "docker stats --no-stream"
/etc/ansible/hosts
中设置您的“Docker”节点。docker stats
输出。很棒。谢谢。 - P Marecki您可以使用cAdvisor在每个节点上部署,或者在所有节点上扩展一个Swarm服务,并逐个节点收集指标。
docker run -d --name=cadvisor -p 8080:8080 --volume=/var/run:/var/run:rw --volume=/sys:/sys:ro --volume=/var/lib/docker/:/var/lib/docker:ro google/cadvisor:latest
docker node ls | grep -v Leader | grep -v Reachable | cut -c 31-47 | grep -v HOSTNAME | xargs -I"SERVER" sh -c "echo SERVER; ssh SERVER docker stats --no-stream"
这个命令的作用如下。
列出所有 Docker 集群节点:
docker node ls
过滤掉管理节点:
grep -v Leader | grep -v Reachable
选择工作节点的IP地址:
cut -c 31-47
从结果中删除列标题:
grep -v HOSTNAME
打印工作节点的IP地址并在工作节点上执行docker stats:
xargs -I"SERVER" sh -c "echo SERVER; ssh SERVER docker stats --no-stream"
尝试使用这个来检查CPU和内存使用情况
docker stats --all --format "table {{.ID}}\t{{.Name}}\t{{.CPUPerc}}\t{{.MemUsage}}"