Canalize a saída do Unicorn para o Logstash-Forwarder

Canalize a saída do Unicorn para o Logstash-Forwarder

Eu instalei logstash-forwarderem um droplet DigitalOcean Ubuntu, junto com meu aplicativo Rails que eu implantei com Capistrano. Eu sei logstash-forwarderque está instalado porque posso fazer isso sudo service logstash-forwarder restart.

Eu configurei logstash-forwarderpara ler stdincom a seguinte configuração:

{
  "network": {
    "servers": [ "<my logstash server>:5000" ],
    "timeout": 15,
    "ssl ca": "/etc/pki/tls/certs/logstash-forwarder.crt"
  },
  "files": [
    {
      "paths": [
        "/var/log/syslog",
        "/var/log/auth.log"
       ],
      "fields": { "type": "syslog" }
    }, {
      "paths": [ "-" ],
      "fields": { "type": "stdin" }
    }
   ]
}

…e configurei o Rails para enviar todos os logs stdoutem vez de gravar no disco. Não tenho certeza de onde logstash-forwarderfica o binário e tentei dizer ao Capistrano para executar o seguinte comando:

RBENV_ROOT=/usr/local/rbenv RBENV_VERSION=2.1.4 /usr/bin/env sudo /etc/init.d/unicorn_oddjob_production restart | /opt/logstash-forwarder/bin/logstash-forwarder

…Mas falha com:

(Backtrace restricted to imported tasks)
cap aborted!
SSHKit::Runner::ExecuteError: Exception while executing as [email protected]: sudo exit status: 127
sudo stdout: Nothing written
sudo stderr: bash: /opt/logstash-forwarder/bin/logstash-forwarder: No such file or directory

Sou muito novo em tudo isso, então não tenho certeza de onde estou errando. Então, como posso enviar unicorn's stdoutpara logstash-forwarder's stdin?

Responder1

Pelo que parece, logstash-forwardernão é onde você espera na máquina remota. Por favor, veja a mensagem de erro:

sudo stderr: bash: /opt/logstash-forwarder/bin/logstash-forwarder: No such file or directory

Além disso, uma vez resolvido isso, não tenho certeza se o fato de reiniciar o daemon usando a restartopção fará o que você espera. O unicorn_oddjob_productionprocesso morrerá após parar o unicórnio atual e gerar uma nova cópia dele. Quando isso acontecer, o pipe será fechado e o logstash-forwarder será desligado.

Sem ser um especialista em unicorn, eu tentaria configurar seu registro em um pipe nomeado e lê- logstash-forwarderlo. Por favor, vejaeste exemplo. Explica como enviar a saída para STDOUT. Para um pipe nomeado, deve ser o mesmo.

Espero que isto ajude!

informação relacionada