このチュートリアルでは、NerdGraphAPIを使用してトポロジを設定する方法について説明します。トポロジ構成により、 適用されたインテリジェンスの決定により、インシデントをより適切に関連付けることができます。
要件
トポロジー相関図は現在限定公開されています。 トポロジーの要件 を参照してください。
NerdGraphをご利用いただくには、 ユーザーキー が必要です。
チュートリアルの概要
New Relicの適用されたインテリジェンスを使用すると、インシデントの相関方法を管理するカスタム決定を作成できます。ある種のカスタム決定ロジックは、サービスマップの表現である「トポロジ」の概念を使用します。これは、インフラストラクチャ内のサービスとリソースが相互にどのように関連しているかを示します。
このチュートリアルでは、 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 } } } }}