New Relic Notebooks APIを使用すると、ブロックの全コンテンツ(NRQLクエリ、テキスト)を含め、ノートブックをプログラムで作成、読み取り、更新、削除できます。ノートブックはバージョン管理されたblobとして保存されます。つまり、保存するたびに、後で取得できる新しい不変のリビジョンが作成されます。
このAPIを使用して次のことを行います:
インシデントテンプレート、ランブック、またはCI/CDパイプラインからのノートブック作成を自動化する バージョン管理または外部オーサリングツールからノートブックのコンテンツを同期する 調査中にノートブックにプログラムでデータを入力するインテグレーションを構築する 重要 Notebooks 複数のAPIを使用
NotebooksAPIサーフェスは2つのシステムに分割されています:
Blob Storage API はノートブックのコンテンツ(ブロック、バージョン履歴)を処理します
NerdGraph は、エンティティレベルの操作(リスト、名前変更、タグ、組織メタデータ)を処理します
この分離は意図的なものです。Blob Storage APIはファイルコンテンツの転送とバージョン管理に最適化されています;NerdGraphは構造化されたエンティティクエリとミューテーションに最適化されています。
前提条件 認証 すべてのNotebooks API requests New RelicユーザーAPIキーを使用した認証が必要です。
APIキーを生成する:
one.newrelic.com にアクセスします右上隅の自分の名前をクリックします。 選択する API Keys User キーを作成します (Browserまたはライセンスキーではありません)リクエストヘッダーに含める:
$ Api-Key: NRAK-YOUR- USER -API-KEY
ヒント Blob Storage APIはログインコンテキストもサポートしているため、New Relicユーザーとして認証されたUIからAPIを呼び出す場合、Api-Keyヘッダーは必要ありません。
ベースエンドポイント https://blob-api.service.newrelic.com/v1/e
EU地域のアカウントの場合は、以下を使用してください。
https://blob-api.service.eu.newrelic.com/v1/e
ノートブックのコンテンツ操作 ノートブックを作成する 初期のblobコンテンツを持つ新しいノートブックエンティティを作成します。
終点 POST /v1/e/organizations/{orgId}/Notebooks
リクエストパラメータ [#create-params] パラメータ
場所
データ型
説明
orgId
パス
弦
必須。お客様の
New Relic
組織ID。
Api-Key
ヘッダー
弦
必須。お使いのユーザーAPIキー。
Content-Type
ヘッダー
弦
必須。
application/json
である必要があります。
NewRelic-Entity
ヘッダー
JSON文字列
必須。ノートブックのエンティティメタデータを含むJSONオブジェクト(以下を参照)。
リクエストボディ
体
JSON
必須。JSON形式のノートブックのコンテンツ(バージョン+ブロック)。
NewRelic-Entity [#create-entity-header]フィールド
データ型
説明
name
弦
必須。ノートブック名。組織のスコープ内で一意である必要があります。
ノートブックの本文の形式 [#create-body-format] フィールド
データ型
説明
version
弦
ノートブックペイロードのスキーマバージョン。
"1"
を使用します。
blocks
配列
ノートブックブロックの順序付きリスト(
NRQL
、テキストなど)。空の配列は空のノートブックを作成します。
宣言型UIコンテンツの例 [#create-declarative-ui] 以下の例では、宣言型UIフォーマットを使用してノートブックウィジェットのコンテンツを構成する方法を示します。
Markdownウィジェット
viz.markdownを使用して、チャートの横に静的テキスト、ラベル、または閾値の凡例をレンダリングします:
"text" : "# My dashboard\n\n### Cost thresholds (monthly)\n- $0 – $200 → Good\n- $200 – $500 → Warning\n- $500+ → Critical"
NRQLクエリを使用したビルボードウィジェット
viz.billboardを使用して、オプションの色分けされた閾値を持つ単一のメトリクス値を表示します:
"title" : "Total usage this month"
"query" : "FROM Transaction SELECT count(*) SINCE 1 month ago" ,
"thresholdsWithSeriesOverrides" : {
{ "to" : 200 , "severity" : "success" } ,
{ "from" : 200 , "to" : 500 , "severity" : "warning" } ,
{ "from" : 500 , "severity" : "critical" }
"facet" : { "showOtherSeries" : false } ,
"platformOptions" : { "ignoreTimeRange" : false } ,
"chartStyles" : { "lineInterpolation" : "linear" }
サンプルリクエスト [#create-sample-request] > https://blob-api.service.newrelic.com/v1/e/organizations/YOUR_ORG_ID/Notebooks \
> -H 'Api-Key: NRAK-YOUR-API-KEY' \
> -H 'Content-Type: application/json' \
> -H 'NewRelic-Entity: {"name": "My awesome notebook"}' \
サンプル回答 [#create-sample-response] "entityGuid" : "<YOUR_ENTITY_GUID>" ,
"blobId" : "<YOUR_BLOB_ID>" ,
"entityGuid" : "<YOUR_ENTITY_GUID>" ,
重要 レスポンスからentityGuidを保存します。ノートブックの読み取り、更新、削除に必要になります。
ノートブックのコンテンツを読み取る ノートブックの最新コンテンツを取得します。
終点 GET /v1/e/organizations/{orgId}/Notebooks/{entityGuid}
リクエストパラメータ [#read-params] パラメータ
場所
データ型
それは必須ですか?
説明
orgId
パス
弦
はい
New Relic
の組織ID。
entityGuid
パス
弦
はい
ノートブックのエンティティGUID。
Api-Key
ヘッダー
弦
はい
ユーザーAPIキー。
サンプルリクエスト [#read-sample-request] > https://blob-api.service.newrelic.com/v1/e/organizations/YOUR_ORG_ID/Notebooks/YOUR_ENTITY_GUID \
> -H 'Api-Key: NRAK-YOUR-API-KEY'
サンプル回答 [#read-sample-response] "query" : "FROM PageView SELECT count(*) SINCE 3 days ago" ,
ノートブックのコンテンツを更新 コンテンツを上書きすることで、既存のノートブックの新しいバージョンを作成します。以前のバージョンは最大1日間保持されます(以前のバージョンの取得 を参照)。
終点 POST /v1/e/organizations/{orgId}/Notebooks/{entityGuid}
リクエストパラメータ [#update-params] パラメータ
場所
データ型
それは必須ですか?
説明
orgId
パス
弦
はい
New Relic
の組織ID。
entityGuid
パス
弦
はい
ノートブックのエンティティGUID。
Api-Key
ヘッダー
弦
はい
ユーザーAPIキー。
Content-Type
ヘッダー
弦
はい
application/json
である必要があります。
リクエストボディ
体
JSON
はい
更新されたノートブックのコンテンツ。
サンプルリクエスト [#update-sample-request] > https://blob-api.service.newrelic.com/v1/e/organizations/YOUR_ORG_ID/Notebooks/YOUR_ENTITY_GUID \
> -H 'Api-Key: NRAK-YOUR-API-KEY' \
> -H 'Content-Type: application/json' \
$ "type": "visualization",
$ "query": "FROM PageView SELECT count(*) SINCE 2 days ago",
サンプル回答 [#update-sample-response] "entityGuid" : "<YOUR_ENTITY_GUID>" ,
"blobId" : "<YOUR_BLOB_ID>" ,
"entityGuid" : "<YOUR_ENTITY_GUID>" ,
ノートブックを削除する ノートブックとそのコンテンツを削除します。
終点 DELETE /v1/e/organizations/{orgId}/Notebooks/{entityGuid}
リクエストパラメータ [#delete-params] パラメータ
場所
データ型
それは必須ですか?
説明
orgId
パス
弦
はい
New Relic
の組織ID。
entityGuid
パス
弦
はい
削除するノートブックのエンティティGUID。
Api-Key
ヘッダー
弦
はい
ユーザーAPIキー。
サンプルリクエスト [#delete-sample-request] > https://blob-api.service.newrelic.com/v1/e/organizations/YOUR_ORG_ID/Notebooks/YOUR_ENTITY_GUID \
> -H 'Api-Key: NRAK-YOUR-API-KEY'
サンプル回答 [#delete-sample-response] 削除が成功すると、HTTP 204 No Content を返します。
以前のバージョンを取得する Notebook バージョンは1日 保持されます。以前のリビジョンを復元するには、まずNRQLを使用して最近のバージョンを一覧表示し、次に特定のblobを取得します。
ステップ1 — 最新の5つのバージョンを一覧表示する クエリビルダーでこのNRQLクエリを実行して、過去5回の変更のblob IDとタイムスタンプを収集します:
SELECT uniques ( tuple ( updatedAt , content . id ) )
WHERE id = '<entity guid>'
ステップ2 — 特定のバージョンを取得する [#retrieve-specific-version] NRQLの結果からcontent.idを使用して、そのバージョンのコンテンツを取得します:
> https://blob-api.service.newrelic.com/v1/blobs/ < content.id > \
> -H 'Api-Key: NRAK-YOUR-API-KEY'
エンティティ操作(NerdGraph) 一覧表示、名前変更、タグなどのエンティティレベルの操作では、Blob Storage APIではなくNerdGraphを使用します。
すべてのノートブックを一覧表示する entitySearch ( query : "type='NOTEBOOK'" ) {
ヒント エンティティの作成は完全にトランザクションであるため、ノートブックはAPIを介してすぐに利用できます。ただし、レガシーactor.entitySearchクエリを使用してノートブックを一覧表示する場合、作成からノートブックがリスト結果に表示されるまでに短い伝播遅延が発生する可能性があります。
ノートブックの名前を変更する mutation changeNotebookName {
entityManagementUpdateNotebook (
notebookEntity : { name : "<new name>" }
重要 タグの更新は置換 操作です。変更されないものも含めて、タグの完全なセットを含める必要があります — ミューテーションから省略されたタグは削除されます。
mutation updateNotebookTags {
entityManagementUpdateNotebook (
{ key : "<key>" , values : "<value>" }
{ key : "<key>" , values : "<value>" }
組織IDを取得する すべてのBlob Storage API呼び出しには、組織IDが必要になります:
ベストプラクティス エンティティGUIDを保存する: 作成操作から返されたentityGuidを保存します。ノートブックの読み取り、更新、削除に必要になります。アップロード前にJSONを検証する: 送信する前に、ノートブックのペイロードが有効なJSONであり、versionスキーマに準拠していることを確認してください。分かりやすい名前を使用する: ノートブックの名前は組織内で一意である必要があるため、目的を明確に示す名前を選択してください(たとえば、notebook-1ではなくprod-checkout-investigation)。更新時にすべてのタグを含める: タグの更新により、タグセット全体が置き換えられます。変更する前に、常に既存のタグを読み取ります。迅速に復元する: バージョン履歴は1日のみ保持されます。長期的な履歴が必要な場合は、更新のたびにノートブックのコンテンツを独自のストレージにアーカイブしてください。APIキーを保護する: ユーザーAPIキーをクライアント側のコードやパブリック リポジトリで公開しないでください。HTTPステータスコードを確認してください。API は、操作が成功した場合は2xx、見つからない場合は404、エラーの場合はその他のステータスコードを返します。よくあるエラーへの対応 ステータスコード
説明
解決
400 Bad Request
無効なリクエストパラメーター、本文または
NewRelic-Entity
ヘッダーの不正なJSON、またはこの組織にノートブック名がすでに存在しています
リクエストの形式、ヘッダー値、およびノートブック名が組織内で一意であることを確認します
401 Unauthorized
APIキーが欠落しているか無効です
ユーザーAPIキーが有効であり、
Api-Key
ヘッダーに含まれていることを確認してください。
404 Not Found
ノートブックまたはバージョンが見つかりません
エンティティのGUIDが正しいことを確認してください。
415 Unsupported Media Type
不正な
Content-Type
ヘッダー
使用する
Content-Type: application/json
追加リソース