Eu tive o mesmo problema e passei boa parte da minha manhã resolvendo isso. Esse problema surge ao usar o Certificado SSL para o RabbitMQ como um transporte.
1) Sem SSL: Pode-se conseguir transporte via RabbitMQ tendo o seguinte arquivo de configuração config.json (/ etc / sensu)
{
"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"
]
}
}
Isso pode ser dividido em arquivos diferentes e armazenado em /etc/sensu/conf.d. Sensu carrega todos os arquivos presentes em conf.d e config.json. Então a localização não importa. Apenas me serve como toda a configuração está em um lugar.
2) Com SSL: A causa exata do problema pode estar localizada em / var / log / rabbitmq. No entanto, para o meu caso, mostrou
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}]}]}
e a solução foi atualizada para Erlang > = 17,5. como mencionado aqui e no portal devops.
O erlang fornecido pelo repositório epel é da versão R16B03 e é melhor removê-lo e atualizá-lo. Como por algum motivo o Erlang do repositório da Erlang Solutions não foi instalado, eu usei o Erlang RPM de dependência zero para o RabbitMQ fornecido pela Rabbitmq. erlang repo e configurei o ssl como mencionado por sensu (baixe os certificados ssl, forneça o caminho exato nos arquivos de configuração rabbitmq e sensu )
a. Certificados SSL Faça o download em
wget http://sensuapp.org/docs/1.0/files/sensu_ssl_tool.tar
tar -xvf sensu_ssl_tool.tar
Gere a autoridade de certificação OpenSSL e os certificados autoassinados usando a ferramenta Sensu SSL:
cd sensu_ssl_tool
./ssl_certs.sh generate
b. Coloque esses certificados no diretório que pode ser encontrado pelo 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/
O arquivo RabbitMQ Config, se ausente, pode ser criado em / etc / rabbitmq como
/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}]}
]}
].
Agora, onde quer que os componentes sensu (client, api, server) estejam instalados, a pasta / etc / sensu / ssl deve ter o client / key.pem e client / cert.pem
cp client/key.pem client/cert.pem /etc/sensu/ssl/
Agora, essas pastas devem ser mencionadas no arquivo de configuração do 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"
]
}
}
Porta padrão para rabbitmq é 5671, enquanto que ssl é 5672.