0

この投稿の指示に従って、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 が実行されており、ここでそのエンドポイントにアクセスできます。

http://localhost:15672

ダッシュボードにはいくつかの情報が表示されます。接続が 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"ピア="無制限"

内間ダッシュボード

4

1 に答える 1

0

私も同じ問題を抱えてる。この指示ですべてを行いましたが、あなたのものと非常によく似ています。問題を解決する唯一の方法は、異なる IP を持つ異なるマシンでサーバーとクライアントの部分を起動することでした。

この後、RabitMQ に 3 つの接続があり、sensu-client ログに「ampq」エラーはなく、Uchiwa にクライアントが正常に追加されます。

これがどのように見えるかです。

于 2016-08-11T08:03:09.783 に答える