New Relic の GraphQL API であるNerdGraphを使用して、プログラムによってカスタム視覚化を新規または既存のダッシュボードに追加します。
あなたが始める前に
まだ行っていない場合:
- New Relicアカウントにサインアップ
- Node.jsをインストールする
- CLI をインストールして構成するには、
nr1
クイック スタートの最初の 4 つの手順を完了してください。
Nerdpackを作成して公開する
視覚化された Nerdpack を作成します。 NerdGraph を使用して、この視覚化をダッシュボードに追加します。
参考文献
このガイドは、視覚化の作成と公開ではなく、視覚化の使用に関するものであるため、これらのトピックについては簡単に説明します。 視覚化に詳しくない場合、または視覚化 Nerdpacks の取り扱いについて詳細な説明が必要な場合は、次のリソースを参照してください。
ダッシュボードに追加したい視覚化がすでにある場合は、このセクションをスキップできます。 ただし、このガイドで使用されているmy-awesome-visualization
ではなく、独自の視覚化を参照するために、必要なコード調整を行うことを忘れないでください。
nr1
CLI を更新します:
$nr1 update
これで最新バージョンが手に入りました。
my-awesome-nerdpack
という Nerdpack にmy-awesome-visualization
という視覚化を作成します。
$nr1 create -t visualization -n my-awesome-visualization✔ You're trying to create a visualization outside of a Nerdpack. We'll create a Nerdpack for you—what do you want to name it? … my-awesome-nerdpack✔ nerdpack created successfully!nerdpack my-awesome-nerdpack is available at "./my-awesome-nerdpack"✔ visualization created successfully!visualization my-awesome-visualization is available at "./my-awesome-nerdpack/visualizations/my-awesome-visualization"
nr1 create
を使用して視覚化を構築すると、デフォルトの視覚化が取得されます。 このコース全体でこのデフォルトの視覚化を使用します。
新しい Nerdpack に移動します。
$cd my-awesome-nerdpack
ここから、 nr1 nerdpack
コマンドを実行できます。
Nerdpack を公開および購読する:
$nr1 nerdpack:publish$nr1 nerdpack:subscribe
これで、アカウントが視覚化にサブスクライブされたので、JSON を使用してアプリの設定を記述し、NerdGraph を使用してダッシュボードに追加できます。
JSONで視覚化オプションを記述する
新しいダッシュボードに視覚化を追加する場合でも、既存のダッシュボードに追加する場合でも、設定を NerdGraph に送信する必要があります。
カスタム視覚化 JSON オブジェクトはダッシュボード ウィジェットを表し、次のフィールドで構成されます。
フィールド | タイプ | 説明 |
---|---|---|
| 弦 | ダッシュボードウィジェットのタイトル |
| JSON | 視覚化のメタデータ |
| 弦 | 視覚化のID |
| JSON | ウィジェットの完全な設定 |
ヒント
このガイドの手順に従ってダッシュボードに他のタイプのウィジェットを追加することもできますが、ここで説明するフィールドはカスタム視覚化ウィジェットに固有のものです。 他のウィジェット タイプの場合は、異なるデータを提供する必要があります。
NerdGraph エクスプローラーを使用して、API を独自に探索します。
カスタム視覚化を記述するために必要なフィールドに基づいた JSON テンプレートから始めます。
{ "title": "", "visualization": { "id": "" }, "rawConfiguration": {}}
視覚化ウィジェットにタイトルを付けます。
{ "title": "My Awesome Visualization", "visualization": { "id": "" }, "rawConfiguration": {}}
my-awesome-nerdpack/nr1.json
から Nerdpack ID を検索します:
{ "schemaType": "NERDPACK", "id": "ab123c45-678d-9012-efg3-45hi6jkl7890", "displayName": "MyAwesomeNerdpack", "description": "Nerdpack my-awesome-nerdpack"}
次に、 my-awesome-nerdpack/visualizations/my-awesome-visualization/nr1.json
から視覚化 ID を検索します。
{ "schemaType": "VISUALIZATION", "id": "my-awesome-visualization", "displayName": "MyAwesomeVisualization", "description": "", "configuration": [ { "name": "nrqlQueries", "title": "NRQL Queries", "type": "collection", "items": [ { "name": "accountId", "title": "Account ID", "description": "Account ID to be associated with the query", "type": "account-id" }, { "name": "query", "title": "Query", "description": "NRQL query for visualization", "type": "nrql" } ] }, { "name": "fill", "title": "Fill color", "description": "A fill color to override the default fill color", "type": "string" }, { "name": "stroke", "title": "Stroke color", "description": "A stroke color to override the default stroke color", "type": "string" } ]}
視覚化ウィジェットのvisualization.id
を形式{NERDPACK-ID}.{VISUALIZATION-ID}
に設定します。
{ "title": "My Awesome Visualization", "visualization": { "id": "ab123c45-678d-9012-efg3-45hi6jkl7890.my-awesome-visualization" }, "rawConfiguration": {}}
my-awesome-nerdpack/visualizations/my-awesome-visualization/nr1.json
で設定オプションを確認します。
{ "schemaType": "VISUALIZATION", "id": "my-awesome-visualization", "displayName": "MyAwesomeVisualization", "description": "", "configuration": [ { "name": "nrqlQueries", "title": "NRQL Queries", "type": "collection", "items": [ { "name": "accountId", "title": "Account ID", "description": "Account ID to be associated with the query", "type": "account-id" }, { "name": "query", "title": "Query", "description": "NRQL query for visualization", "type": "nrql" } ] }, { "name": "fill", "title": "Fill color", "description": "A fill color to override the default fill color", "type": "string" }, { "name": "stroke", "title": "Stroke color", "description": "A stroke color to override the default stroke color", "type": "string" } ]}
configuration
のname
フィールドは、視覚化ウィジェットを記述するために重要です。
視覚化のnr1.json
ファイル内のすべての設定オブジェクトのname
フィールドを使用して、 ウィジェット のrawConfiguration
を構築します。
{ "title": "My Awesome Visualization", "visualization": { "id": "ab123c45-678d-9012-efg3-45hi6jkl7890.my-awesome-visualization" }, "rawConfiguration": { "nrqlQueries": [ { "accountId": 1234567, "query": "FROM NrUsage SELECT sum(usage) FACET metric SINCE 1 week ago" } ], "fill": "pink", "stroke": "green" }}
ここでは、 nr1.json
の各設定オプションに値を指定してrawConfiguration
を作成しました。 nrqlQueries
は型がcollection
なので配列であることに注意してください。 その他の値は文字列です。 これらの設定オプションの詳細については、 「カスタム視覚化を構成する」を参照してください。
視覚化ウィジェットを JSON で記述したので、構成した視覚化をダッシュボードに追加できます。 次のセクションでは、視覚化を使用して新しいダッシュボードを作成する方法を学習します。 すでに準備ができている場合は、先に進んで、既存のダッシュボードに視覚化を追加します。
視覚化を使用して新しいダッシュボードを作成する
視覚化ウィジェット用の新しいダッシュボードを作成する場合は、NerdGraph のdashboardCreate()
ミューテーションを使用します。
NerdGraph dashboardCreate()
ミューテーションは次のフィールドを取ります:
フィールド | タイプ | 説明 |
---|---|---|
| 整数 | ダッシュボードを作成するアカウントのID |
| JSON | 作成するダッシュボードの詳細 |
| 弦 | ダッシュボードの名前 |
| 列挙型: | ダッシュボードのアクセス制御 |
| 配列: JSON | ダッシュボードのページの詳細 |
| 弦 | ダッシュボードページの名前 |
| 配列: JSON | ダッシュボードページに追加するウィジェット |
ヒント
詳細やウィジェットなどを追加するために、 dashboardCreate()
にさらにフィールドを渡すこともできます。 NerdGraph エクスプローラーを使用して、API を独自に探索してください。
このガイドでは、1 つのウィジェットを含む 1 つのページを持つダッシュボードを作成します。 前のセクションで説明した視覚化ウィジェット。
dashboardCreate()
でダッシュボードを記述するために必要なフィールドに基づいて GraphQL ミューテーション テンプレートを構築します。
mutation { dashboardCreate( accountId: 0 dashboard: { name: "" pages: [{ name: "", widgets: [] }] permissions: PRIVATE } )}
ここでは、プライベート ダッシュボードのテンプレートを定義しました。 さて、詳細を記入しましょう。
アカウント ID を検索し、 accountId
に入力します:
mutation { dashboardCreate( accountId: 1234567 dashboard: { name: "" pages: [{ name: "", widgets: [] }] permissions: PRIVATE } )}
ダッシュボードとそのページの名前を選択します。
mutation { dashboardCreate( accountId: 1234567 dashboard: { name: "My Awesome Dashboard" pages: [{ name: "One Page to Rule Them All", widgets: [] }] permissions: PRIVATE } )}
widgets
に、前のセクションで作成したウィジェット オブジェクトを配置します。
mutation { dashboardCreate( accountId: 1234567 dashboard: { name: "My Awesome Dashboard" pages: [ { name: "One Page to Rule Them All" widgets: [ { title: "My Awesome Visualization" visualization: { id: "ab123c45-678d-9012-efg3-45hi6jkl7890.my-awesome-visualization" } rawConfiguration: { nrqlQueries: [ { accountId: 1234567 query: "FROM NrUsage SELECT sum(usage) FACET metric SINCE 1 week ago" } ] fill: "pink" stroke: "green" } } ] } ] permissions: PRIVATE } )}
最後に、ミューテーションにリターンフィールドを追加します。
mutation { dashboardCreate( accountId: 1234567 dashboard: { name: "My Awesome Dashboard" pages: [ { name: "One Page to Rule Them All" widgets: [ { title: "My Awesome Visualization" visualization: { id: "ab123c45-678d-9012-efg3-45hi6jkl7890.my-awesome-visualization" } rawConfiguration: { nrqlQueries: [ { accountId: 1234567 query: "FROM NrUsage SELECT sum(usage) FACET metric SINCE 1 week ago" } ] fill: "pink" stroke: "green" } } ] } ] permissions: PRIVATE } ) { entityResult { guid } }}
重要
ミューテーション クエリ内の ID を、アカウント、Nerdpack、視覚化に一致する ID に置き換えてください。
これで、カスタム視覚化用のウィジェットを含む単一ページのダッシュボードを作成するために NerdGraph に送信するミューテーションの準備が整いました。 その結果、新しいダッシュボードのエンティティ GUID が表示されます。
次のセクションでは、既存のダッシュボードに視覚化を追加する方法を学習します。 それがあなたの目標に関係ない場合は、先に進んでNerdGraph にリクエストを送信してください。
既存のダッシュボードに視覚化を追加する
既存のダッシュボードに視覚化ウィジェットを追加するには、NerdGraph のdashboardAddWidgetsToPage()
ミューテーションを使用します。
NerdGraph dashboardAddWidgetsToPage()
ミューテーションは次のフィールドを取ります:
フィールド | タイプ | 説明 |
---|---|---|
| 弦 | ウィジェットを追加するダッシュボードのエンティティ GUID |
| 配列: JSON | ダッシュボードページに追加するウィジェット |
ヒント
詳細やウィジェットなどを追加するために、 dashboardAddWidgetsToPage()
にさらにフィールドを渡すこともできます。 NerdGraph エクスプローラーを使用して、API を独自に探索してください。
dashboardAddWidgetsToPage()
でダッシュボードを記述するために必要なフィールドに基づいて GraphQL ミューテーション テンプレートを構築します。
mutation { dashboardAddWidgetsToPage(guid: "", widgets: []) { errors { description } }}
ダッシュボードの GUID を検索し、それをguid
に入力します:
mutation { dashboardAddWidgetsToPage( guid: "AbCdEFghIJkLMNo1PQRSTUVWXYZAbCD2Ef34GHI" widgets: [] ) { errors { description } }}
う に、 JSON を使用して視覚化オプションを記述するで作成した う オブジェクトを配置します。
mutation { dashboardAddWidgetsToPage( guid: "AbCdEFghIJkLMNo1PQRSTUVWXYZAbCD2Ef34GHI" widgets: [ { visualization: { id: "ab123c45-678d-9012-efg3-45hi6jkl7890.my-awesome-visualization" } rawConfiguration: { nrqlQueries: [ { accountId: 1234567 query: "FROM NrUsage SELECT sum(usage) FACET metric SINCE 1 week ago" } ] fill: "pink" stroke: "green" } } ] )}
最後に、ミューテーションにリターンフィールドを追加します。
mutation { dashboardAddWidgetsToPage( guid: "AbCdEFghIJkLMNo1PQRSTUVWXYZAbCD2Ef34GHI" widgets: [ { visualization: { id: "ab123c45-678d-9012-efg3-45hi6jkl7890.my-awesome-visualization" } rawConfiguration: { nrqlQueries: [ { accountId: 1234567 query: "FROM NrUsage SELECT sum(usage) FACET metric SINCE 1 week ago" } ] fill: "pink" stroke: "green" } } ] ) { errors { description } }}
これで、NerdGraph に送信して、既存のダッシュボードにカスタム視覚化を追加するミューテーションが準備できました。 その結果、発生したエラーの説明が表示され、問題のデバッグに役立ちます。
最後に、実際に NerdGraph にリクエストを送信する必要があります。
NerdGraphにリクエストを送信
前のセクションで作成したペイロードを使用して、ニーズに最適なミューテーションの HTTP リクエストを NerdGraph に送信します。 HTTP リクエストを送信するために使用できるツールは多数ありますが、このガイドでは、次の 3 つの特定のツールを使用して NerdGraph と通信する方法を学習します。
別のものを使用する場合は、これらの方法をお気に入りの開発ツールに適応させることができます。
NerdGraph APIエクスプローラ
NerdGraphAPI エクスプローラーは 、NerdGraph を探索できる GraphiQLAPI の実装です。
NerdGraph API エクスプローラーに移動します。
Execute Query [クエリの実行]を押して、右側のペインに結果を表示します。
新しいダッシュボードが正常に作成された場合、応答にはエンティティ GUID が含まれます。 エレメント GUID がない場合は、クエリのデバッグに役立つエラー メッセージが応答に含まれます。
既存のダッシュボードに視覚化を追加した場合、応答にエラーは表示されません。 エラーメッセージが表示された場合は、それを使用してクエリをデバッグしてください。
探検する
NerdGraph API エクスプローラーを使用すると、すべてを手動で入力しなくても、他のフィールドを表示したり、クエリを変更したりできます。 左側のペインを使用して NerdGraph を探索します。
cURL
cURL は、HTTP リクエストを行うためのコマンドライン ユーティリティです。
New Relicユーザー キーを選択または作成します。 このキーは次の手順で使用するため、コピーしてください。
cURL
を使用して NerdGraph にリクエストを送信します。
$curl https://api.newrelic.com/graphql \> -H 'Content-Type: application/json' \> -H 'API-Key: <YOUR-USER-KEY>' \> --data-binary '{"query": "mutation {dashboardCreate(dashboard: {name: \"My Awesome Dashboard\", pages: [{name: \"One Page to Rule Them All\", widgets: [{title: \"My Awesome Visualization\", visualization: {id: \"ab123c45-678d-9012-efg3-45hi6jkl7890.my-awesome-visualization\"}, rawConfiguration: {nrqlQueries: [{accountId: 3014918, query: \"FROM NrUsage SELECT sum(usage) FACET metric SINCE 1 week ago\"}], fill: \"pink\", stroke: \"green\"}}]}], permissions: PRIVATE}, accountId: <YOUR-ACCOUNT-ID>) { entityResult { guid }}}", "variables": ""}'
重要
ミューテーション クエリ内の ID を、アカウント、Nerdpack、視覚化に一致する ID に置き換えてください。
ここでは、2 つのヘッダーContent-Type
とAPI-Key
と、前のセクションで作成したミューテーション クエリの 1 つを含むバイナリ メッセージ本文を持つリクエストを NerdGraph に送信します。
Postmanのような UI ベースのクライアントを使用する場合は、このメソッドをクライアントがサポートする形式に適応させることができます。
New Relic CLI
newrelic
は、New Relic データを読み書きするためのコマンドライン インターフェースです。
まだインストールしていない場合は、 「New Relic CLI を使い始める」ガイドの手順に従ってnewrelic
インストールしてください。
これを実行すると、 newrelic
がインストールされ、NerdGraph リクエストを行うように構成されます。
newrelic nerdgraph query
を使用して NerdGraph リクエストを作成します:
$newrelic nerdgraph query 'mutation {$ dashboardCreate($ accountId: 1234567,$ dashboard: {$ name: "My Awesome Dashboard",$ pages: [$ {$ name: "One Page to Rule Them All",$ widgets: [$ {$ title: "My Awesome Visualization",$ visualization: {$ id: "de0b4768-1504-4818-a898-da7cd14f0bfb.my-awesome-visualization"$ },$ rawConfiguration: {$ nrqlQueries: [$ {$ accountId: <YOUR-ACCOUNT-ID>,$ query: "FROM NrUsage SELECT sum(usage) FACET metric SINCE 1 week ago"$ }$ ],$ fill: "pink",$ stroke: "green"$ }$ }$ ]$ },$ ],$ permissions: PRIVATE$ }$ ) {$ entityResult {$ guid$ }$ }$}'
重要
ミューテーション クエリ内の ID を、アカウント、Nerdpack、視覚化に一致する ID に置き換えてください。
新しいダッシュボードを表示する
NerdGraph を使用してダッシュボードを構築したので、次は作業内容を確認します。
one.newrelic.com > All capabilities > Dashboardsに移動してダッシュボードを選択します。
作成したダッシュボードには、ミューテーションで渡した
name
「My Awesome ダッシュボード」が含まれます。 また、 NRQLデータ クエリから塗りつぶしや線の色まで、rawConfiguration
で送信した設定も含まれます。
概要
おめでとう! このガイドでは、New Relic の GraphQL API である NerdGraph を使用して、ダッシュボードにカスタム視覚化を追加しました。