BlueMix中的新Relic应用程序名称

时间:2015-05-29 10:38:10

标签: java cloudfoundry newrelic ibm-cloud websphere-liberty

我目前有一个New Relic服务绑定到在Bluemix中的Liberty下运行的Java应用程序。

我们正在使用蓝绿色部署方法来最小化推送新版本时的停机时间,因此,应用程序名称具有版本后缀。

有关版本的应用程序正在New Relic中报告。当我们推出一个新版本时,New Relic选择了另一个实例,即:

  • App v1
  • App v2
  • App v3

这会破坏报告时间表。如果在早上部署某些内容,我无法比较前一天和今天的数据。

我想要做的是覆盖New Relic中的应用名称,以便它只报告" App"没有版本号。这应该给我一个应用程序查看的连续时间表。 (理想情况下,我会让脚本向New Relic发出部署通知,以便它可以用标签来指示。)

使用CF添加和绑定新文件,如下所示:

cf cups newrelic -p' {" licenseKey":" xxxxx"}'

除了许可证密钥之外,似乎没有办法设置任何其他参数。

2 个答案:

答案 0 :(得分:3)

查看Liberty buildpack源代码,我看到应用程序名称作为系统属性附加到服务器启动参数。

  @java_opts << "-Dnewrelic.config.app_name=#{vcap_app_name}"

你可能尝试的一件事是推动一个具有相同系统属性的自由服务器,看看你的优先级是否优先[我不知道你有什么方法可以保证你的优先权]。从我对源代码的回顾来看,似乎没有任何内置的buildpack机制来覆盖传递给新relic代理的应用程序名称。这似乎是一个很好的增强功能,可以添加到构建包中。

另一种考虑的可能性。作为蓝/绿部署的一部分,为什么不总是部署到相同的应用程序名称(例如myapp),然后在蓝/绿部署时重新命名。例如:

cf rename myApp myApp_old_v2
cf push myApp ...     //pushing v3

在这种类型的方案中,应用程序将始终向新文件报告为myApp

答案 1 :(得分:1)

设置NEW_RELIC_APP_NAME环境变量。您可以使用cf set-env APP_NAME ENV_VAR_NAME ENV_VAR_VALUE在命令行执行此操作,其中ENV_VAR_NAME为NEW_RELIC_APP_NAME。此环境变量具有最高优先级,它将覆盖默认的New Relic app_name。