设置Containerized Sensu-server和客户端时出错,以监控Docker

时间:2016-04-15 15:45:21

标签: docker rabbitmq containers monitoring sensu

我正按照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正在运行,我可以在这里访问其终端:

http://localhost:15672

仪表板为我提供了一些信息:我有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”

Uchima dashboard

1 个答案:

答案 0 :(得分:0)

我有同样的问题。通过Maria suggests指令做的所有内容与您的相似。 我解决问题的唯一方法是在具有不同IP的不同机器上启动服务器和客户端部件。

在此之后,您将在RabitMQ中建立3个连接,在sensu-client日志中没有'ampq'错误,并在Uchiwa成功添加了客户端。

this