2015-01-28 4 views
6

У меня есть стек Opsworks с слоем Node.js и Node.js. Мне интересно, знает ли кто-нибудь, где на экземпляре ubuntu 14.04LTS печатаются журналы консоли из моего приложения. Я знаю, что opsworks использует monit для запуска моего приложения, но я не уверен, где его вывод журналов.Node.js Журналы консолей OpsWorks Layer

Спасибо!

ответ

7

так досадно достаточно, конфигурация монит визуализации для Node.js приложений на Opsworks не посылает выходной сигнал в любом месте! Source for this claim. (Это меня удивило, когда я узнал об этом!)

Что я рекомендую делать, это переопределение этого шаблона - см. the OpsWorks documentation on overriding templates: по существу все, что вам нужно сделать, это скопировать вставку конфигурации Monit из Amazon, но изменить строку 2 для перенаправления вывода в файл, как я ниже так:

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

спасибо! да, это странно, что они никуда не отправляют выход. – mu888

+0

Спасибо RyanWilcox! Я добавил аналогичное переопределение в [aws-cookbook-templateplate] (https://github.com/dmarcelino/aws-cookbook-boilerplate/blob/master/opsworks_nodejs/templates/default/node_web_app.monitrc.erb#L2) , –

+0

Спасибо за это - но как вы получаете доступ к журналу и где его искать, когда вы используете SSH для экземпляра? Благодаря! – Leo

-2

Если поведение console.log не было изменено, node выведет console.log журналов на стандартный вывод приложения (stdout). Если вы используете приложение-узел в консоли или используете ssh, вы должны увидеть там журналы. В противном случае, попробуйте перенаправить стандартный вывод приложения в файл, так что вы можете увидеть его, даже если вы запустите его без консоли, таким образом: node myapp.js > logfile

Предпочтительным способом было бы пользователю Forever, чтобы убедиться, что ваше приложение постоянно, и там вы можете перенаправить вывод (как стандартный вывод и STDERR) следующим образом:

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

Я нашел журналы, выполнив следующие действия (по аналогии с @ RyanWilcox замечания):

  1. Я нашел свое «текущее» развертывание в/srv/www/{APP NAME}/curren т/
  2. список файлы, я мог видеть символьную ссылку каталога журнала (журнал должен быть слинкован к чему-то вроде/SRV/WWW/{APP NAME}/общие/журнала
  3. Я столкнулся с вопросом разрешений пытаются кд на этот каталог, так что я переключился на суперпользователь без пароля с помощью команды «Суд су», а затем я мог бы получить доступ к каталогу
  4. , наконец, в каталоге журналов, я мог видеть nodejs консольных журналов для STDERR и STDOUT

... а отец Боба - отец вашего отца.

1

Вы можете найти его в каталоге приложения, то вы найдете этот путь общий/журнал

, например: /srv/www/my_app/shared/log