New Relic のエンティティ とは、テレメトリを生成または含む、当社が監視するあらゆるものを指します。エンティティは、New Relic で追跡したいデータを見つけるのに役立ちます。エンティティと他のエンティティとの関係を理解すれば、データについてさらに多くの洞察を得ることができます。エンティティの例をいくつか示します。
- APMで監視するアプリケーション.
- クラウドの統合、サービス、ホストは、当社のインフラ監視 によって監視されています。
UI で直接エンティティを操作するか ( 「New Relic エンティティについて学ぶ」を参照)、NerdGraph API を介してエンティティを操作する方法について、こちらの手順に従うことができます。NerdGraph の使用を開始する際にサポートが必要な場合は、 New Relic NerdGraph の紹介 を参照してください。
重要
エンティティのゴールデン メトリックとタグを操作するには、 ゴールデン メトリック API チュートリアル を参照してください。
始める前に
エンティティを操作する前に、 「エンティティについて学ぶ」を読むことをお勧めします。
エンティティを操作するときは、次の重要な点に留意してください。
- 一意の GUID はエンティティ (
entity.guid
またはentityGuid
) を識別します。 - エンティティは、 特定の期間New Relic に存在します。
- エンティティは、特定のメトリックやイベントに関するデータを探索したり、他のエンティティに関連するデータを文脈化するための便利なエントリ ポイントを提供します。
エンティティの検索
New Relic は、エンティティの属性(主に名前)を中心に、エンティティの種類やその他の値で検索します。検索では、検索条件に一致するエンティティの基本データが返されます。そして、基本的な検索結果から、特定のエンティティをGUIDで照会することができます。
domainType
の他に、他の一般的なエンティティ属性は次のとおりです。
id
accountId
name
domainId
alertSeverity
reporting
上記の属性のいずれかでフィルタリングできます。さらに、 タグを 使用してフィルタリングすることもできます。
注意
カスタム、ルートレベルのエンティティプロパティではフィルタリングできません。カスタムプロパティは、実際の検索レスポンスにおいて、エンティティのメタデータの一部としてのみ取得されます。カスタムフィールドでフィルタリングするには、そのフィールドをエンティティタグに変換します。
クエリを作成するには、2つの方法があります。
queryBuilder
引数を使用して、クエリを作成します。- 自由形式の
query
引数を使用して、独自の検索を作成します。
NerdGraphを使って1つまたは複数のエンティティを照会するには、属性またはGUIDで検索することができます。
ヒント
NerdGraphでは、1つのクエリで返すことのできるエンティティの総数を200に設定しています。1つのクエリですべてのエンティティを取得する必要がある場合は、例で説明しているようにカーソルページネーションを使用してください。
以下の例に加えて、 NerdGraph エクスプローラーを使用して API を試すことをお勧めします。クエリとミューテーションの作成に役立つインライン ドキュメントがあります。
で検索 queryBuilder
queryBuilder
引数は、単純なクエリを作成するのに役立ちます。これにより、事前定義された属性のリストとその一般的な値からクエリにフィルターを追加できます。より高度なクエリの場合は、代わりにquery
引数を使用してください。
NerdGraphにアクセスする GraphiQL explorer.
基本的なクエリを実行して、検索条件に一致するエンティティを見つけます。例えば、以下のようになります。
{actor {entitySearch(queryBuilder: { domain: APM, type: APPLICATION }) {queryresults {entities {nameentityTypeguid}}}}}
自由形式で検索 query
これは、より複雑なクエリを作成するのに便利です。
NerdGraphにアクセスする GraphiQL explorer.
基本的なクエリを実行して、検索条件に一致するエンティティを見つけます。例えば、以下のようになります。
query($query: String!) {actor {entitySearch(query: $query) {countresults {entities {nameentityTypeguid}}}}}次の変数をNerdGraph のQuery variablesセクションに追加します。
{ "query": "name LIKE 'nerd-graph' AND domainType IN ('APM-APPLICATION')" }
GUIDによるエンティティの取得
フェッチするエンティティのGUIDがわかっている場合は、 entity
属性を使用できます。
{ actor { entity(guid: "ENTITY_GUID") { name entityType } }}
これは、検索クエリとしても書くことができます。
{ actor { entitySearch(query: "id = 'ENTITY_GUID'") { query results { entities { name entityType } } } }}
または、複数のエンティティを同時にフェッチするには、 entities
属性を使用できます。
{ actor { entities(guids: ["ENTITY_GUID_1", "ENTITY_GUID_2"]) { name entityType } }}
それ以外の場合は、検索クエリを使用します。
{ actor { entitySearch(query: "id IN ('ENTITY_GUID_1', 'ENTITY_GUID_2')") { query results { entities { name entityType } } } }}
クエリの例
クエリとは、データを取得することだけを目的とした(他の効果を持たない)リクエストのことである。NerdGraphのクエリは固定されていないため、必要に応じてデータを増やしたり減らしたりすることができます。各クエリでは、スキーマでサポートされている限り、取得したいデータを正確に指定することができます。
NerdGraph のエンティティは、 GraphQL インターフェースに依存しています。 は、オブジェクトが共通のフィールドを共有することを可能にするコンセプトです。インターフェイスは、NerdGraphのクエリ例の多くに見られるように、特定のエンティティタイプのデータを提供するために使用されます。
エンティティ関係の作成または削除
エンティティは、別のエンティティと関係を持つ場合があります。一部のリレーションシップは New Relic によって自動的に作成されますが、ミューテーションを使用してカスタム リレーションシップを作成または削除することもできます。これを行う方法については以下に説明がありますが、New Relic でのさまざまな関係タイプを理解するのに助けが必要な場合は、 エンティティ関係をご覧ください。
追加の関係を手動で作成または削除する前に、次の点に注意してください。
- 2つのエンティティは、関係タイプごとに1つずつ、複数の関係を持つことができます。
- 同じ信頼できるアカウントに属している場合、2つのエンティティは関係を保持できます。
- 各エンティティに対して、最大2000の関係を手動で定義できます。制限に達すると、APIは
LIMIT_EXCEEDED
エラーを返します。 - 2つのエンティティ(ソース/ターゲット)のいずれにもアクセスできない場合、各ミューテーションは失敗する可能性があります。
エンティティの関係を一覧表示する
relatedEntities
フィールドを使用して、エンティティのペアがどのように相互作用し、どのように関連しているかを確認できます。これは、 サービス マップの 使用方法と同様に、アップストリーム サービスとダウンストリーム サービスのトラブルシューティングを行い、小さな問題が大きな影響を与える可能性があることを理解するのに役立ちます。
次の例は、特定の GUID でエンティティをクエリする方法を示しています。
query { actor { entity(guid: "ENTITY_GUID") { name relatedEntities { results { source { entity { guid name } } target { entity { guid name } } type } } } }}
リレーションシップの作成または置換
ミューテーション entityRelationshipUserDefinedCreateOrReplace
を使用してエンティティ関係を作成または置換します。その名前が示すように、特定のタイプの 2 つのエンティティ間の関係を作成できます。2 つのエンティティ間に関係が既に存在する場合は、更新された特定の値 (作成時間と作成者のユーザー ID) で再度追加されます。
mutation { entityRelationshipUserDefinedCreateOrReplace( sourceEntityGuid: "SOURCE_ENTITY_GUID" targetEntityGuid: "TARGET_ENTITY_GUID" type: BUILT_FROM ) { errors { message type } }}
関係を削除する
ミューテーション entityRelationshipUserDefinedDelete
を使用してエンティティ関係を削除します。ソースとターゲットは必須ですが、タイプは必須ではありません。タイプなしでミューテーションを実行すると、2 つのエンティティ間のすべての関係が削除されます。
mutation { entityRelationshipUserDefinedDelete( sourceEntityGuid: "SOURCE_ENTITY_GUID" targetEntityGuid: "TARGET_ENTITY_GUID" type: BUILT_FROM ) { errors { message type } }}
エンティティの削除
NerdGraph GraphiQL エクスプローラーの NerdGraph API を使用して、アカウント内のエンティティを手動で削除できます。
EXT-SERVICE
およびREF-REPOSITORY
エンティティを削除するには、エンティティの GUID を使用してこのミューテーションを実行します。
mutation { entityDelete(guids: ["ENTITY_GUID_1", "ENTITY_GUID_2"]) { deletedEntities failures { guid message } }}
重要
entityDelete
ミューテーションを実行した後、New Relic エージェントが再度インデックスを再作成すると、削除されたエンティティが UI に表示されることがあります。
APM
、 BROWSER
およびMOBILE
エンティティを削除するには、エンティティの GUID を使用してこのミューテーションを実行します。
mutation { agentApplicationDelete(guid: "ENTITY_GUID") { success }}
重要
agentApplicationDelete
変異では、New Relic エージェントが削除前に 12 時間レポート データを保持していないことが必要です。- 現在、Nerdgraph APIを使用して削除できるのは、
APM-APPLICATION
、EXT-SERVICE
、およびREF-REPOSITORY
のエンティティタイプのみです。 - 削除されたエンティティがNew Relicエージェントによって再びインデックスされると、UIに表示されることがあります。