このチュートリアルでは、NerdGraph API を使用してトポロジを設定する方法について説明します。 トポロジ設定により、集計の決定とインシデントの相関関係をより適切に把握できるようになります。
要件
トポロジー相関図は現在限定公開されています。 トポロジーの要件 を参照してください。
NerdGraphをご利用いただくには、 ユーザーキー が必要です。
チュートリアルの概要
New Relic のアラートを使用すると、インシデントの相関関係を制御するカスタム決定を作成できます。 1 種類のカスタム決定ロジックでは、「トポロジ」の概念が使用されます。これは、サービス マップ (インフラストラクチャ内のサービスとリソースが相互にどのように関連しているか) を表します。
このチュートリアルでは、 NerdGraph を使用する方法を紹介します。
- 頂点とエッジを作成してトポロジーを設定する
- 頂点・辺の削除
- トポロジーデータの取得
NerdGraphを使ってトポロジーを設定する前に、以下のことを基本的に理解しておく必要があります。
- 相関決定とは何か、 トポロジ相関はどのように機能するか。
- 実装しようとしているトポロジー構造。 これを理解する1つの方法として、当社のサービスマップ機能 を使用して、インフラストラクチャ内のエンティティが互いにどのように関連しているかを確認することができます。
- NerdGraphとは と NerdGraph APIエクスプローラーの使い方 クエリを実行する。
変異の例
NerdGraphでは、リソースの作成や設定の変更などのアクションを実行するリクエストを「ミューテーション」と呼んでいます(Learn more about NerdGraph terminology )。
このセクションでは、 aiTopologyCollector
ミューテーションを使用してトポロジを作成、編集、または削除する方法を説明します。
作成セクションでは、このサービスマップを表現するための頂点と辺を作成します。
このチュートリアルでは、NerdGraphを使用して、これらのエンティティとそれらの関係を表す頂点とエッジを作成します。
頂点の作成
次の変異では1つ以上の頂点が作られますが、これらの頂点は監視対象のエンティティを表し、インシデントの発生源となります。
以下のNerdGraphコールは、以下のフィールドを使用しています。
accountId
:NewRelicアカウントID。name
:頂点の名前。この値では大文字と小文字が区別され、グラフ内で一意である必要があります。vertexClass
:頂点クラスは、application
、host
、cloud service
、cluster
、またはdatastore
にすることができます。この分類により、決定ロジックでトポロジベースの相関を制限して、これらの分類に一致する頂点を制限できます。definingAttributes
:インシデントイベントの属性に一致する属性のセット(キー/値のペア)。これらは通常、エンティティGUIDやその他のIDなど、すべてのインシデントに表示される一意の識別子です。インシデントに頂点のdefiningAttributes
のキーと値のペアのいずれかが含まれている場合、その頂点に一致します。属性とその追加方法の詳細については、「 属性の追加」を参照してください。
例のコール。
mutation { aiTopologyCollectorCreateVertices( accountId: NEW_RELIC_ACCOUNT_ID vertices: [ { name: "ServiceA" vertexClass: APPLICATION definingAttributes: [{ key: "application/name", value: "ServiceA" }] } { name: "ServiceB" vertexClass: APPLICATION definingAttributes: [{ key: "application/name", value: "ServiceB" }] } { name: "ServiceC" vertexClass: APPLICATION definingAttributes: [{ key: "application/name", value: "ServiceC" }] } { name: "HOST1" vertexClass: HOST definingAttributes: [ { key: "host/name", value: "HOST1" } { key: "availability-zone", value: "us-west-2a" } { key: "region", value: "us-west-2" } ] } { name: "HOST2" vertexClass: HOST definingAttributes: [ { key: "host/name", value: "HOST2" } { key: "availability-zone", value: "us-west-2b" } { key: "region", value: "us-west-2" } ] } { name: "HOST3" vertexClass: HOST definingAttributes: [ { key: "host/name", value: "HOST3" } { key: "availability-zone", value: "us-west-2c" } { key: "region", value: "us-west-2" } ] } ] ) { result }}
エッジの作成
この突然変異を利用して、頂点間の関係を表す1つ以上のエッジを作成します。
以下のNerdGraphのコールは、これらのフィールドを使用しています。
accountId
:NewRelicアカウントID。fromVertexName
:エッジが開始している頂点の名前。toVertexName
:接続する頂点の名前。directed
:頂点がどのように接続するかを説明するブール値。true
は一方向の関係(たとえば、あるサービスが別のサービスを呼び出す)を示し、false
はを示します。デフォルトでは、directed=true
です。
例のコール。
mutation { aiTopologyCollectorCreateEdges( accountId: NEW_RELIC_ACCOUNT_ID edges: [ { directed: true, fromVertexName: "ServiceA", toVertexName: "ServiceB" } { directed: true, fromVertexName: "ServiceB", toVertexName: "ServiceC" } { directed: false, fromVertexName: "ServiceA", toVertexName: "HOST1" } { directed: false, fromVertexName: "ServiceA", toVertexName: "HOST2" } { directed: false, fromVertexName: "ServiceA", toVertexName: "HOST3" } { directed: false, fromVertexName: "ServiceB", toVertexName: "HOST1" } { directed: false, fromVertexName: "ServiceB", toVertexName: "HOST2" } { directed: false, fromVertexName: "ServiceB", toVertexName: "HOST3" } { directed: false, fromVertexName: "ServiceC", toVertexName: "HOST1" } { directed: false, fromVertexName: "ServiceC", toVertexName: "HOST2" } { directed: false, fromVertexName: "ServiceC", toVertexName: "HOST3" } ] ) { result }}
頂点の削除
この変異は、トポロジーグラフの頂点を削除するものである。頂点を削除すると、その頂点に接続しているすべてのエッジが削除されることに注意してください。
以下のNerdGraphのコールは、これらのフィールドを使用しています。
accountId
:NewRelicアカウントID。vertexNames
:削除する頂点名のリスト。
例のコール。
mutation { aiTopologyCollectorDeleteVertices( accountId: NEW_RELIC_ACCOUNT_ID vertexNames: ["ServiceA", "ServiceB", "ServiceC", "HOST1", "HOST2", "HOST3"] ) { result }}
エッジの削除
この変異では、トポロジーグラフの頂点を結ぶエッジが削除されます。
以下のNerdGraphのコールは、これらのフィールドを使用しています。
accountId
:NewRelicアカウントID。edgeIds
:削除するエッジIDのリスト。
例のコール。
mutation { aiTopologyCollectorDeleteEdges( accountId: NEW_RELIC_ACCOUNT_ID edgeIds: [ "d8a7971b-575d-42e9-aa13-43a50c5a7d10" "0da5cb92-0428-4890-992b-2823d037cb5e" ] ) { result }}
クエリの例
NerdGraphでは、アクションを実行するミューテーションとは対照的に、クエリを使用してデータをフェッチします(用語の詳細をご覧ください)。 Nerdgraphクエリは静的ではありません。つまり、必要に応じてデータを増減できます。トポロジデータを取得するには、 aiTopology
クエリを使用します。
頂点の取得
このクエリは、トポロジーグラフの頂点のリストを返します。
{ actor { account(id: NEW_RELIC_ACCOUNT_ID) { aiTopology { vertices { vertices { id name definingAttributes { key value } updatedAt vertexClass } count cursor } } } }}
リティーブ・エッジ
このクエリは、トポロジー・グラフのエッジのリストを返します。
{ actor { account(id: NEW_RELIC_ACCOUNT_ID) { aiTopology { edges { edges { id toVertexName fromVertexName directed updatedAt } cursor count } } } }}