Publicamos um questão mais ampla no StackOverflow, mas acho que alguns dos problemas são provavelmente muito específicos do Ubuntu.
Estou tentando executar o logstash em uma instância aws ec2 executando o Ubuntu 16.04 usando o systemd. Executar o pipeline normalmente (via bin / logstash.bat) funciona bem e os eventos são ingeridos.
Mas quando eu tento executar o serviço no systemd eu recebo erros, dos quais o primeiro é um erro SSL:
Error: no cipher match (OpenSSL::SSL::SSLError)
[2017-02-15T13:08:44,037][ERROR][logstash.pipeline ] A plugin
had an unrecoverable error. Will restart this plugin.
Plugin:
<LogStash::Inputs::Heroku app=>"xxxxxx",
codec=><LogStash::Codecs::Multiline pattern=>"^%{TIMESTAMP_ISO8601}
%{WORD}\[\w+(\.\d+)?\]:(\s{3,}| \})", what=>"previous",
id=>"032c3b317ae49982945ec7e8fbf11224be98f237-3", enable_metric=>true,
negate=>false, charset=>"UTF-8", multiline_tag=>"multiline",
max_lines=>500, max_bytes=>10485760>,
id=>"032c3b317ae49982945ec7e8fbf11224be98f237-4", enable_metric=>true>
Eu tentei executar o serviço como root, mas o resultado é o mesmo. Só para esclarecer, isso funciona:
/usr/share/logstash/bin/logstash --path.settings /etc/logstash/
Enquanto isso não acontecer:
sudo systemctl start logstash
Esta é uma instalação limpa do logstash 5.2.1, seguindo os procedimentos sobre elásticos . O Systemd também é executado de acordo com seus procedimentos , para que ele execute o mesmo comando como eu executo manualmente. cat logstash.service
output:
[Unit]
Description=logstash
[Service]
Type=simple
User=logstash
Group=logstash
# Load env vars from /etc/default/ and /etc/sysconfig/ if they exist.
# Prefixing the path with '-' makes it try to load, but if the file doesn't
# exist, it continues onward.
EnvironmentFile=-/etc/default/logstash
EnvironmentFile=-/etc/sysconfig/logstash
ExecStart=/usr/share/logstash/bin/logstash "--path.settings" "/etc/logstash"
Restart=always
WorkingDirectory=/
Nice=19
LimitNOFILE=16384
[Install]
WantedBy=multi-user.target
(o resultado é o mesmo quando eu comento o usuário e o grupo acima)
EDITAR:
Então, parece que o SSL pode ser causado pelo outro erro que estou recebendo. Eu segui o diário do serviço usando sudo journalctl -f -u logstash &
e os logs do próprio serviço em segundo plano e recebi a seguinte saída:
ubuntu@ip-10-0-1-216:~$ sudo systemctl start logstash
ubuntu@ip-10-0-1-216:~$ Feb 15 15:38:19 ip-10-0-1-216 systemd1:
Started logstash.
Feb 15 15:38:33 ip-10-0-1-216 logstash[5119]: Sending Logstash's logs
to /var/log/logstash which is now configured via log4j2.properties
Feb 15 15:38:36 ip-10-0-1-216 logstash[5119]: Enter your Heroku
credentials.
Feb 15 15:38:36 ip-10-0-1-216 logstash[5119]: Email: Password (typing
will be hidden):
Feb 15 15:38:36 ip-10-0-1-216 logstash[5119]: Enter your Heroku
credentials.
Feb 15 15:38:36 ip-10-0-1-216 logstash[5119]: Email: Password (typing
will be hidden):
Feb 15 15:38:36 ip-10-0-1-216 logstash[5119]: Enter your Heroku
credentials.
Feb 15 15:38:36 ip-10-0-1-216 logstash[5119]: Email: Password (typing
will be hidden):
Feb 15 15:38:36 ip-10-0-1-216 logstash[5119]: Enter your Heroku
credentials.
Feb 15 15:38:36 ip-10-0-1-216 logstash[5119]: Email: Password (typing
will be hidden):
[2017-02-15T15:38:37,403][ERROR][logstash.pipeline ] A plugin
had an unrecoverable error. Will restart this plugin. Plugin:
"ros-prd",
codec=>"^%{TIMESTAMP_ISO8601}
%{WORD}\[\w+(\.\d+)?\]:(\s{3,}| \})", what=>"previous",
id=>"9fd55a86d7f6e98e9c1698eb67a66a24364ea902-3", enable_metric=>true,
negate=>false, charset=>"UTF-8", multiline_tag=>"multiline",
max_lines=>500, max_bytes=>10485760>,
id=>"9fd55a86d7f6e98e9c1698eb67a66a24364ea902-4", enable_metric=>true>
Portanto, parece que o erro SSL só é iniciado após os prompts para inserir a senha do heroku.
Então minha (s) pergunta (s):
- Parece que as credenciais do heroku estão armazenadas em ~ / home / user / .netrc. Como posso fornecer o serviço systemd com acesso a este arquivo para que ele não solicite a senha do heroku?
- Ou, se o acima não for possível, como posso passar a senha para o serviço? Existe alguma maneira de aproveitar systemd-tty-ask-password-agent talvez?