0

我正在尝试按照这篇文章的说明设置 sensu-server 来监控我的 docker 容器。

Docker 守护进程运行在具有 sensu-server 和 sensu-clients (localhost) 的同一主机上。

文件 check-docker,包含一个调用脚本 load-docker-metrics.sh 的条目

检查-docker.sh

{
  "checks": {
    "load_docker_metrics": {
      "type": "metric",
      "command": "load-docker-metrics.sh",
      "subscribers": [
        "docker"
      ],
      "interval": 10
    }
  }
}

加载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/docker-sensu-server

之后,我可以在端口 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] 审核:type=1400 审核(1460734746.650:975):apparmor="DENIED" operation="ptrace" profile="docker-default" pid=27531 comm="ps" requested_mask="trace" denied_mask="trace"对等=“无限制”

内马仪表板

4

1 回答 1

0

I have the same problem. Did everything by this instruction, looks very similar like yours. The only way I solved the problem was to start the server and client parts on different machines with different IP's.

After this you will have 3 connections in RabitMQ, no 'ampq' errors in sensu-client log, and successfully added client in Uchiwa.

Here how it looks like.

于 2016-08-11T08:03:09.783 回答