【问题标题】:Error Setting up Containerized Sensu-server and client, to monitor Docker设置容器化 Sensu-server 和客户端以监控 Docker 时出错
【发布时间】:2016-04-15 15:45:20
【问题描述】:

我正在尝试按照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
    }
  }
}

加载-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" peer="unconfined"

【问题讨论】:

    标签: docker rabbitmq containers monitoring sensu


    【解决方案1】:

    我也有同样的问题。一切都按照this 指令完成,看起来和你的非常相似。 我解决问题的唯一方法是在具有不同 IP 的不同机器上启动服务器和客户端部分。

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

    Here how it looks like.

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-12-26
      • 2016-03-04
      相关资源
      最近更新 更多