NerdGraph を使用すると、監視しているエンティティの詳細を照会することができます。
重要
エンティティのゴールデン・メトリクスとタグを操作するには、ゴールデン・メトリクス API tutorial を参照してください。
エンティティ定義
エンティティ は、New Relic の重要なコンセプトです。私たちは、監視するあらゆるものをエンティティと定義しています。これには以下が含まれます(ただし、これらに限定されません)。
- APMで監視するアプリケーション.
- クラウドの統合、サービス、ホストは、当社のインフラ監視 によって監視されています。
UIでエンティティの詳細を表示するには、 Explorer を使用します。
NerdGraphでエンティティを扱う際には、以下の点に留意する必要があります。
- ユニークなエンティティGUIDは、エンティティを識別します。
- 実体は、たとえ短期間であっても、あるスパンで存在します。
- エンティティは、特定のメトリクスやイベントに関するデータを調査したり、他のエンティティに関連するデータのコンテクストを確認したりするのに便利なエントリーポイントとなります。
エンティティの検索
New Relic は、エンティティの属性(主に名前)を中心に、エンティティの種類やその他の値で検索します。検索では、検索条件に一致するエンティティの基本データが返されます。そして、基本的な検索結果から、特定のエンティティをGUIDで照会することができます。
domainType
の他に、他の一般的なエンティティ属性は次のとおりです。
id
accountId
name
domainId
alertSeverity
reporting
上記の属性のいずれかでフィルタリングすることができます。さらに、 タグ もフィルタリングに使用できます。
注意
カスタム、ルートレベルのエンティティプロパティではフィルタリングできません。カスタムプロパティは、実際の検索レスポンスにおいて、エンティティのメタデータの一部としてのみ取得されます。カスタムフィールドでフィルタリングするには、そのフィールドをエンティティタグに変換します。
クエリを作成するには、2つの方法があります。
queryBuilder
引数を使用して、クエリを作成します。- 自由形式の
query
引数を使用して、独自の検索を作成します。
NerdGraphを使って1つまたは複数のエンティティを照会するには、属性またはGUIDで検索することができます。
ヒント
NerdGraphでは、1つのクエリで返すことのできるエンティティの総数を200に設定しています。1つのクエリですべてのエンティティを取得する必要がある場合は、例で説明しているようにカーソルページネーションを使用してください。
以下の例 に加えて、 NerdGraph GraphiQL explorer を使って API を探索し、そのインライン・ドキュメントを活用することを強くお勧めします。
で検索 queryBuilder
queryBuilder
引数は、単純なクエリを作成するのに役立ちます。これにより、事前定義された属性のリストとその一般的な値からクエリにフィルターを追加できます。より高度なクエリの場合は、代わりにquery
引数を使用してください。
- NerdGraphにアクセスする GraphiQL explorer.
- 基本的なクエリを実行して、検索条件に一致するエンティティを見つけます。例えば、以下のようになります。
{ actor { entitySearch(queryBuilder: {domain: APM, type: APPLICATION}) { query results { entities { name entityType guid } } } } }
自由形式で検索 query
これは、より複雑なクエリを作成するのに便利です。
- NerdGraphにアクセスする GraphiQL explorer.
- 基本的なクエリを実行して、検索条件に一致するエンティティを見つけます。例えば、以下のようになります。
query($query: String!) { actor { entitySearch(query: $query) { count results { entities { name entityType guid } } } } }
以下の 変数 を NerdGraph の Query variables セクションに追加します。
{"query": "name LIKE 'nerd-graph' AND domainType IN ('APM-APPLICATION')"}
GUIDによるエンティティの取得
フェッチするエンティティのGUIDがわかっている場合は、 entity
属性を使用できます。
{ actor { entity(guid: "MTAwNDc5MzZ8QVBNfEFQUExJQ0FUSU9OfDExNzA0Mjk3") { name entityType } } }
これは、検索クエリとしても書くことができます。
{ actor { entitySearch(query: "id = 'MTAwNDc5MzZ8QVBNfEFQUExJQ0FUSU9OfDExNzA0Mjk3'") { query results { entities { name entityType } } } } }
または、複数のエンティティを同時にフェッチするには、 entities
属性を使用できます。
{ actor { entities(guids: ["MTAwNDc5MzZ8QVBNfEFQUExJQ0FUSU9OfDExNzA0Mjk3", "MTAwNDc5MzZ8QVBNfEFQUExJQ0FUSU9OfDExNzA0MTM3"]) { name entityType } } }
それ以外の場合は、検索クエリを使用します。
{ actor { entitySearch(query: "id in ('MTAwNDc5MzZ8QVBNfEFQUExJQ0FUSU9OfDExNzA0Mjk3', 'MTAwNDc5MzZ8QVBNfEFQUExJQ0FUSU9OfDExNzA0MTM3')") { query results { entities { name entityType } } } } }
クエリの例
クエリとは、データを取得することだけを目的とした(他の効果を持たない)リクエストのことである。NerdGraphのクエリは固定されていないため、必要に応じてデータを増やしたり減らしたりすることができます。各クエリでは、スキーマでサポートされている限り、取得したいデータを正確に指定することができます。
NerdGraph のエンティティは、 GraphQL インターフェースに依存しています。 は、オブジェクトが共通のフィールドを共有することを可能にするコンセプトです。インターフェイスは、NerdGraphのクエリ例の多くに見られるように、特定のエンティティタイプのデータを提供するために使用されます。
エンティティの削除
NerdGraph API を使用して、アカウント内のエンティティを手動で削除することができます。そのためには、 NerdGraph GraphiQL explorer で、エンティティのGUIDを使ってこのクエリを実行してください。
mutation { entityDelete(guids: ["EntityGuid"]) { deletedEntities failures }}
重要
現在、Nerdgraph APIを使用して削除できるのは、 APM-APPLICATION
、 EXT-SERVICE
、およびREF-REPOSITORY
のエンティティタイプのみです。
削除されたエンティティがNew Relicエージェントによって再びインデックスされると、UIに表示されることがあります。