Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
0
Help us understand the problem. What is going on with this article?
@bvlion

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

More than 1 year has passed since last update.

あまり日本語の記事も見当たらなかったので、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)が発生したため、運用を諦めました。
ジワジワと使用されるメモリが増えてきます。

0
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
bvlion
KotlinとVimが好きなJavaおじさんです。50歳になっても開発してたい…w

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
0
Help us understand the problem. What is going on with this article?