Lo instalé logstash-forwarder
en un droplet de DigitalOcean Ubuntu, junto con mi aplicación Rails que implemento con Capistrano. Sé logstash-forwarder
que está instalado porque puedo hacerlo sudo service logstash-forwarder restart
.
Lo he configurado logstash-forwarder
para leer stdin
con 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 stdout
en lugar de escribirlos en el disco. No estoy exactamente seguro de dónde logstash-forwarder
se 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 stdout
a logstash-forwarder
's stdin
?
Respuesta1
Por lo que parece, logstash-forwarder
no 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 restart
opción vaya a hacer lo que espera. El unicorn_oddjob_production
proceso 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!