У меня была та же проблема, и я потратил большую часть своего утра на ее решение. Эта проблема возникает при использовании SSL-сертификата для RabbitMQ в качестве транспорта.
1 )Без SSL :Можно добиться транспортировки через RabbitMQ, имея следующий файл конфигурации 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"
]
}
}
Это можно разделить на разные файлы и сохранить в /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, имеет версию R16B03, и его лучше удалить и обновить. Поскольку по какой-то причине Erlang из репозитория Erlang Solutions не был установлен, я взял Zero -зависимость Erlang RPM для RabbitMQ, предоставленную Rabbitmq. репозиторий erlang и настроил ssl, как указано sensu. (загрузите сертификаты ssl, укажите точный путь в файлах конфигурации rabbitmq и sensu)
а. SSL-сертификаты Загрузите его по адресу
wget http://sensuapp.org/docs/1.0/files/sensu_ssl_tool.tar
tar -xvf sensu_ssl_tool.tar
Создайте центр сертификации OpenSSL и самоподписанные -сертификаты с помощью инструмента Sensu SSL:
cd sensu_ssl_tool
./ssl_certs.sh generate
б. Поместите эти сертификаты в каталог, который может найти 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 (client, api, server ), в папке /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.
Если вы хотите отображать содержимое /etc/issue2
при открытии tty2, запустите systemctl edit getty@tty2
и вставьте следующее содержимое:
[Service]
ExecStart=
ExecStart=-/sbin/agetty --issue-file /etc/issue2 -o '-p -- \\u' --noclear %I $TERM
Это изменяет getty@.service
, но только для tty2. См. systemctl cat getty@
для не -модифицированного служебного файла.
В этом перетаскивании -во фрагменте первая строка ExecStart=
означает «отбросить все строки ExecStart
, которые присутствовали в исходном файле службы», а вторая строка ExecStart=
— та, которую я нашел в systemctl cat getty@
, но я добавил --issue-file /etc/issue2
, поэтому tty2 будет использовать другой файл задачи, чем другие tty.
Вы можете изменить баннер, отображаемый после входа в систему, изменив содержимое файла /etc/motd
.