New Relic Code Level Metrics を Go 言語でやってみる

IDE 上で様々なツールと連携できる CodeStream に New Relic 上の Metrics を表示できるようになったのでそれを試してみました。
2022.10.11

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

IDE 上で Github や Jira と連携しコミュニケーションや New Relic Errors Inbox と連携して障害対応ができる New Relic CodeStream に新しく CodeLevelMetrics という IDE 上で New Relic APM で取得した Metrics を表示できる機能がリリースされましたので実際に Go 言語を使って試してみます。

現在は Java,Python,Ruby,.NET,Go の各種 New Relic APM Agent で対応しているようです

https://newrelic.com/jp/blog/how-to-relic/troubleshooting-settings https://newrelic.com/blog/nerdlog/codestream-code-level-metrics

やってみる

今回の成果物は皆様が体験いただけるように簡単な RESTAPI を用意して触れる Github リポジトリを用意しました。 https://github.com/yuzujoe/code-level-metrics-example

今回は以下の環境で実施しておりますのでもし環境など違う場合はご自身の環境に合わせてご利用ください。

  • M1 Max Macbook pro
  • Go 1.19.2
  • Docker 20.10.11

New Relic アカウントの登録

まず今回は New Relic アカウントがないと始まりませんので New Relic のアカウントがない場合はアカウント作成の作業からです。 New Relic は無料で登録することができて月間データ転送量 (TDP といいいます) 100GBまででしたら1ユーザー APM や Browser などの基本的な全ての機能を無料で利用できる形になっていますので無料で利用が可能です!

以下の URL から登録が可能ですので登録をしましょう。

https://newrelic.com/signup

Github リポジトリのクローン

Github リポジトリのクローンおよび fork をしていただきます。 普段 gh コマンドを利用していますので gh を利用しますが普段お使いのものをご利用ください。

Github のリポジトリはこちらです https://github.com/yuzujoe/code-level-metrics-example

gh repo clone yuzujoe/code-level-metrics-example

これで準備が整いました。

アプリケーション起動

今回は docker compose を用意していますので docker compose でアプリケーションの起動をします。 8000 番ポートで起動しており localhost:8000/example の URL でリクエストすると 200 レスポンスが返ってくるだけのアプリケーションになっています。

今回は New Relic APM を登録するために New Relic のライセンスキーが必要ですのでそちらの取得をします。 New Relic アカウントは既に登録済みかと思いますので New Relic の UI から左下のアイコンから API Keys を選択すると以下のような画面に遷移するかと思います。

今回は INGEST LICENSE のものを使いますのでそちらの右側の...アイコンをクリックしたメニューから Copy key を選択するとライセンスキーの取得ができます。

この取得したライセンスキーを環境変数として利用します

export NEW_RELIC_LICENSE_KEY=<取得したライセンスキー>

# 必要に応じて go mod download を実施
go mod download
# コンテナのビルドと起動
docker compose up --build

こちらで正常に起動されたアプリケーションが New Relic の UI に表示されている場合は成功です。 このようになっていると思います。

CodeStream セットアップ

CodeStream の連携をしていきます。 私は Jetbrains 製品を使っているので Jetbrains 前提で進めますが VSCode などでも大きくは変わりませんのでドキュメントを読み進めていただければセットアップは可能かと思います。

Plugins から CodeStream と検索に打っていただくと New Relic CodeStream が出てきますのでそのプラグインをインストールします。

プラグインを連携した状態で IDE を開くと CodeStream というのが選択できます。 そちらを選択すると Sign Up を求められますが今回は New Relic を使って Sing Up をしていきます。 ここで user API key を入力してくださいと求められますが先ほど使用していたライセンスキーと違って USER タイプの API Key を作成してもらってそのキーを使用します。

こちらでアカウントの作成が出来ましたので実際に New Relic APM と連携していきます。

New Relic CodeStream 連携

実際に CodeStream が New Relic APM を認識できるようにする必要がありますが方法として Github などのリポジトリ情報を登録してあげます。 APM の画面から登録する方法と環境変数で設定する方法がありますがどちらも一度設定してしまえばのちに設定する必要がないので好きな方法で設定していただけたらと思います。(環境変数が推奨になっています)

https://docs.newrelic.com/docs/codestream/how-use-codestream/performance-monitoring/#env-var

これでセットアップは完了しましたので実際に起動したアプリケーションにリクエストをかけてみると負荷状況やメトリクスなどが New Relic に転送されそれを IDE 上で確認できるようになります。今回は k6 という負荷テストツールを用意していますので大きめの負荷をかけて検証したい場合はそちらを使ってみることをお勧めします。

もしリクエストをかけても表示されない場合はコンテナの再起動や IDE の再起動などをお試しください。以下のような表示がされれば成功です。

これで IDE 上でメトリクスが確認できるようになりました。メトリクスの表示期間は30分固定の様で今のパフォーマンスを知るには十分な時間が確保されていますね。 まだまだ他に何かできないか使ってみて機会があればご紹介したいと思います。