デプロイメントを記録して監視

アプリケーションのデプロイメントはリスクの高いイベントである可能性があります。New Relicは、APMチャートに記載されたデプロイメントマーカーを使用してお客様がアプリケーションのパフォーマンスとこれらのイベントの相関性を証明できるようにしています。お客様のデプロイメントデータを管理するために、いくつかのオプションを利用できます。

デプロイメント追跡のオプション

New Relic REST API v2を使用すると、APMアプリケーションで新しいデプロイメントの記録、過去のデプロイメントリストの取得、過去のデプロイメントの削除が可能になります。さらに、一部のAPMエージェントには、デプロイメントを自動的に記録するエージェント独自の方法が備わっています。

APMによってモニターされているアプリケーションのデプロイメントをお客様のチームにリアルタイムで通知するために、New RelicでSlackインテグレーション、あるいは単純なwebhookを使用することが可能です。Slackは、選択されたSlackチャネルにフォーマットされて表示される一般的なJSONを投稿できるwebhook URLを提供します。

記録後に、New Relic UIでデプロイメントを表示できる場所がいくつかあります。次のUIでデプロイメントを表示できます。

この機能を利用できるかは、 サブスクリプションレベルによります。デプロイメントマーカーはブラウザアプリケーションにおいて利用できませんが、リリースバージョンにエラーをタグ付けする方法についてはブラウザリリースを参照してください。

お客様のチームにデプロイメントを通知

所有者(オーナー)管理者

REST APIを使用してデプロイメントが記録された後、オプションでwebhookのエンドポイントにデプロイメントを通知することが可能です。

webhookにおける宛先はお客様のSlackインスタンスにすることが可能です。webhookを使用してSlackチャネルのデプロイメント通知を設定するには:

  1. お客様のSlackアウカントに管理者としてログインした後、App directory > Manage > Appsの順に進みます。
  2. お客様のNew Relicアプリを検索し、Add configurationを選択します。
  3. Post to channelから、既存のSlackチャネルを選択するか新しいチャネルを追加し、Add configurationを選択します。
  4. オプションのリストからwebhookのURLをコピーします。
  5. rpm.newrelic.com > account dropdown > Account settings > Integrations > Deploy notifications > Webhookの順に進みます。
  6. Slack webhook URLをペーストし、保存します。
  7. オプション:テストメッセージを送信します。

webhook、Slackチャネルをはじめとしたその他のオプションを使用し、 New Relicアラートのアラート通知を設定することも可能です。

REST APIを用いたデプロイメントの記録

New Relic REST API v2を使用してデプロイメントの記録、過去のデプロイメントリストの取得、デプロイメントの削除ができます。

  • このドキュメントの例では、コマンドラインツールのcURLを使用しています。ただし、RESTリクエストには、あらゆる方法を使用できます。デプロイメントの作成、表示、削除はAPIエクスプローラーで行うこともできます。
  • JSONは、要素名とコンテンツにダブルクォート"を使用します。シングルクォート'の使用はエラーの原因になります。
POSTでデプロイメントを記録する

新規デプロイメントを記録するには、デプロイメントエンドポイントにREST APIキーを含むPOSTリクエストを送信します。ペイロードをJSON形式で添付します(文字制限とJSONパラメーターをご覧ください)。ペイロードパラメーターは、revisionを除いてすべてオプションです。

例えば:

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": "datanerd@example.com",
    "timestamp": "2019-10-08T00:15:36Z"
  }
}' 

PowerShellでデプロイメントを記録するには、デプロイメントエンドポイントにREST APIキーを含むPOSTリクエストを送信します。ペイロードをJSON形式で添付します(文字制限とJSONパラメーターをご覧ください)。ペイロードパラメーターは、revisionを除いてすべてオプションです。

この例では、PowerShellバージョン3以降を使用しています。

Invoke-WebRequest -Uri https://api.newrelic.com/v2/applications/APP_ID/deployments.json -Method POST -Headers @{'X-Api-Key'='API_KEY'} -ContentType 'application/json' -Body '{
    "deployment": {
    "revision": "REVISION",
    "changelog": "Added: /v2/deployments.rb, Removed: None",
    "description": "Added a deployments resource to the v2 API",
    "user": "datanerd@example.com",
    "timestamp": "2019-10-08T00:15:36Z"
}
}'

この例では、PowerShellバージョン2を使用しています(.NETフレームワーク3.5以降が必要)。

$encoding = [System.Text.Encoding]::GetEncoding("ASCII")
$data ='{
"deployment": {
    "revision": "REVISION",
    "changelog": "Added: /v2/deployments.rb, Removed: None",
    "description": "Added a deployments resource to the v2 API",
    "user": "datanerd@example.com",
    "timestamp": "2019-10-08T00:15:36Z"
}
}'
$postData = $encoding.GetBytes($data)
$request = [System.Net.WebRequest]::Create('https://api.newrelic.com/v2/applications/APP_ID/deployments.json')
$request.Method = 'POST'
$request.Headers.add('X-Api-Key','API_KEY')
$request.ContentType='application/json' 
$stream = $request.GetRequestStream()
$stream.Write($postData,0,$postData.Length)
$request.GetResponse()

過去に行われたアプリケーション用デプロイメントすべてのリストを取得するには、デプロイメントエンドポイントにREST API キーを含むPOSTリクエストを送信します。GETリクエストにはJSONペイロードを使用しません。

例えば:

curl -X GET "https://api.newrelic.com/v2/applications/APP_ID/deployments.json" \
     -H "X-Api-Key:API_KEY" \
     -i
GETからの出力の例

この例は、アプリケーションID9999999のためのデプロイメントのリストをリクエストします:

curl -X GET "https://api.newrelic.com/v2/applications/9999999/deployments.json" \
     -H "X-Api-Key:ABCDEFGHIJKLMNOPQRSTUVWXabcdefghijklmnopqrstuvwx" \
     -i

APIはこのデプロイメントリストを返します:

HTTP/1.1 200 OK
ETag: "ABCDEFGHIJKabcdefghijk0123456789"
Cache-Control: max-age=0, private, must-revalidate
Content-Type: application/json
{
  "deployments": [
    {
      "id": 1234567,
      "revision": "1234123412341234123412341234123412341234",
      "changelog": "Fixed the bugs for real this time",
      "description": "Example description two",
      "user": "Data Nerd",
      "timestamp": "2016-02-24T10:09:27-08:00",
      "links": {
        "application": 9999999
      }
    },
    {
      "id": 2345678,
      "revision": "7890789078907890789078907890789078907890",
      "changelog": "Think I fixed all the bugs",
      "description": null,
      "user": "Dren Atad",
      "timestamp": "2014-10-22T12:23:47-07:00",
      "links": {
        "application": 9999999
      }
    }
  ],
  "links": {
    "deployment.agent": "/v2/applications/{application_id}"
  }
}

デプロイメントを削除するには、デプロイメントエンドポイントにアドミンユーザーのAPIキーを含むDELETEリクエストを送信します。DELETEリクエストにはJSONペイロードを使用しませんが、削除するデプロイメントのIDを指定する必要があります。デプロイメントのIDを取得するには、GETリクエストを送信します。

例えば:

curl -X DELETE "https://api.newrelic.com/v2/applications/APP_ID/deployments/DEPLOYMENT_ID.json" \
     -H "X-Api-Key:ADMIN_USERS_KEY" \
     -i

JSONペイロードには、次のパラメーターを含めることができます。

UTF-8で4バイトになる文字(例:絵文字や非ラテン言語のグリフ)は、デプロイメントテキストでは使用できません。

パラメーター データタイプ 説明
revision 文字列(最大127文字) 必須:このデプロイメントのユニークID。概要ページとデプロイメントページに表示されます。任意の文字列を指定できますが、通常はバージョン番号あるいはGitのチェックサムです。
changelog 文字列(最大65535文字) オプション。このデプロイメント内の変更。(選択したデプロイメント)> Change logを選択した場合、デプロイメントページに表示されます。
description 文字列(最大65535文字) オプション。このデプロイメントの大まかな説明。個々のデプロイメントを選択した場合、概要ページとデプロイメントページに表示されます。
user 文字列(最大31文字) オプション。デプロイメントと関連付けるユーザー名。概要ページとデプロイメントページに表示されます。
timestamp ISO 8601

オプション。デプロイメントが発生すると、セカンドに移ります。指定されないと、デプロイメントはAPIコールの受け取り時に記録されることになります。タイムスタンプの要件:

  • UTC時間でなければなりません。
  • 最新のデプロイメントタイムスタンプの後でなければなりません。
  • これから先であってはなりません。
  • ISO8601のフォーマットでなければなりません。例:「2019-10-08T00:15:36Z」

New Relicエージェントを使用したデプロイメントの記録

一部のエージェントには、デプロイメントを記録する追加メソッドが備わっています。

EOL通知:Hipchat、Campfire

2019年09月09日の時点において、APMデプロイメントの通知におけるHipchatとCampfireとのインテグレーションは利用できなくなります。推奨事項:HipchatまたはCampfireをまだ利用している場合、代わりにwebhooks with Slack channelsをお使いください。詳しくは、New RelicのExplorers Hubの投稿をご覧ください。

その他のヘルプ

推奨する詳細情報: