LoginSignup
2
0

More than 3 years have passed since last update.

Herokuで動かすJavaアプリにNew Relicを導入する

Posted at

あまり日本語の記事も見当たらなかったので、New Relicの公式ドキュメントを見ながら作業をした備忘録となります。

New Relic APMを追加

herokuコマンドでも、画面のConfigure Add-onsからでもよいので、New Relicのアドオンを追加します。
(後でNew Relicの管理画面に行くので、画面からの方が楽かも…?)

Java Agentを導入

通常であればキーはnewrelic.ymlをjarと同じディレクトリに配置して読み込ませますが、キーのgit管理を避けるためJava Agentを導入します。

アプリ名を登録

NEW_RELIC_APP_NAMEというキーでHerokuのConfig Varsにアプリ名を登録します。
settings.gradleや、pomならartifactIdに記載したものでよいと思います。

heroku config:set NEW_RELIC_APP_NAME="APP_NAME"

キーを登録

キーはNew Relicの管理画面から取得できます。
スクリーンショット 2019-09-28 18.06.59.png
APMを選択して
スクリーンショット 2019-09-28 18.09.14.png
Javaを選択するとこの画面になるので、「Reveal license key」を押下してキーを取得します。
そしてNEW_RELIC_LICENSE_KEYというキーで登録します。

heroku config:set NEW_RELIC_LICENSE_KEY="LICENSE_KEY"

Gradle設定

Mavenの場合は公式ドキュメント側に記載されている通りで、Gradleの場合は以下で動作を確認できました。

buld.gradle
dependencies {
  .....
  compileOnly 'com.newrelic.agent.java:newrelic-java:5.7.0'
}

(記載時点では5.7.0が最新でした。)

newrelic.jar導入

jarは先ほどのNew Relicの管理画面から取得してきます。
スクリーンショット 2019-09-28 18.09.14 2.png
リンクを押下するとzipが落ちてくるので、解凍して「newrelic.jar」のみプロジェクトのドコかに配置します。
(Procfileに記載するので、どこでもいいと思います。)

Procfileの変更

最後にProcfileにjavaagentオプションを追加します。
例えばSpringbootで、newrelic.jarをプロジェクト直下に配置した場合は

Procfile
web: java -jar build/libs/app-0.0.1-SNAPSHOT.jar

↓↓↓↓↓

Procfile
web: java -javaagent:newrelic.jar -jar build/libs/app-0.0.1-SNAPSHOT.jar

となります。

deploy

あとはデプロイすれば、最長でも5分後にはこのような画面となり、アプリを選択するとWeb transactions timeなどが見れるようになります。

スクリーンショット 2019-09-28 18.32.12.png

お疲れ様でした。

余談

思ったよりもメモリを使うようです。。。
私のアプリの場合はSpring Batchも動かしているからか、Error R14 (Memory quota exceeded)が発生したため、運用を諦めました。
ジワジワと使用されるメモリが増えてきます。

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0