【问题标题】:Run statsd as a daemon on EC2 instances programatically以编程方式在 EC2 实例上将 statsd 作为守护程序运行
【发布时间】:2016-05-24 01:13:44
【问题描述】:

编辑: 我的目标是能够从我的 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_install02_mkdir_statsd03_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 可以作为后台进程运行?

【问题讨论】:

    标签: amazon-elastic-beanstalk statsd ebextensions


    【解决方案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),以便我可以在 statsd 配置中配置我自己的 Graphite 服务器和端口。不过,解决原始问题不需要此更改。

    实际的run 命令使用setsid 将命令作为守护进程运行。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-03-02
      • 2015-08-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-09
      • 2013-09-14
      相关资源
      最近更新 更多