• ログイン無料アカウント

本書は、お客様のご参考のために原文の英語版を機械翻訳したものです。

英語版と齟齬がある場合、英語版の定めが優先するものとします。より詳しい情報については、本リンクをご参照ください。

問題を作成する

NerdGraphチュートリアル:適用されたインテリジェンスインシデント相関のトポロジ

このチュートリアルでは、NerdGraphAPIを使用してトポロジを設定する方法について説明します。トポロジ構成により、 適用されたインテリジェンスの決定により、インシデントをより適切に関連付けることができます。

要件

トポロジー相関図は現在限定公開されています。 トポロジーの要件 を参照してください。

NerdGraphをご利用いただくには、 ユーザーキー が必要です。

チュートリアルの概要

New Relicの適用されたインテリジェンスを使用すると、インシデントの相関方法を管理するカスタム決定を作成できます。ある種のカスタム決定ロジックは、サービスマップの表現である「トポロジ」の概念を使用します。これは、インフラストラクチャ内のサービスとリソースが相互にどのように関連しているかを示します。

このチュートリアルでは、 NerdGraph を使用する方法を紹介します。

  • 頂点とエッジを作成してトポロジーを設定する
  • 頂点・辺の削除
  • トポロジーデータの取得

NerdGraphを使ってトポロジーを設定する前に、以下のことを基本的に理解しておく必要があります。

変異の例

NerdGraphでは、リソースの作成や設定の変更などのアクションを実行するリクエストを「ミューテーション」と呼んでいます(Learn more about NerdGraph terminology )。

このセクションでは、 aiTopologyCollectorミューテーションを使用してトポロジを作成、編集、または削除する方法を説明します。

作成セクションでは、このサービスマップを表現するための頂点と辺を作成します。

Topology example

このチュートリアルでは、NerdGraphを使用して、これらのエンティティとそれらの関係を表す頂点とエッジを作成します。

頂点の作成

次の変異では1つ以上の頂点が作られますが、これらの頂点は監視対象のエンティティを表し、インシデントの発生源となります。

以下のNerdGraphコールは、以下のフィールドを使用しています。

  • accountId:NewRelicアカウントID。
  • name:頂点の名前。この値では大文字と小文字が区別され、グラフ内で一意である必要があります。
  • vertexClass:頂点クラスは、 applicationhostcloud servicecluster 、または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
        }
      }
    }
  }
}
Copyright © 2022 New Relic株式会社。