この投稿の指示に従って、docker コンテナーを監視するように sensu-server をセットアップしようとしています。
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/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 が実行されており、ここでそのエンドポイントにアクセスできます。
ダッシュボードにはいくつかの情報が表示されます。接続が 2 つ、チャネルが 2 つ、ユーザーが 2 人います。
また、sensu-master コンテナーに移動すると、rabbitmq に次のユーザーがいることが確認できます。
せんす【管理者】
すべての権限で:
/センス .* .* .*
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"ピア="無制限"