能否在New Relic Java代理配置文件newrelic.yml中使用环境/系统变量?
能否在New Relic Java代理配置文件newrelic.yml中使用环境/系统变量?
当然可以啦!其实New Relic Java代理完全支持在newrelic.yml配置文件里直接引用环境变量和系统变量,刚好能满足你想根据环境名称动态添加标签的需求,比单纯用环境变量覆盖配置项要灵活得多。
具体怎么操作呢?给你分两种情况说:
引用环境变量
直接用${环境变量名}的格式就可以。比如你有个环境变量APP_ENV,值可能是dev、staging或者production,想把它作为标签加到配置里,就这么写:common: &default_settings labels: environment: ${APP_ENV}代理启动的时候会自动把
${APP_ENV}替换成对应的环境变量值,完美实现按环境打标签的需求。引用JVM系统变量
如果你的环境变量是通过JVM参数(比如-Dapp.environment=prod)传递的系统变量,那就用${sys:系统变量名}的格式:common: &default_settings labels: environment: ${sys:app.environment}
另外还有个实用小技巧:如果担心环境变量没设置导致配置出问题,可以加默认值,写法是${变量名:默认值}。比如:
common: &default_settings labels: environment: ${APP_ENV:development}
这样如果APP_ENV没配置,代理会自动用development作为默认的环境标签,容错性更强。
要注意的是,这种变量替换是在代理启动阶段完成的,所以只要确保启动服务时对应的环境变量或系统变量已经正确设置就行,启动后就会生效啦。
备注:内容来源于stack exchange,提问作者Rofler
相关产品推荐
相关产品推荐

