簡體   English   中英

設置容器化的Sensu服務器和客戶端以監視Docker時出錯

[英]Error Setting up Containerized Sensu-server and client, to monitor Docker

我正在按照這篇文章上的說明嘗試設置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
    }
  }
}

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

之后,我可以正確訪問uchima儀表板,端口3000

然后,使用以下命令啟動客戶端:

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”:“錯誤”,“ message”:“ [amqp]檢測到TCP連接失敗”}

Rabbitmq正在運行,我可以在這里訪問其端點:

http:// localhost:15672

儀表板向我提供了一些信息:我有2個連接,2個通道,2個用戶。

另外,如果我轉到sensu-master容器,則可以檢查Rabbitmq是否具有該用戶:

sensu [管理員]

具有所有權限:

/ sensu。*。*。*

有任何想法為何sensu客戶端無法與RabbitMQ通信? 我可以嘗試其他檢查嗎? 我在服務器或客戶端的配置上傳遞了一些錯誤的值嗎? 服務器和客戶端不能在同一主機中?

客戶端上的dmesg也給我此消息(我不知道它是否可能相關)

[29252.322147]審核:類型= 1400審核(1460734746.650:975):apparmor =“ DENIED” operation =“ ptrace” profile =“ docker-default” pid = 27531 comm =“ ps” required_mask =“ trace”遭到拒絕的mask =“ trace” peer =“ unconfined”

內chi儀表板

我也有同樣的問題。 通過指令完成了所有操作,看起來與您的非常相似。 解決問題的唯一方法是在具有不同IP的不同計算機上啟動服務器和客戶端部件。

此后,您將在RabitMQ中建立3個連接,在sensu-client日志中沒有“ ampq”錯誤,並在Uchiwa中成功添加了客戶端。

這里看起來如何。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM