2015-01-28 26 views
6

Bir Node.js Layer ve Node.js Uygulaması içeren bir Opsworks yığınınım var. Bir ubuntu 14.04LTS örneğindeki uygulamanızın konsol günlüklerinin nereye yazdırıldığını bilen birinin olup olmadığını merak ediyorum. Opsworks'ün başvurumu yürütmek için monit kullandığını biliyorum, ancak günlüklerinin çıktısını aldığından emin değilim.Node.js OpsWorks Katman konsol günlükleri

Teşekkürler!

cevap

7

Yani rahatsız edici yeterli, Opsworks üzerinde node.js uygulamalar için işlenen Monit yapılandırma yerde çıktı göndermez! Source for this claim. (Bunu öğrendiğimde beni şaşırttı!)

Yapmayı önerdiğim şey bu şablonu geçersiz kılıyor - bkz. the OpsWorks documentation on overriding templates: Yapmanız gereken tek şey, Amazon'dan gelen Monit yapılandırmasını yapıştırmak, ancak çıktıyı yeniden yönlendirmek için 2. satırı değiştirmek bir dosyaya, çok aşağıda yaptığım gibi:

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

sayesinde! evet, çıktıları herhangi bir yere göndermemeleri garip. – mu888

+0

Teşekkürler RyanWilcox! [Aws-cookbook-boilerplate] 'e benzer bir geçersiz kılma ekledim (https://github.com/dmarcelino/aws-cookbook-boilerplate/blob/master/opsworks_nodejs/templates/default/node_web_app.monitrc.erb#L2) . –

+0

Bunun için teşekkürler - ancak örneğe SSH eklediğinizde günlüğe nasıl erişirsiniz? Teşekkürler! – Leo

-2

console.log davranışı değiştirilmeden, node, uygulamanın standart çıktısına (stdout) console.log günlükleri gönderir. Düğüm uygulamanızı bir konsolda veya ssh kullanarak çalıştırıyorsanız, oradaki günlükleri görmelisiniz. size uygulama emin olmak için node myapp.js > logfile

tercih edilen bir yol kullanıcısı Forever olacaktır: Eğer bu şekilde bir konsoldan olmadan çalıştırabilir bile bunu görebilirsiniz Aksi takdirde, bir dosyaya uygulamanın stdout'unu yönlendirme deneyin sürekli açıktır ve orada şöyle size çıkış (stdout ve stderr ikisi) yönlendirebilirsiniz:

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

I (@ RyanWilcox yorumuna benzer) aşağıdakileri yaparak günlükleri bulundu:

    ben benim "geçerli" kullanım imkanı buldular
  1. /srv/www/{APP NAME}/para birimi t/
  2. listeleme dosyaları, ben
  3. log/paylaşımlı/(log /srv/www/{UYGULAMA ADI} gibi bir şey sembolik olarak bağlanmış olmalıdır günlük dizini sembolik görebiliyordu ben cd çalışırken izin sorunu koştum Ben STDERR ve STDOUT için nodejs konsol günlükleri görebiliyordu, bu dizin, bu yüzden komutunu kullanarak şifre olmadan süper kullanıcıya "sudo su" anahtarlamalı ve sonra günlükleri dizininde
  4. nihayet dizini erişebilir

... ve Bob'un babası babanın babasıdır.

1

veya uygulama dizininde bulabilirsiniz o zaman örneğin

log/paylaşılan bu yolu bulacaksınız: /srv/www/my_app/shared/log

İlgili konular