Ich habe es logstash-forwarder
auf einem DigitalOcean Ubuntu-Droplet installiert, zusammen mit meiner Rails-App, die ich mit Capistrano bereitstelle. Ich weiß, logstash-forwarder
dass es installiert ist, weil ich es kann sudo service logstash-forwarder restart
.
Ich habe logstash-forwarder
das Lesen stdin
mit der folgenden Konfiguration konfiguriert:
{
"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" }
}
]
}
…und ich habe Rails so konfiguriert, dass alle Protokolle an gesendet werden, stdout
anstatt sie auf die Festplatte zu schreiben. Ich bin mir nicht ganz sicher, wo die logstash-forwarder
Binärdatei liegt, und habe versucht, Capistrano anzuweisen, den folgenden Befehl auszuführen:
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
…Aber es schlägt fehl mit:
(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
…
Ich bin ziemlich neu in all dem, also bin ich mir nicht sicher, was ich falsch mache. Also, wie kann ich unicorn
's stdout
an logstash-forwarder
's senden stdin
?
Antwort1
So wie es aussieht, logstash-forwarder
ist es nicht dort, wo Sie es auf dem Remote-Computer erwarten. Bitte beachten Sie die Fehlermeldung:
sudo stderr: bash: /opt/logstash-forwarder/bin/logstash-forwarder: No such file or directory
Außerdem bin ich mir nicht sicher, ob der Neustart des Daemons mit dieser restart
Option das erwartete Ergebnis bringt, wenn dies einmal behoben ist. Der unicorn_oddjob_production
Prozess wird beendet, nachdem das aktuelle Unicorn gestoppt und eine neue Kopie davon erstellt wurde. Sobald dies geschieht, wird die Pipe geschlossen und der Logstash-Forwarder heruntergefahren.
Da ich kein Experte für bin unicorn
, würde ich versuchen, die Protokollierung in einer benannten Pipe einzurichten und logstash-forwarder
daraus zu lesen. Bitte lesen Siedieses Beispiel. Es wird erklärt, wie die Ausgabe an STDOUT gesendet wird. Bei einer benannten Pipe sollte es dasselbe sein.
Hoffe das hilft!