sensu-server
実用的な目的のために、両方を単一のノード(ubuntu 14.04)にインストールしたいと思います。車両sensu-client
として使用するとうまく機能します。redis
ただし、トランスポートとして設定しようとするとrabbitmq
エラーが発生します。私の構成構造は次のとおりです。
├── conf.d
│ ├── api.json
│ ├── check_apache.json
│ ├── client.json
│ ├── default_handler.json
│ ├── rabbitmq.json
│ ├── redis.json
│ └── transport.json
├── config.json.example
├── dashboard.d
├── extensions
├── plugins
│ └── check-apache.rb
├── ssl
│ ├── cert.pem
│ └── key.pem
└── uchiwa.json
/etc/sensu/uchiwa.json
{
"sensu": [
{
"name": "Sensu",
"host": "localhost",
"ssl": false,
"port": 4567,
"path": "",
"timeout": 5000
}
],
"uchiwa": {
"port": 3000,
"stats": 10,
"refresh": 10000
}
}
/etc/sensu/conf.d/api.json
{
"api": {
"host": "localhost",
"port": 4567
}
}
/etc/sensu/conf.d/client.json
{
"client": {
"name": "server",
"address": "localhost",
"subscriptions": [ "ALL" ]
}
}
/etc/sensu/conf.d/rabbitmq.json
{
"rabbitmq": {
"host": "127.0.0.1",
"port": 5671,
"vhost": "/sensu",
"user": "sensu",
"password": "pass",
"heartbeat": 30,
"prefetch": 50,
"ssl": {
"cert_chain_file": "/etc/sensu/ssl/cert.pem",
"private_key_file": "/etc/sensu/ssl/key.pem"
}
}
}
/etc/sensu/conf.d/redis.json
{
"redis": {
"host": "localhost",
"port": 6379
}
}
/etc/sensu/conf.d/transport.json
{
"transport": {
"name": "rabbitmq",
"reconnect_on_error": true
}
}
私の設定はrabbitmq
ファイルredis
に入れ直すとうまくいきますが、Rabbitmqの場合はうまくいきません。transport.json
ログにはこのエラーが表示されますが、構成ファイルに指定されているユーザー名とパスワードは正しいです。
{"timestamp":"2017-03-21T18:44:28.167638+0000","level":"warn","message":"transport connection error","reason":"possible authentication failure. wrong credentials?","user":"sensu"}
ベストアンサー1
私は同じ問題があり、ほとんどの朝を問題を解決するために過ごしました。この問題は、RabbitMQ の SSL 証明書をトランスポートとして使用する場合に発生します。
1)SSLなし:次の設定ファイルconfig.json(/ etc / sensu)を介してRabbitMQ経由で転送できます。
{
"rabbitmq": {
"host": "172.19.4.81",
"port": 5671,
"vhost": "/sensu",
"user": "sensu",
"password": "secret"
},
"transport": {
"name": "rabbitmq",
"reconnect_on_error": true
},
"api": {
"host": "localhost",
"bind": "0.0.0.0",
"port": 4567
},
"checks": {
"check_http": {
"type": "metric",
"command": "/usr/lib64/nagios/plugins/check_http -I 127.0.0.1",
"interval": 40,
"standalone": true,
}
},
"client": {
"subscriptions": [
"production"
]
}
}
これは複数のファイルに分割され、/etc/sensu/conf.dに保存できます。 Sensuはconf.dとconfig.jsonのすべてのファイルをロードします。したがって、場所は重要ではありません。すべての構成が一箇所にあるので、私にとっては非常に効果的です。
2)SSLの使用:問題の正確な原因は/var/log/rabbitmqにあります。しかし私の場合
RABBITMQ ERROR LOG :
** Reason for termination =
** {function_clause,[{tls_v1,enum_to_oid,
[28],
[{file,"tls_v1.erl"},{line,404}]},
{ssl_handshake,'-dec_hello_extensions/2-blc$^1/1-0-',1,
[{file,"ssl_handshake.erl"},{line,1653}]},
{ssl_handshake,'-dec_hello_extensions/2-blc$^1/1-0-',1,
[{file,"ssl_handshake.erl"},{line,1653}]},
{ssl_handshake,dec_hello_extensions,2,
[{file,"ssl_handshake.erl"},{line,1653}]},
{tls_handshake,decode_handshake,3,
[{file,"tls_handshake.erl"},{line,182}]},
{tls_handshake,get_tls_handshake_aux,3,
[{file,"tls_handshake.erl"},{line,153}]},
{tls_connection,next_state,4,
[{file,"tls_connection.erl"},{line,454}]},
{gen_fsm,handle_msg,7,
[{file,"gen_fsm.erl"},{line,505}]}]}
Erlang >= 17.5にソリューションをアップグレード。上記のようにここそしてDevOpsポータルです。
epelリポジトリが提供するerlangのバージョンはR16B03なので、削除してアップグレードすることをお勧めします。何らかの理由でErlangソリューションリポジトリのErlangがインストールされていないため、Rabbitmqが提供するRabbitMQ用の依存関係のないErlang RPMを使用しました。アランの買戻契約sensuの説明に従ってSSLを設定します。 (SSL証明書をダウンロードし、Rabbitmqおよびsensu設定ファイルへの正確なパスを提供してください)
ㅏ。 SSL証明書ダウンロードアドレス
wget http://sensuapp.org/docs/1.0/files/sensu_ssl_tool.tar
tar -xvf sensu_ssl_tool.tar
Sensu SSLツールを使用してOpenSSL認証局と自己署名証明書を生成します。
cd sensu_ssl_tool
./ssl_certs.sh generate
b。これらの証明書をRabbitmqが見つけることができるディレクトリに保存します。
mkdir /etc/rabbitmq/ssl
cp server_key.pem /etc/rabbitmq/ssl/
cp server_cert.pem /etc/rabbitmq/ssl/
cp testca/cacert.pem /etc/rabbitmq/ssl/
RabbitMQ構成ファイル(存在しない場合)は、/ etc / rabbitmqに次のように生成できます。
/etc/rabbitmq/rabbitmq.conf
[
{rabbit, [
{ssl_listeners, [5671]},
{ssl_options, [{cacertfile,"/etc/rabbitmq/ssl/cacert.pem"},
{certfile,"/etc/rabbitmq/ssl/cert.pem"},
{keyfile,"/etc/rabbitmq/ssl/key.pem"},
{versions, ['tlsv1.2']},
{ciphers, [{rsa,aes_256_cbc,sha256}]},
{verify,verify_peer},
{fail_if_no_peer_cert,false}]}
]}
].
sensuコンポーネント(クライアント、API、サーバー)がインストールされるたびに、/ etc / sensu / sslフォルダにclient / key.pemとclient / cert.pemを含める必要があります。
cp client/key.pem client/cert.pem /etc/sensu/ssl/
これで、これらのフォルダをsensu設定ファイルに記載する必要があります。
/etc/sensu/config.json
{
"rabbitmq": {
"host": "172.19.4.81",
"port": 5672,
"vhost": "/sensu",
"user": "sensu",
"password": "secret",
"ssl": {
"cert_chain_file": "/etc/sensu/ssl/cert.pem",
"private_key_file": "/etc/sensu/ssl/key.pem"
}
},
"transport": {
"name": "rabbitmq",
"reconnect_on_error": true
},
"api": {
"host": "localhost",
"bind": "0.0.0.0",
"port": 4567
},
"client": {
"subscriptions": [
"production"
]
}
}
Rabbitmqのデフォルトポートは5671、SSLのデフォルトポートは5672です。