New Relic APM: デプロイ履歴管理でパフォーマンス改善の検証を簡単に把握しよう


アドベントカレンダー17日目。New Relic APM のデプロイ履歴管理機能を紹介します。この機能は、PRO プランのみ利用できます。

この機能は、結構、Qiita とか他でのでもいろんな人が書いている(最近だとこれとか)けど、アドベントカレンダーの流れ的に一応紹介しておきます。

デプロイ履歴管理機能 とは

デプロイ履歴管理機能とは、New Relic UI 上でどの時点でデプロイが行われたのか管理する機能です。どの時点でデプロイが行われたのか?という情報については、専用の API がありますので、それを適切なタイミングで実行するように各自で設定が必要です。(設定方法は後ほど説明します)

専用の API にデプロイ記録のリクエストを送ると、New Relic 側でそれを管理し、以下のようにな画面でそれを見ることができます。

デプロイ履歴の見方

New Relic APM の左メニュー Events の Deployments を選択すると、以下のようにデプロイ履歴が見れます。

上記のリストから特定の履歴をクリックすると、以下のように、デプロイ時点を真中として、前後のパフォーマンスが簡単に分かります。以下の図では、デプロイ後であきらかに、データベースのパフォーマンスが改善されているのが分かります。

Overeview ページでも見れる

また、これらは専用のデプロイ画面にアクセスしないと見えませんが、デプロイタイミングは、Overview などページでもみることができます。これがこの機能の便利な点です。デプロイがあったことを知らないメンバーも、Overview ページだけ見てても、デプロイがあったことを知ることができるからです。

Overview ページで以下のようにデプロイタイミングを知ることができます。

その他にも、同じような時系列チャートのあるページ(Transactions, Databases, External services)でも同様にみることができます。以下は、Transactions ページの例です。右のチャートに2本青い垂直線(デプロイタイミング)があるのがわかります。

チャート上で、この青い垂直線にカーソルを併せて、クリックすると、そのデプロイのデプロイ履歴画面(上記で説明)に遷移します。

デプロイ管理機能のメリット

では、この機能を使うメリットはなんでしょうか?それは、主に以下の2つのメリットがあります。

  1. パフォーマンス改善を行った変更をデプロイした場合に、それが効果があったのかがひと目で把握できる
  2. 何か変更を行って、それをデプロイした場合、その後、急減にパフォーマンスが低下した場合に、それがデプロイによる影響なのかがすぐに分かる。

以上のように、デプロイ前後でのパフォーマンスが簡単にわかるため、デプロイがパフォーマンスに与える影響が簡単にわかります。そのため、デプロイによってパフォーマンスが急激に落ちた場合に、デプロイを元に戻し、ユーザーに大きな影響を与えることを回避できます。

デプロイ記録に仕方

デプロイ記録のリクエストは以下のように、POST リクエストを送ることで、記録されます。おそらく、本番環境などでは、デプロイスクリプトの途中に以下に以下のコマンドを組み込むことになると思います。

curl -X POST 'https://api.newrelic.com/v2/applications/${APP_ID}/deployments.json' \
     -H 'X-Api-Key:${API_KEY}' -i \
     -H 'Content-Type: application/json' \
     -d \
'{
  "deployment": {
    "revision": "REVISION",
    "changelog": "Added: /v2/deployments.rb, Removed: None",
    "description": "Added a deployments resource to the v2 API",
    "user": "[email protected]"
  }
}' 

API_KEY は、New Relic にログインし、右上のアカウント名をクリックし > Account settings > 画面左メニューの Integrations > API keys ページで、Regenerate REST API key をクリックし、キーを生成し、それを使います。

また、エージェントによっては、上記以外の方法でのデプロイ記録の方法も提供していますので、気になる方は、こちらから確認ください。

併せて読みたい

デプロイ記録に関するリクエストの送信方法やなど、詳しい情報を知りたい方は、ドキュメント:デプロイを記録する をご覧ください。

まとめ

この機能は地味に便利だと思うので、PRO アカウントをお使いの方は、是非ご利用ください。