我从New Relic文档中提取这个。 我正在寻找一种方法来取代在ec2实例上设置的环境variablesYourNewRelicLicense和NameOfYourServer 。
packages: yum: newrelic-sysmond: [] rpm: newrelic: http://yum.newrelic.com/pub/newrelic/el5/x86_64/newrelic-repo-5-3.noarch.rpm commands: "01": command: nrsysmond-config --set license_key=YourNewRelicLicense "02": command: echo hostname=NameOfYourServer >> /etc/newrelic/nrsysmond.cfg "03": command: /etc/init.d/newrelic-sysmond start
这可能吗?
我遇到过同样的问题。 通过一些testing,我想出了New Relic提供的更新版本,允许在弹性beanstalk中使用应用程序configuration中的环境variables。
最终版本看起来像这样
packages: yum: newrelic-sysmond: [] rpm: newrelic: http://yum.newrelic.com/pub/newrelic/el5/x86_64/newrelic-repo-5-3.noarch.rpm container_commands: "01": command: /usr/sbin/nrsysmond-config --set license_key=${APP_NR_LIC} "02": command: echo hostname=$HOSTNAME >> /etc/newrelic/nrsysmond.cfg "03": command: /etc/init.d/newrelic-sysmond start
只需将APP_NR_LICreplace为用来设置许可密钥的任何variables即可。 这对我来说是可靠的。
感谢Maciej在这里的研究。
下面是一个可用的脚本示例,它将获取环境variables并使用commands而不是container_commands 。
packages: yum: newrelic-sysmond: [] rpm: newrelic: http://yum.newrelic.com/pub/newrelic/el5/x86_64/newrelic-repo-5-3.noarch.rpm files: "/root/env.js": mode: "00755" owner: root group: root encoding: plain content: | #!/usr/bin/env node var strings = [] process.stdin.resume() process.stdin.setEncoding('utf8') process.stdin.on('data', function(data) { var json = JSON.parse(data) for (var key in json) { var val = json[key] strings.push(key + '="' + val + '"') } }) process.stdin.on('end', function() { var output = strings.join('\n') process.stdout.write(output) }) commands: "05": command: ln -sf `ls -td /opt/elasticbeanstalk/node-install/node-* | head -1`/bin/node /bin/node "08": command: sudo /etc/init.d/newrelic-sysmond stop "09": command: sudo /opt/elasticbeanstalk/bin/get-config environment | sudo /root/env.js > file "10": command: source ./file && sudo nrsysmond-config --set ssl=true license_key=$NEW_RELIC_LICENSE_KEY "12": command: sudo /etc/init.d/newrelic-sysmond start