2016-05-24 9 views
0

EDIT:Mein Ziel ist in der Lage sein, Messwerte aus meiner Spring-Boot-Anwendung zu emittieren und sie an einen Graphite Server gesendet werden. Dafür versuche ich statsd einzurichten. Wenn Sie einen saubereren Ansatz vorschlagen können, wäre das besser.Statsd als Daemon auf EC2-Instanzen programmgesteuert

Ich habe eine Beanstalk-Anwendung, die statsd benötigt, um als Hintergrundprozess ausgeführt werden. Ich konnte Befehle und Pakete durch ebextensions Konfigurationsdatei wie folgt an:

packages: 
    yum: 
    git: [] 

commands: 
    01_nodejs_install: 
    command: sudo yum -y install nodejs npm --enablerepo=epel 
    ignoreErrors: true 

    02_mkdir_statsd: 
    command: mkdir /home/ec2-user/statsd 

    03_fetch_statsd: 
    command: git clone https://github.com/etsy/statsd.git /home/ec2-user/statsd 
    ignoreErrors: true 

    04_run_statsd: 
    command: node stats.js exampleConfig.js 
    cwd: /home/ec2-user/statsd 

Wenn ich versuche, um die Anwendung zu einer neuen Umgebung zu implementieren, die EC2 Knoten nie voll aufkommt. Ich habe mich angemeldet, um zu überprüfen, was passieren könnte und bemerkte in /var/log/cfn-init.log, dass 01_nodejs_install, 02_mkdir_statsd und 03_fetch_statsd erfolgreich ausgeführt wurden. Also ich denke, das System wurde auf den vierten Befehl (04_run_statsd) festgefahren.

2016-05-24 01:25:09,769 [INFO] Yum installed [u'git'] 
2016-05-24 01:25:37,751 [INFO] Command 01_nodejs_install succeeded 
2016-05-24 01:25:37,755 [INFO] Command 02_mkdir_statsd succeeded 
2016-05-24 01:25:38,700 [INFO] Command 03_fetch_statsd succeeded 
cfn-init.log (END) 

Ich brauche Hilfe mit den folgenden:

  • Wenn es eine bessere Art und Weise zu installieren und statsd zu laufen, während eine Umgebung instanziiert wird, würde ich mich freuen, wenn Sie Details zu diesem Ansatz bieten könnte. Dieses aktuelle Schema scheint hacky.

  • Wenn dies der Ansatz ist, bei dem ich bleiben muss, wie kann ich den vierten Befehl ausführen, sodass statsd als Hintergrundprozess ausgeführt werden kann?

Antwort

0

versucht, ein paar Dinge und stellte fest, dass der folgende ebextensions configs arbeiten:

packages: 
    yum: 
    git: [] 

commands: 
    01_nodejs_install: 
    command: sudo yum -y install nodejs npm --enablerepo=epel 
    ignoreErrors: true 

    02_mkdir_statsd: 
    command: mkdir /home/ec2-user/statsd 

    03_fetch_statsd: 
    command: git clone https://github.com/etsy/statsd.git /home/ec2-user/statsd 
    ignoreErrors: true 

    04_change_config: 
    command: cat exampleConfig.js | sed 's/2003/<graphite server port>/g' | sed 's/graphite.example.com/my.graphite.server.hostname/g' > config.js 
    cwd: /home/ec2-user/statsd 

    05_run_statsd: 
    command: setsid node stats.js config.js >/dev/null 2>&1 < /dev/null & 
    cwd: /home/ec2-user/statsd 

Bitte beachte, dass ich einen anderen Befehl hinzugefügt (04_change_config), so dass ich meinen eigenen Graphite Server und Port in statsd configs konfigurieren kann . Diese Änderung ist jedoch nicht erforderlich, um die ursprüngliche Frage zu beantworten. Der tatsächliche run Befehl verwendet setsid, um den Befehl als Daemon auszuführen.