我正按照this帖子上的说明设置sensu-server来监控我的docker容器。
Docker守护程序在同一主机上运行,具有sensu-server和sensu-clients(localhost)。
文件check-docker,包含一个调用脚本的条目load-docker-metrics.sh
check-docker.sh
{
"checks": {
"load_docker_metrics": {
"type": "metric",
"command": "load-docker-metrics.sh",
"subscribers": [
"docker"
],
"interval": 10
}
}
}
load-docker-metrics.sh
#!/bin/bash
set -e
# Count all running containers
running_containers=$(echo -e "GET /containers/json HTTP/1.0\r\n" | nc -U /var/run/docker.sock \
| tail -n +5 \
| python -m json.tool \
| grep \"Id\" \
| wc -l)
# Count all containers
total_containers=$(echo -e "GET /containers/json?all=1 HTTP/1.0\r\n" | nc -U /var/run/docker.sock \
| tail -n +5 \
| python -m json.tool \
| grep \"Id\" \
| wc -l)
# Count all images
total_images=$(echo -e "GET /images/json HTTP/1.0\r\n" | nc -U /var/run/docker.sock \
| tail -n +5 \
| python -m json.tool \
| grep \"Id\" \
| wc -l)
echo "docker.invismac.running_containers ${running_containers}"
echo "docker.invismac.total_containers ${total_containers}"
echo "docker.invismac.total_images ${total_images}"
if [ ${running_containers} -lt 3 ]; then
exit 1;
fi
load-docker-metrics基本上是对docker api进行一些调用,并检索一些指标。如果我在我的主机(invismac)上运行此脚本,它会给我一个准确的结果:
docker.invismac.running_containers 7
docker.invismac.total_containers 8
docker.invismac.total_images 15
我正在使用此命令启动sensu-server容器:
docker run -d --name sensu-server \ -p 3000:3000 -p 4567:4567 -p 5671:5671 -p 15672:15672 \ -v $ PWD / check-docker.json:/etc/sensu/conf.d/check-docker.json \ hiroakis /搬运工-意义上的服务器
在此之后,我可以在端口3000正确访问uchima仪表板
然后我用这个命令启动客户端:
docker run --name sensu-client --privileged \ -v $ PWD / load-docker-metrics.sh:/etc/sensu/plugins/load-docker-metrics.sh \ -v /var/run/docker.sock:/var/run/docker.sock \ usman / sensu-client localhost sensu密码CLIENT-1 localhost
客户端假设与RabbitMQ通信,并在uchima中注册自己,但没有任何反应。我已进入运行客户端的容器,通过查看日志,RabbitMQ似乎出现错误:
“timestamp”:“2016-04-15T15:18:50.768594 + 0000”,“level”:“error”,“message”:“[amqp]检测到TCP连接失败”}
Rabbitmq正在运行,我可以在这里访问其终端:
仪表板为我提供了一些信息:我有2个连接,2个频道,2个用户。
另外,如果我去sensu-master容器,我可以检查rabbitmq是否有这个用户:
sensu [管理员]
拥有所有权限:
/ sensu。*。*。*
为什么sensu-client无法与RabbitMQ通信?还有其他检查我可以试试吗?我在服务器或客户端的配置上传递了一些错误的值吗?是不是可以将服务器和客户端放在同一主机中?
客户端上的Dmesg,也给了我这条消息(我不知道它是否相关)
[29252.322147] audit:type = 1400 audit(1460734746.650:975):apparmor =“DENIED”operation =“ptrace”profile =“docker-default”pid = 27531 comm =“ps”requested_mask =“trace”denied_mask = “trace”peer =“unconfined”
答案 0 :(得分:0)
我有同样的问题。通过Maria suggests指令做的所有内容与您的相似。 我解决问题的唯一方法是在具有不同IP的不同机器上启动服务器和客户端部件。
在此之后,您将在RabitMQ中建立3个连接,在sensu-client日志中没有'ampq'错误,并在Uchiwa成功添加了客户端。