docker Swarm 模式下的统计数据?
docker stats in Swarm mode?
我正在尝试在集群模式下设置 docker 并监控集群中所有 services/containers 运行 的资源利用率。
Docker 管理节点上的统计数据似乎没有显示工作节点上的资源利用率。
有什么办法可以做到这一点吗?
谢谢。
没有直接的方法来检索 Swarm 中给定服务的所有容器统计信息。您可能必须使用更多步骤来发现服务的所有任务、所有节点地址和每个容器 ID。 engine api docs should help you getting started. If you need some inspiration, I'd suggest you to peek into such overview dashboards like the https://github.com/charypar/swarm-dashboard or the https://github.com/dockersamples/docker-swarm-visualizer.
针对 CPU 和内存使用
试试这个
docker stats --all --format "table {{.ID}}\t{{.Name}}\t{{.CPUPerc}}\t{{.MemUsage}}"
试用 Ansible:
ansible docker -a "docker stats --no-stream"
您在 /etc/ansible/hosts
中设置 "docker" 节点的位置
您可以使用cadvisor在每个节点上部署或在所有节点上扩展一个swarm服务并逐个节点收集指标。
docker 运行 -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
您可以使用以下 bash 命令对所有工作节点执行此操作:
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
Select worker节点的ip-addresses:
cut -c 31-47
从结果中删除第 header 列:
grep -v HOSTNAME
打印worker节点的ip-address并在worker节点上执行dockerstats:
xargs -I"SERVER" sh -c "echo SERVER; ssh SERVER docker stats --no-stream"
我正在尝试在集群模式下设置 docker 并监控集群中所有 services/containers 运行 的资源利用率。
Docker 管理节点上的统计数据似乎没有显示工作节点上的资源利用率。
有什么办法可以做到这一点吗?
谢谢。
没有直接的方法来检索 Swarm 中给定服务的所有容器统计信息。您可能必须使用更多步骤来发现服务的所有任务、所有节点地址和每个容器 ID。 engine api docs should help you getting started. If you need some inspiration, I'd suggest you to peek into such overview dashboards like the https://github.com/charypar/swarm-dashboard or the https://github.com/dockersamples/docker-swarm-visualizer.
针对 CPU 和内存使用
试试这个docker stats --all --format "table {{.ID}}\t{{.Name}}\t{{.CPUPerc}}\t{{.MemUsage}}"
试用 Ansible:
ansible docker -a "docker stats --no-stream"
您在 /etc/ansible/hosts
您可以使用cadvisor在每个节点上部署或在所有节点上扩展一个swarm服务并逐个节点收集指标。
docker 运行 -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
您可以使用以下 bash 命令对所有工作节点执行此操作:
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
Select worker节点的ip-addresses:
cut -c 31-47
从结果中删除第 header 列:
grep -v HOSTNAME
打印worker节点的ip-address并在worker节点上执行dockerstats:
xargs -I"SERVER" sh -c "echo SERVER; ssh SERVER docker stats --no-stream"