2015-01-28 10 views
6

Ich habe einen Opsworks-Stack mit einer Node.js Layer- und Node.js-Anwendung. Ich frage mich, ob jemand weiß, wo auf einer Ubuntu 14.04LTS-Instanz die Konsolenprotokolle von meiner Anwendung gedruckt werden. Ich weiß, dass die Opsworks Monit verwendet, um meine Anwendung auszuführen, aber ich bin nicht sicher, wo es die Protokolle ausgibt.Node.js OpsWorks Layer-Konsolenprotokolle

Danke!

Antwort

7

so ärgerlich genug, wird die Monit Konfiguration für Node.JS Anwendungen auf Opsworks gerendert nicht überall die Ausgabe senden! Source for this claim. (Das überraschte mich, als ich davon erfuhr!)

Was ich empfehlen zu überschreiben ist diese Vorlage - siehe the OpsWorks documentation on overriding templates: im Wesentlichen alles, was Sie tun müssen, kopieren Sie die Monit Config von Amazon kopieren, sondern ändern Sie Zeile 2, um die Ausgabe umzuleiten in eine Datei, wie ich weiter unten so tun:

start program = "/bin/bash -c 'cd <%= @deploy[:deploy_to] %>/current ; source <%= @deploy[:deploy_to] %>/shared/app.env ; /usr/bin/env PATH=$PATH:/usr/local/bin PORT=<%= @deploy[:nodejs][:port] %> NODE_PATH=<%= @deploy[:deploy_to] %>/current/node_modules:<%= @deploy[:deploy_to] %>/current /usr/local/bin/node <%= @monitored_script %> &> <%= @deploy[:deploy_to] %>/current/log/production.log'"

+0

Dank! Ja, das ist seltsam, dass sie die Ausgabe nirgends senden. – mu888

+0

Danke RyanWilcox! Ich habe eine ähnliche Überschreibung zu [aws-cookbook-boilerplate] hinzugefügt (https://github.com/dmarcelino/aws-cookbook-boilerplate/blob/master/opsworks_nodejs/templates/default/node_web_app.monitrc.erb#L2) . –

+0

Danke dafür - aber wie greifen Sie auf das Protokoll zu und wo suchen Sie es, wenn Sie SSH an die Instanz senden? Vielen Dank! – Leo

-2

Wenn das Verhalten von console.log nicht geändert wurde, gibt node Protokolle an die Standardausgabe der Anwendung aus (stdout). Wenn Sie Ihre Knotenanwendung in einer Konsole ausführen oder ssh verwenden, sollten die Protokolle dort angezeigt werden. Ansonsten versuchen, die stdout Ihrer Anwendung in eine Datei umleiten, damit Sie es selbst, wenn Sie es ohne Konsole laufen sehen können, auf diese Weise: node myapp.js > logfile

Ein bevorzugter Weg, um Benutzer sein würde Forever Sie Antrag stellen Sie sicher, ständig eingeschaltet ist und dort können Sie Ihre Ausgabe (beide stdout und stderr) umleiten wie folgt:

/>forever -o forever.out -e forever.err myapp.js 
1

fand ich die Protokolle durch die folgenden (ähnlich @ RyanWilcox Kommentar) tun:

  1. ich in meinen "aktuellen" Einsatz gefunden/srv/www/{APP NAME}/Währung t/
  2. Auflistung Dateien, ich konnte das Log-Verzeichnis Symlink sehen (log sollte zu Symlink werden so etwas wie/srv/www/{APP NAME}/shared/log
  3. Ich lief in ein Problem mit den Berechtigungen zu cd versuchen, dieses Verzeichnis, so wechselte ich die Super-User ohne Passwort des Befehl „sudo su“ verwenden und dann konnte ich das Verzeichnis, in dem Protokollverzeichnis
  4. schließlich zugreifen, ich die NodeJS Konsolenprotokolle für STDERR und STDOUT sehen konnte

... und Bobs Vater ist der Vater Ihres Vaters.

1

Sie können es in der App-Verzeichnis finden, dann werden Sie diesen Weg geteilt/log

zum Beispiel: /srv/www/my_app/shared/log

Verwandte Themen