Canalice la salida de Unicorn a Logstash-Forwarder

Canalice la salida de Unicorn a Logstash-Forwarder

Lo instalé logstash-forwarderen un droplet de DigitalOcean Ubuntu, junto con mi aplicación Rails que implemento con Capistrano. Sé logstash-forwarderque está instalado porque puedo hacerlo sudo service logstash-forwarder restart.

Lo he configurado logstash-forwarderpara leer stdincon la siguiente configuración:

{
  "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" }
    }
   ]
}

…y he configurado Rails para enviar todos los registros stdouten lugar de escribirlos en el disco. No estoy exactamente seguro de dónde logstash-forwarderse encuentra el binario e intenté decirle a Capistrano que ejecute el siguiente 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

…Pero falla con:

(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

Soy bastante nuevo en todo esto, así que no estoy seguro de dónde me estoy equivocando. Entonces, ¿cómo puedo enviar unicorn's stdouta logstash-forwarder's stdin?

Respuesta1

Por lo que parece, logstash-forwarderno está donde se esperaba en la máquina remota. Por favor, vea el mensaje de error:

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

Además, una vez que se solucione esto, no estoy seguro de que el hecho de reiniciar el demonio usando la restartopción vaya a hacer lo que espera. El unicorn_oddjob_productionproceso finalizará después de detener el unicornio actual y generar una nueva copia del mismo. Una vez que esto suceda, la tubería se cerrará y el logstash-forwarder se apagará.

Sin ser un experto en unicorn, intentaría configurar su registro en una canalización con nombre y leerlo logstash-forwarder. Por favor miraeste ejemplo. Explica cómo enviar la salida a STDOUT. Para una tubería con nombre, debería ser lo mismo.

¡Espero que esto ayude!

información relacionada