New Relic CodeStream を使ってエラーを迅速に改修しよう

  • URLをコピーしました!

この記事は、New Relic Advent Calendar 2023 シリーズ3の20日目の記事となります。

こんにちは、バックエンドエンジニアで PHPer の江間です。

この記事では、New Relic は導入されていて使ったことがあるけど、普段インフラをあまり触らないアプリケーションエンジニアに向けて「New Relic CodeStream」を使った開発(特にエラーの改修)について紹介します。

目次

New Relic CodeStreamとは

New Relic CodeStream は、New Relic のメトリクスやエラーなどの機能をコードレベルで確認できる IDE の拡張機能です。

現在、 JetBrains, VSCode などのほとんどの IDE で使用することができます。

New Relic
IDEにおける本番環境テレメトリとコラボレーション New Relic CodeStreamは、開発者が、本番環境テレメトリやコラボレーションツールに、IDE内で日常的にアクセスできるようにします。

導入方法(JetBrains)

まずは New Relic CodeStream を使える状態にします。ここでは普段利用している PhpStorm (JetBrains) でのインストール方法を書きますが、公式ドキュメントにはその他の IDE のインストール方法があります。

1. PhpStorm へ New Relic CodeStream プラグインをインストール

Settings > Plugins > Marketplace で New Relic CodeStream を検索し install をします。

PhpStorm (JetBrains) の設定から Plugins を開き、Marketplace のタブから検索フォームに New Relic と入力して New Relic CodeStream を表示している。
JetBrains の設定から New Relic CodeStream のプラグインを入れる事が可能

New Relic CodeStream – IntelliJ IDEs Plugin | Marketplace

2. CodeStream と New Relic を連携させる

続いて CodeStream をインストールした IDE から New Relic のデータにアクセスできるように設定します。New Relic CodeStream から New Relic と書かれたボタンをクリックします。

※ 以前は New Relic CodeStream を使い始めるには New Relic アカウントとは別に CodeStream のアカウントが必要でしたが、 2023/12/13 以降は New Relic アカウントのみでサインイン出来るようになっています。

New Relic CodeStream のプラグインをインストールした直後の IDE 上の New Relic CodeStream のタブを表示している。中央に"Sign in to CodeStream with your New Relic account"と書かれていて、その下に New Relic のロゴと文字が書かれたボタンがある。
インストール直後の IDE 上の New Relic CodeStream のタブ

ブラウザに飛ぶので、その画面からログインすると、CodeStream と New Relic のアカウントの紐づけが完了します。

これで New Relic CodeStream を使える環境が整いました!

実際の使い方の紹介

New Relic CodeStream を使っていて最も嬉しいポイントは、エラーの発見から解決までを迅速化できる事です。これについて弊社での実際の使用例を紹介します。

どんな時に有効か?

本番環境で想定外のデータが入っていた時

PHP ではdeclare(strict_types=1);をファイルの行頭に書くことで、ファイルをstrictモードに設定することができます。これは PHP が暗黙的な型変換を行わずに TypeError を返すようになります。

本番環境の(データベースに入っている)データが、開発環境やテストでは想定されなかったデータ型だった場合、それが strict モードで定義されたメソッドへ引き渡されるとエラーが発生します。

発生したエラーは Errors inbox で確認することができ、そのまま CodeStream の機能でコード上のどこでエラーが発生したか確認することができます。

ステージング環境で検証している時

弊社では本番リリースする前に必ず一度ステージング環境で動作確認を行います。そして、ステージング環境にも New Relic がインストールされているため、本番確認同様でエラーが発生した場合それを検知し、Errors inbox、CodeStream を経てコード上の問題のあるコードにたどり着くことができます。

ステージング環境でも New Relic を入れている話しについては、以下の記事でも解説しています。ぜひ見てください!

あわせて読みたい
ステージング環境にもNew Relicを入れよう! こんにちは、インフラチームテックリードの櫻井です。 今回はNew Relicを本番環境だけではなくステージング環境にも入れてみるといいことがあるよということを紹介した...

エラー検知から改修までの流れの一例

1. slackアラートで検知

本番環境ではエラーが1件でも発生すると slack にメンションが飛ぶように、 New Relic のアラートが設定されています。

slack 上で New Relic アプリが送ったメッセージが表示されている。詳細な情報はモザイクで隠れているが、メンションと New Relic への URL が記載されている。
alert 機能でエラーが発生したら slack に投稿される。モザイクで隠れているが、メンションと New Relic への URL が記載されている。

このメンションに記載された Errors inbox への URL を開きます。

2. Errors inbox で確認

Errors inbox を開くと先程発生したエラーの詳細を確認することが出来ます。

slack でアラートされたエラーの詳細を Errors inbox で表示している。詳細な情報はモザイクで見えないようになっている。
先程発生したエラーの詳細を Errors inbox で確認している

3. チケットを起票

Errors inbox の Error group summary から、今回発生したエラーに関してのチケットを起票します。

先程の Errors inbox の画面に説明が追加されている。左上部分にあるひし形模様のマーク( JIRA のロゴ)に矢印が向けられていて、それをクリックする事で、 JIRA のチケットを起票することができる事を説明されている。
New Relic の JIRA チケットを作成する画面。事前にテンプレートを設定する必要があり、テンプレート名や、Project、Issue Type、Description がモザイクで見えなくなっている。
New Relic の JIRA チケットを作成する画面。事前にテンプレートを設定する必要がある。

※実際は、より詳細で分かりやすくチケットを記述するため、起票されたチケットの内容はある程度書き換えます。

4. New Relic CodeStream を開く

続いて、IDE でエラーを確認するために「Open in IDE」を開きます。

先程の Errors inbox の画面に説明が追加されている。右側の「Open in IDE」と書かれたボタンに矢印が向けられていて、「ここをクリックして、 New Relic CodeStream を開く」という説明文が書かれている。
対象のエラーの Error Inbox の画面

すると、自動的に IDE (PhpStorm) が開き、エラーが発生した場所のファイルが開かれます。

PhpStorm の画面が表示されている。左側に CodeStream のタブが開いていて、右側にソースコードがある。ほとんどの情報はモザイクで隠されている。
PhpStorm の画面。左側に CodeStream のタブが開いていて、右側にコードがある。

5. エラーをトレースしてコードを修正する

CodeStream のタブの中の STACK TRACE から、本番環境で発生したエラーのスタックトレースを表示します。

New Relic CodeStream の Plugin のタブ内の STACK TRACE の画面。情報は殆どモザイクで隠されている。
New Relic CodeStream の Plugin のタブ内の STACK TRACE の画面

見せられないためモザイクになっているが、このスタックトレースには1行にファイル名と行数が書かれている。そして、それぞれの行はクリックすることでコードジャンプすることが可能になっている。

これを用いて、エラーの原因を迅速に解明し、エラーが発生しないように修正します。

6. コードの修正をリリースする

上記の手順で New Relic CodeStream を用いたエラー検知からコードの改修までとなります。

後はリリースフローに則って、修正した内容を本番環境に反映させるだけです。

もしまたエラーが起こってしまったら、 1 に戻ってエラー検知からコードの改修まで行います。

告知

明日開催の New Relic User Group Vol.8 New Relic本出版記念アドカレLT大会でこの記事と同様のテーマでLTします。是非是非ご参加ください!

connpass
New Relic User Group Vol.8 New Relic本 出版記念アドカレLT大会 (2023/12/21 19:00〜) # 開催概要 祝:New Relic本第二弾 出版記念アドカレLT大会! 今回のLTはQiitaアドベントカレンダーと連動した企画として、New Relic アドベントカレンダーに投稿いただ...

終わりに

以上、 New Relic CodeStream の紹介と実際に使ってみた使用例について書きました。

エラーを検知してから迅速に修正するまでのサポートツールとして非常に便利なので、ぜひ利用してみてはいかがでしょうか!

PR TIMESではインフラエンジニアのみならず、アプリケーション開発のエンジニアもサービスの品質向上のために New Relic を日々積極的に使っています。もしご興味ある方は、ぜひカジュアル面談でお話しできると嬉しいです。

あわせて読みたい
  • URLをコピーしました!

この記事を書いた人

株式会社PR TIMES 開発本部 バックエンドエンジニア

目次