Node.js OpsWorks Layer console logs
Asked Answered
E

4

6

I have an Opsworks stack with a Node.js Layer and Node.js Application. I'm wondering if anyone knows where on an ubuntu 14.04LTS instance the console logs from my application are being printed to. I know the opsworks uses monit to run my application but I'm not sure where its outputting the logs to.

Thanks!

Elane answered 28/1, 2015 at 2:0 Comment(0)
I
7

So annoyingly enough, the Monit configuration rendered for Node.JS apps on Opsworks doesn't send the output anywhere! Source for this claim. (This surprised me when I learned about it!)

What I recommend doing is overriding that template - see the OpsWorks documentation on overriding templates: essentially all you need to do is copy paste the Monit config from Amazon, but change line 2 to redirect the output to a file, like I do below so:

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'"

Iinde answered 30/1, 2015 at 4:11 Comment(4)
thanks! yeah, thats weird that they don't send the output anywhere.Elane
Thanks RyanWilcox! I've added a similar override to aws-cookbook-boilerplate.Nephritic
Thanks for this - but how do you access the log and where to look for it when you SSH to the instance? Thanks!Grassy
@Grassy the logs will be saved at /srv/www/YOUR APP NAME/current/log/production . (Or what I do, hook that file up to be monitored by AWS CloudWatch Log - or a similar service - so you can use a web UI.Iinde
G
2

You can find it in the app directory then you will find this path shared/log

for example : /srv/www/my_app/shared/log

Giorgia answered 1/8, 2016 at 12:42 Comment(0)
H
1

I found the logs by doing the following (similar to @RyanWilcox's comment):

  1. I found my "current" deployment in /srv/www/{APP NAME}/current/
  2. listing files, I could see the log directory symlink (log should be symlinked to something like /srv/www/{APP NAME}/shared/log
  3. I ran into a permissions issue trying to cd to this directory, so I switched to the super user without a password using the command "sudo su" and then I could access the directory
  4. finally in the logs directory, I could see the nodejs console logs for STDERR and STDOUT

... and Bob's father is your father's father.

Hostel answered 3/5, 2016 at 17:5 Comment(0)
F
-2

Unless behavior of console.log was altered, node will output console.log logs to the application's standard output (stdout). If you are running your node application in a console or using ssh, you should see the logs there. Otherwise, try redirecting the stdout of your application to a file so you can see it even if you run it without a console, in this way: node myapp.js > logfile

A preferred way would be to user Forever to make sure you application is constantly on and there you can redirect your output (both stdout and stderr) as follows:

/>forever -o forever.out -e forever.err myapp.js
Freitag answered 28/1, 2015 at 4:22 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.