编辑: 我的目标是能够从我的spring-boot应用程序中发出指标并将它们发送到Graphite
服务器。为此,我正在尝试设置statsd
。如果您可以建议更清洁的方法,那就更好了。
我有一个Beanstalk应用程序,需要statsd
作为后台进程运行。我可以通过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_install
,02_mkdir_statsd
和03_fetch_statsd
已成功执行。所以我猜系统卡在第四个命令(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
可以作为后台进程运行?
答案 0 :(得分:1)
尝试了一些事情,发现以下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_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
请注意,我添加了另一个命令(04_change_config
),以便我可以在Graphite
配置中配置我自己的statsd
服务器和端口。但是,这个变化不需要解决原始问题。
实际的run
命令使用setsid
将命令作为守护程序运行。