Sensu TCP接続の問題


7

仮想マシン上で実行中の新しいsensu / uchiwaスタックがあります。これは「スタンドアロン」インストールです。redis、rabbitmq、sensu-server、sensu-api、sensu-client、uchiwaはすべて同じマシンにインストールされます。client.jsonがサブスクライブする単一のチェックがあります。

要するに、何かが間違っているように見えます。uchiwaダッシュボードにログインすると、「Datacenter sensu-81が返されました:500 INTERNAL SERVER ERROR」という警告メッセージが表示されます。

sensu-clientsensu-apiおよびsensu-serverログは、これらのメッセージのみこれらのメッセージで満たされています。

==> /var/log/sensu/sensu-api.log <==
{"timestamp":"2017-05-11T21:00:34.758243+0000","level":"warn","message":"transport connection error","reason":"tcp connection lost"}
{"timestamp":"2017-05-11T21:00:34.758784+0000","level":"warn","message":"transport connection error","reason":"possible authentication failure. wrong credentials?","user":"sensu"}

==> /var/log/sensu/sensu-client.log <==
{"timestamp":"2017-05-11T21:00:35.973060+0000","level":"warn","message":"transport connection error","reason":"tcp connection lost"}
{"timestamp":"2017-05-11T21:00:35.974858+0000","level":"warn","message":"transport connection error","reason":"possible authentication failure. wrong credentials?","user":"sensu"}

==> /var/log/sensu/sensu-server.log <==
{"timestamp":"2017-05-11T21:00:37.489540+0000","level":"warn","message":"transport connection error","reason":"tcp connection lost"}
{"timestamp":"2017-05-11T21:00:37.489704+0000","level":"warn","message":"transport connection error","reason":"possible authentication failure. wrong credentials?","user":"sensu"}

トランスポート層への接続にエラーがあることを示唆しているので、transport.jsonが期待どおりに構成されていることを確認しました(それはsensuのデフォルトです)。

{
  "transport": {
    "name": "rabbitmq",
    "reconnect_on_error": true
  }
}

そこで、sensuのrabbitmq.jsonをチェックして、期待どおりに構成されていることを確認しました。(注:hostsファイルに、monitorを127.0.0.1に変換する行があります。IPv6で問題が発生する「localhost」の使用に関する問題を認識しているため、hostsファイルが「monitor」を127.0にマップしていることを再確認しました。 0.1)。これらの資格情報が機能していることをさらに確認するために、rabbitmq Webベースの管理をオンにし、これらの資格情報を使用して正常にログインしました。

{
  "rabbitmq": {
        "ssl": {
      "cert_chain_file": "/etc/sensu/ssl/cert.pem",
      "private_key_file": "/etc/sensu/ssl/key.pem"
    },
        "host": "monitor",
    "port": 5671,
    "vhost": "/sensu",
    "user": "sensu",
    "password": "sensu"
  }
}

また、rabbitmq自体の構成が期待どおりであることも確認しました(SSLがオンになっているなど)。

[
    {rabbit, [
        {ssl_listeners, [5671]},
    {ssl_options, [{cacertfile,"/etc/rabbitmq/ssl/cacert.pem"},
                   {certfile,"/etc/rabbitmq/ssl/cert.pem"},
                   {keyfile,"/etc/rabbitmq/ssl/key.pem"},
                   {verify,verify_peer},
                   {fail_if_no_peer_cert,true}]}
      ]}
].

どこでデバッグを続けるべきか途方に暮れています。

また、api.jsonとuchiwa.jsonの構成ファイルをチェックして、一致する資格情報があることを確認しました。

api.json:

{
  "api": {
    "host": "monitor",
    "port": 4567,
    "user": "admin",
    "password": "secret"
  }
}

uchiwa.json:

{
 "sensu": [
   {
       "name": "",
       "host": "monitor",
       "ssl": false,
       "port": 4567,
       "user": "admin",
       "pass": "secret",
       "path": "",
       "timeout": 5000
   }
 ],
 "uchiwa": {
   "users": [
    {
        "password": "admin",
        "username": "admin"
    }
],
   "port": 3000,
   "refresh": 5
  }
}

ボックス内から直接sensu apiと通信しようとすると、500エラーも発生します。

vagrant@vagrant-ubuntu-trusty-64:/etc/default$ curl -I http://localhost:4567/stashes -u admin
Enter host password for user 'admin':
HTTP/1.1 500 Internal Server Error
Access-Control-Allow-Credentials: true
Access-Control-Allow-Headers: Origin, X-Requested-With, Content-Type, Accept, Authorization
Access-Control-Allow-Methods: GET, POST, PUT, DELETE, OPTIONS
Access-Control-Allow-Origin: *
Connection: close
Content-length: 0

1
Sensuにも同様の問題があり、問題は些細なものであることが判明しました。sensu構成で指定したRabbitMQユーザーには、操作に必要な権限がありませんでした。
grumpyops

回答:


4

rabbitmqのログが終了し、回答が保持されました。何かがおかしいと思ったのですが、メッセージが非常にわかりにくく、実際に何が壊れているのかわかりませんでした。これは、古いバージョンのErlangによって引き起こされたSSLの問題であることがわかりました。これは、ubuntu 14.04(erlangバージョンR16B03)にaptがデフォルトでインストールしていたものです。

このamqpの問題が解決策を私に指摘しました。

https://github.com/squaremo/amqp.node/issues/224

Erlang 17.5以上にアップグレードする必要がありましたが、期待どおりに動作しました。


あなたが自分で解決し、将来の読者のために共有することを
嬉しく思い
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.