Unicorn-Ausgabe an Logstash-Forwarder weiterleiten

Unicorn-Ausgabe an Logstash-Forwarder weiterleiten

Ich habe es logstash-forwarderauf einem DigitalOcean Ubuntu-Droplet installiert, zusammen mit meiner Rails-App, die ich mit Capistrano bereitstelle. Ich weiß, logstash-forwarderdass es installiert ist, weil ich es kann sudo service logstash-forwarder restart.

Ich habe logstash-forwarderdas Lesen stdinmit 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, stdoutanstatt sie auf die Festplatte zu schreiben. Ich bin mir nicht ganz sicher, wo die logstash-forwarderBinä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 stdoutan logstash-forwarder's senden stdin?

Antwort1

So wie es aussieht, logstash-forwarderist 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 restartOption das erwartete Ergebnis bringt, wenn dies einmal behoben ist. Der unicorn_oddjob_productionProzess 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-forwarderdaraus 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!

verwandte Informationen