変更追跡機能を使用すると、さまざまな変更が顧客やシステムに与える影響を追跡できます。たとえば、いくつかのデプロイメントを行う場合、変更追跡機能を使用して、New Relic UI チャートで結果を監視できます。また、これらの変更の影響を理解するのに役立つ機能にもアクセスできます。
CLI または CI/CD 統合を使用して監視する変更を指定する代わりに、NerdGraph API を介して GraphQL ミューテーションとクエリを使用して同じことを行うことができます。
NerdGraph の使用に関する一般的な情報については、「NerdGraph の紹介」を参照してください。
要件
要件は次のとおりです。
- ナードグラフの要件
- ユーザーのアクセス許可: どのユーザー タイプでも NerdGraph を使用して展開マーカーを作成し、他の変更を追跡できますが、完全なプラットフォーム ユーザーのみがキュレートされた変更追跡 UI エクスペリエンスにアクセスできます。
NerdGraphエクスプローラーのフィールドを理解する
GraphQL クエリで使用するフィールドは、次の一般的なタイプに分類されます。
デプロイなどの変更を追跡するには、次を設定する必要があります。
属性 | 説明 |
---|
entityGuid
| entityGuid
値は、計測およびセットアップ プロセス中に New Relic によってシステム コンポーネントに割り当てられる一意の識別子です。New Relic エンティティとエンティティ GUID の検索の詳細については、この ガイド を参照してください。 |
version
| version 属性の値は何でもかまいませんが、ビルド プロセス中に設定されたバージョン番号を使用することをお勧めします。これを行う方法の例を確認するには、以下の Jenkins デプロイメント プラグインのドキュメント を参照してください。すでにバージョン番号を New Relic モバイル監視またはその他の方法で報告している場合は、ここで同じものを使用して、バージョンごとにデータをファセットして関連付けることができる今後の機能に備えることをお勧めします。 |
ヒント
従来の REST API から移行する場合は、appID ではなく、アプリケーションのエンティティ GUID の使用を開始する必要があります。次のクエリを使用して、NerdGraph で GUID を簡単に見つけることができます。
entitySearch(query: "domainId=INSERT_YOUR_APPID") {
追跡している変更にコンテキストを追加するために、いくつかのオプションの便利な属性を定義できます。これらの属性は、特定の変更追跡機能を有効にすることもできます。
属性 | 説明 |
---|
changelog
| changelog 属性の URL または任意の文字列を送信できます。例: changelog: "Added: /v2/deployments.rb, Removed: None" またはchangelog: "https://github.com/nodejs/node/blob/v4.2.3/CHANGELOG.md" 。 |
description
| description 属性には任意の文字列を送信できます。例: description: "Added a deployments resource to the v2 API" . description 属性は、作業の組織的またはビジネス的側面を説明する各コミットまたは展開に割り当てる ID やタグなど、内部の展開管理プロセスから体系化された情報を挿入する場所として選択できます (例: EU_MAINT_DMARK_v101 。 |
commit
| commit 属性には任意の文字列を送信できます。 commit: "r3ws4sa43f" など、デプロイまたは変更に関連付けられた commit SHA を使用することをお勧めします。
|
deepLink
| deepLink 属性の任意の URL を送信できます。New Relic でデプロイを評価する人が、Jenkins、ArgoCD、GitHub Actions など、さらなるアクションを実行できる場所にすばやく到達するのに役立つものを使用することをお勧めします。次に例を示します: deepLink: "http://localhost:8080/job/PipelineV2/configure" 。
|
deploymentType
| 展開に関連する変更をさまざまなタイプに分類できます。これらのタイプは一般的な展開手法と一致しますが、OTHER タイプもあります。タイプは次のとおりです。 |
groupId
| 1 つまたは複数のエンティティに一連の変更を加えたり、システム内の多くのエンティティにわたって多くの変更をリリースしたりする場合は、展開をグループ化することができます。関連するデプロイメントごとに同じgroupID 属性値を設定することで、New Relic インターフェイスでこれらの変更を一緒に確認したり、 groupID を使用してクエリ結果を絞り込んだりしやすくなります。 groupID は選択した任意の文字列にすることができ、 groupID を最初に使用した後も引き続き展開をグループに追加できます (この展開を数週間または数か月前に発生したものと関連付けたい場合) .
ヒントgroupId を使用して多くのデプロイメントを関連付けるだけでなく、属性を使用して長時間実行される変更を定義することもできます。たとえば、同じgroupId を持つ 2 つのデプロイは、アラートが抑制されていた期間または何らかの移行が行われていた期間を挟む可能性があります。
|
New Relic は、 user
、 timestamp
、およびdeploymentId
属性を自動的に設定します。user
とtimestamp
の値をオーバーライドとして指定できますが、一意性を確保するために常にdeploymentId
が New Relic によって生成されます。
属性 | 説明 |
---|
ユーザー | user: "datanerd@example.com" など、任意の文字列を指定できます。
|
タイムスタンプ | 記録された変更が発生した時刻、または NerdGraph 呼び出しが受信された時刻。例: timestamp: 2019-10-08T00:15:36Z . |
deploymentId
| 展開が記録されるときに生成される一意の識別子。deploymentId を設定することはできませんが、NerdGraph および NRQL クエリで使用して、特定のデプロイメントを見つけることができます。次に例を示します: deploymentId: “8a3a594c-e726-4bc2-8078-26dffec9a3d8” 。 |
ミューテーションを使用してデプロイ マーカーを作成する
デプロイなどの変更を記録するには、必須フィールドを含めてから、任意のフィールドを含めるかどうかを決定する必要があります。
デプロイ マーカーを作成するいくつかの方法を示す GraphQL ミューテーションの例を次に示します。
changeTrackingCreateDeployment(
deployment: { version: "0.0.1", entityGuid: "INSERT_YOUR_GUID" }
changeTrackingCreateDeployment(
timestamp: INSERT_MS_EPOCH_TIMESTAMP
entityGuid: "INSERT_YOUR_GUID"
description: "create a new marker"
deepLink: "example.com/path"
commit: "INSERT_A_COMMIT_HASH"
クエリの展開
GraphQL および NRQL クエリを使用して、デプロイに関連する変更に関するデータを取得できます。以下の例を参照して、いくつかのクエリを試してください。また、 NerdGraph エンティティ API チュートリアルで GraphQL クエリについて学習することもできます。
以下の例は、デプロイメントとその属性に関する情報を取得する方法を示しています。startTime
とendTime
のミリ秒単位の Unix エポック タイムスタンプとともに、 guid
に独自の値を必ず挿入してください。
entity(guid: "INSERT_YOUR_GUID_HERE") {
endTime: INSERT_MS_EPOCH_TIMESTAMP
startTime: INSERT_MS_EPOCH_TIMESTAMP
entity(guid: "INSERT_YOUR_GUID_HERE") {
endTime: INSERT_MS_EPOCH_TIMESTAMP
startTime: INSERT_MS_EPOCH_TIMESTAMP
query: "user = 'Test User'"
entity(guid: "INSERT_YOUR_GUID_HERE") {
endTime: INSERT_MS_EPOCH_TIMESTAMP
startTime: INSERT_MS_EPOCH_TIMESTAMP
query: "((user = 'Test User' AND version = '1.0') OR deploymentType in ('BLUE_GREEN', 'CANARY'))"
GraphQL を使用してマーカーを作成した後、クエリ ビルダーを使用して時系列グラフを作成し、一定期間にわたるテレメトリ シグナルの曲線を描画し、展開をマーカーとしてレンダリングできます。
いくつかのグラフを作成するためにクエリ ビルダーで実行できる NRQL の例を次に示します。
WHERE appName = 'INSERT_YOUR_APP_NAME' AND http.statusCode > 300
SINCE 1 month ago TIMESERIES
WHERE appName = 'INSERT_YOUR_APP_NAME'
SINCE 1 week ago TIMESERIES
次のステップ
追跡したい変更を指定したら、New Relic UI でそれらの変更の影響を分析できます。詳細については、 New Relic で変更を表示および分析する方法 を参照してください。