Swarm模式下的Docker统计信息?

6
我正在尝试在Swarm模式下设置Docker,并监控运行在Swarm中的所有服务/容器的资源利用率。但是,管理节点上的Docker stats似乎无法显示工作节点上的资源利用率。请问有什么方法可以解决这个问题吗?谢谢。

1
你看过 https://grafana.com/dashboards/609 吗? - Tarun Lalwani
我正在寻找类似于docker stats的工具,可以轻松地获取利用率,例如使用API,Grafana是否公开了一些API来实现这一点? - grattttt
是的,它可以。请参考http://docs.grafana.org/http_api/。 - Tarun Lalwani
这是一个设置Grafana的API。 - grattttt
5个回答

4

尝试使用Ansible:

ansible docker -a "docker stats --no-stream"

您需要在/etc/ansible/hosts中设置您的“Docker”节点。

这是问题提问者(恰当地)寻求的答案,它只需要在管理节点上使用Ansible,以自动化的方式登录到其他Docker主机,这也可能是情况所在;为每个Docker主机生成docker stats输出。很棒。谢谢。 - P Marecki

2

0

您可以使用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


0
您可以使用下面的 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

选择工作节点的IP地址:

cut -c 31-47

从结果中删除列标题:

grep -v HOSTNAME

打印工作节点的IP地址并在工作节点上执行docker stats:

xargs -I"SERVER" sh -c "echo SERVER; ssh SERVER docker stats --no-stream"

0

尝试使用这个来检查CPU和内存使用情况

docker stats --all --format "table {{.ID}}\t{{.Name}}\t{{.CPUPerc}}\t{{.MemUsage}}"

1
仅显示在运行的主机上的统计信息,没有Swarm信息。 - P Marecki

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接