为相同的rails环境分离新的应用程序名称

mat*_*ter 1 heroku newrelic

我在Heroku上为rails应用程序设置了NewRelic.我注意到NewRelic正在从rails环境定义中确定应用程序名称.这是通过newrelic.yml配置文件中的app_name变量调解的.但是,我在不同的Heroku应用程序上运行相同的rails环境,每个应用程序用于不同的开发测试或暂存目的.所以我们完全希望所有这些应用程序(尽管使用相同的rails环境)报告回相同的NewRelic'应用程序'.在NewRelic中根本没有提供任何价值 - 相反,每个Heroku应用程序应该是NewRelic中自己的'应用程序',否则我们只会为所有那些运行不同负载或测试的应用程序的不同源版本的应用程序获得一个无用的聚合模拟.

什么应该是最直接和最可靠的配置分离方式?

谢谢!

PS当然对于我们的生产环境我们确实希望将所有dynos报告为一个NewRelic应用程序.只是不适合不同的登台/测试环境.

小智 6

您可以为每个不同的登台和测试环境创建一个新的环境变量,然后将该环境变量拉入newrelic.yml登台和测试环境中的app_name.

例如,您可以创建一个名为SPECIFIC_APP的环境变量,并通过在相应的应用程序中运行这些命令,将其设置为其中一个应用程序的"staging_one"和另一个应用程序的"staging_two":

heroku config:set SPECIFIC_APP=staging_one

heroku config:set SPECIFIC_APP=staging_two

然后,您可以为每个SPECIFIC_APP环境修改New Relic app_name,如下所示:

staging:
  <<: *default_settings
  monitor_mode: true
  app_name: <%= ENV["NEW_RELIC_APP_NAME"] %> <%= ENV["SPECIFIC_APP"] %>
Run Code Online (Sandbox Code Playgroud)

您可以为每个测试应用程序执行相同的操作,在newrelic.yml结尾处向"测试"环境添加其他特定于应用程序的环境变量.

这样,根据每个应用程序的SPECIFIC_APP环境变量的设置,登台和测试RAILS_ENV中的每个应用程序都是唯一的.