2016-05-24 7 views
0

編集:私の目標は、私のスプリングブートアプリケーションからメトリックを出して、Graphiteサーバに送信することです。そのために私はstatsdを設定しようとしています。あなたがよりクリーンなアプローチを提案できるなら、それは良いでしょう。プログラムでEC2インスタンスのデーモンとしてstatsdを実行

私はバックグラウンドプロセスとして実行するにはstatsdが必要なBeanstalkアプリケーションがあります。私は次のようebextensions設定ファイルを通じてコマンドやパッケージを指定することができました:

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 

私は新しい環境にアプリケーションを展開しようとすると、EC2のノードが完全に立ち上がることはありません。私は何が起きているのかを確認するためにログインし、/var/log/cfn-init.logには01_nodejs_install02_mkdir_statsdおよび03_fetch_statsdが正常に実行されたことがわかりました。だから私はシステムが第4のコマンド(04_run_statsd)に固執していたと思います。

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) 

私は、次のヘルプが必要:

  • 環境をインスタンス化しながら、statsdをインストールして実行するためのより良い方法がある場合は、そのアプローチの詳細を提供することができれば、私には理解されます。この現在の体系はハッキリと思われる。

  • これは私が固執する必要がある方法なら、どのようにstatsdをバックグラウンドプロセスとして実行できるように4番目のコマンドを実行できますか?

答えて

0

は、いくつかのことを試してみましたが、次のようebextensionsのconfigsが働くことがわかった:私はstatsdのconfigsに私自身のGraphiteサーバーとポートを設定することができるように、私は別のコマンド(04_change_config)を加え

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 

注意を。しかし、この変更は元の質問に対処するためには必要ありません。

実際のrunコマンドは、setsidを使用してコマンドをデーモンとして実行します。

関連する問題