アプリのデプロイは危険なイベントになる可能性があります。不適切なデプロイメントが、アプリ破損の原因である場合がよくあります。New Relicを使用すると、デプロイメントを追跡できるため、デプロイをアプリのパフォーマンスに関連付けることができます。デプロイメントを追跡すると、APMチャートに表示されるデプロイメントマーカーが作成されます。
この短いビデオ(4分30秒)で、デプロイメントマーカーがどのように機能するかをご覧ください。
デプロイメント追跡のオプション New Relic REST API v2 を使用すると、APMアプリケーションで新しいデプロイメントを記録、過去のデプロイメントリストを取得、デプロイメントを削除できます。さらに、一部のAPMエージェントには、デプロイメントを自動的に記録するエージェント固有の方法があります。
New Relicでスラック インテグレーション、または単純なwebhookを使用して、APMがモニターしているアプリケーションのデプロイメントをチームにリアルタイムで通知できます。スラックは、選択されたスラックチャネルにフォーマットされて表示される汎用JSONを投稿できるwebhook URLを提供します。
記録後に、New Relic UIでデプロイメントを表示できる場所が数か所あります。以下のUIで、デプロイメントを表示 できます。
ヒント デプロイメントマーカーはブラウザアプリケーションには使用できませんが、リリースバージョンにエラーをタグ付けする方法については、ブラウザリリース を参照してください。
REST APIによるデプロイメントの記録 New Relic REST API v2を使用して、デプロイメントを記録、過去のデプロイメントのリストを取得、デプロイメントを削除できます。
このドキュメントの例では、コマンドラインツールとしてcurl
を使用しています。ただし、RESTリクエストには任意の方法を使用できます。デプロイメントの作成、表示、削除は、APIエクスプローラー でもできます。 JSONは、要素名とコンテンツにダブルクォート"
を使用します。シングルクォート'
の使用は、エラーの原因となります。 POSTでデプロイメントを記録する 新しいデプロイメントを記録するには、APIキー を含むPOST
リクエストをデプロイメントエンドポイントに送信します。ペイロードをJSON形式で添付します(文字制限とJSONパラメーター )を参照)。ペイロードのパラメーターは、revision
を除いてすべてオプションです。
たとえば、
curl -X POST "https://api.newrelic.com/v2/applications/$APP_ID /deployments.json" \
-H "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でデプロイメントを記録する PowerShellでデプロイメントを記録するには、APIキー を含むPOST
リクエストをデプロイメントエンドポイントに送信します。ペイロードをJSON形式で添付します(文字制限とJSONパラメーター )を参照)。ペイロードのパラメーターは、revision
を除いてすべてオプションです。
この例では、PowerShellバージョン3以上を使用しています。
Invoke-WebRequest -Uri https://api.newrelic.com/v2/applications/YOUR_APP_ID /deployments.json -Method POST -Headers @{'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('Api-Key','$API_KEY ')
$request.ContentType='application/json'
$stream = $request.GetRequestStream()
$stream.Write($postData,0,$postData.Length)
$request.GetResponse()
GETでデプロイメントリストを表示する アプリの過去のデプロイメントすべてのリストを取得するには、APIキー を含むGET
リクエストをデプロイメントエンドポイントに送信します。GETリクエストにはJSONペイロードは使用しません。
たとえば、
curl -X GET "https://api.newrelic.com/v2/applications/$APP_ID /deployments.json" \
-H "Api-Key:$API_KEY " \
-i
GETからのサンプル出力 この例では、アプリケーションID9999999
のデプロイメントリストを取得します。
curl -X GET "https://api.newrelic.com/v2/applications/9999999/deployments.json" \
-H "Api-Key:ABCDEFGHIJKLMNOPQRSTUVWXabcdefghijklmnopqrstuvwx" \
APIはこのデプロイメントリストを返します。
ETag: "ABCDEFGHIJKabcdefghijk0123456789"
Cache-Control: max-age=0, private, must-revalidate
Content-Type: application/json
"revision": "1234123412341234123412341234123412341234",
"changelog": "Fixed the bugs for real this time",
"description": "Example description two",
"timestamp": "2016-02-24T10:09:27-08:00",
"revision": "7890789078907890789078907890789078907890",
"changelog": "Think I fixed all the bugs",
"timestamp": "2014-10-22T12:23:47-07:00",
"deployment.agent": "/v2/applications/{application_id}"
DELETEでデプロイメントを削除する デプロイメントを削除するには、APIキー を含むDELETE
リクエストをデプロイメントエンドポイントに送信します。DELETEリクエストにはJSONペイロードを使用しませんが、削除するデプロイメントのIDを指定する必要があります。デプロイメントのIDを取得するには、GETリクエスト を送信します。
たとえば、
curl -X DELETE "https://api.newrelic.com/v2/applications/$APP_ID /deployments/$DEPLOYMENT_ID .json" \
-H "Api-Key:$API_KEY " \
-i
文字制限とJSONパラメーター JSONペイロードには、以下のパラメーターを含めることができます。
重要 絵文字や非ラテン言語のグリフなど、UTF-8で4バイト文字は、デプロイメントテキストには使用できません。
パラメーター
データ型
説明
revision
文字列、最大127文字
必須 。このデプロイメントのユニークID。概要 ページとデプロイメント ページに表示できます。任意の文字列を指定できますが、通常はバージョン番号またはGitのチェックサムです。
changelog
文字列、最大65535文字
オプション 。このデプロイメント内の変更の概要。(選択したデプロイメント)> ログ変更 を選択する場合、デプロイメント ページに表示されます。
description
文字列、最大65535文字
オプション 。このデプロイメントの大まかな説明。各デプロイメントを選択する場合は、概要 ページとデプロイメント ページに表示されます。
user
文字列、最大31文字
オプション 。デプロイメントと関連付けるユーザー名。概要 ページとデプロイメント ページに表示されます。
timestamp
ISO 8601
オプション 。デプロイメントが発生すると、セカンドに移ります。指定されないと、デプロイメントはAPIコールの受け取り時に記録されます。タイムスタンプの要件:
UTC時間である必要があります。 最新のデプロイメントタイムスタンプの後である必要があります。 将来にはできません。 ISO8601のフォーマットである必要があります(例:"2019-10-08T00:15:36Z"
)。
New Relicエージェントを使用したデプロイメントの記録 一部のエージェントには、デプロイメントを記録する追加メソッドがあります。
チームにデプロイメントを通知 REST APIを使用してデプロイメントを記録した後、オプションでデプロイメントのwebhookエンドポイントに通知できます。
webhookの宛先は、スタックインスタンスにできます。webhookを使用して、スラックチャネルのデプロイメント通知を設定する場合は、以下の手順に従います。
スラックアウカントにアドミンとしてログインしてから、アプリディレクトリ > 管理 > アプリ の順に進みます。 New Relicアプリを検索してから、設定を追加 を選択します。 チャネルへ投稿 から、既存のスラックチャネルを選択または新しいチャネルを追加してから、設定を追加 を選択します。オプションのリストから、webhookのURLをコピーします。 one.newrelic.com > (アカウントドロップダウン ) > アカウント設定 > インテグレーション > デプロイ通知 > Webhook の順に移動します。スラックwebhook URLをペーストしてから、保存します。 オプション: テストメッセージを送信します。 ヒント アラート通知 に、webhook、Slackチャンネル、その他のオプションを使用できます。