New Relic では、 ワークロードと呼ばれるグループにエンティティをまとめることができます。これにより、チームまたはプロジェクトで使用されるフルスタックをより適切に監視できるようになります。
ここでは、当社のNerdGraph API を使って、ワークロード関連の作業を行う方法をご紹介します。
- アカウントのワークロードの取得
- ワークロード内のエンティティのリストを取得
- ワークロードの状態を取得
- ワークロードの作成
- ワークロードの変更
- ワークロードに静的なステータスを設定
- ワークロードの自動ステータスルールの変更
- ワークロードを複製する
- ワークロードの削除
ワークロードで表示されるチャートをカスタマイズする方法に関する記事もご覧ください。
重要
CLIとTerraform リソースを使用して、これらのタスクを自動化することもできます。
アカウントのワークロードの取得
アカウントのすべてのワークロードを取得するには、次のGraphQLクエリを使用して、 idフィールドを介してアカウントIDを渡します。この例では、次の3つの基本フィールドを取得します。
guid:ワークロードGUID。name:ワークロード名。permalink:NewRelicUIの永続的なURL。
{ actor { entitySearch(query: "accountId = YOUR_ACCOUNT_ID and type = 'WORKLOAD'") { results { entities { guid name permalink } } } }}回答には、ワークロードごとにこのようなデータが含まれています。
{ "data": { "actor": { "entitySearch": { "results": { "entities": [ { "guid": "MTY...NTY", "name": "Acme Telco - Fulfillment Chain", "permalink": "https://one.newrelic.com/redirect/entity/MTY...NTY" }, ... ] } } } }, "extensions": { ... }}ワークロード内のエンティティのリストを取得
ワークロードGUID( guid )を引数として渡すだけで、次のクエリでワークロードに属するエンティティを取得できます。この例では、いくつかのワークロードメタデータも取得します。
accountId:ワークロードアカウント。name:ワークロード名。permalink:NewRelicUIのワークロードパーマネントURL。alertSeverity:ワークロードのステータス。この値には、最大10分の遅延があります。クエリ時間でワークロードステータスの計算を強制する場合は、ワークロードステータスの取得の例を使用してください。ネストされた
collection、members、およびresultsオブジェクト。これには、エンティティの実際のリストが含まれています。collectionオブジェクトのname引数は、値WORKLOADを取ります。count:ワークロード内のエンティティの数。
{ actor { entity(guid: "YOUR_WORKLOAD_GUID") { accountId name permalink ... on AlertableEntity { alertSeverity } ... on CollectionEntity { collection(name: "WORKLOAD") { members { count results { entities { accountId entityType name guid ... on AlertableEntityOutline { alertSeverity } } } } } } } }}このクエリは、次のようなエンティティのリストを返します。
{ "data": { "actor": { "entity": { "accountId": 1606862, "name": "Acme Telco - Ecommerce", "permalink": "https://one.newrelic.com/redirect/entity/MTYwNjg2MnxOUjF8V09SS0xPQUR8MTIyMzQ", "alertSeverity": "CRITICAL", "collection": { "members": { "count": 201, "results": { "entities": [ { "accountId": 1606862, "alertSeverity": "CRITICAL", "entityType": "APM_APPLICATION_ENTITY", "guid": "MTYwNjg2MnxBUE18QVBQTElDQVRJT058NDMxOTIwNTg", "name": "Fulfillment Service" }, { "accountId": 1606862, "alertSeverity": "NOT_ALERTING", "entityType": "INFRASTRUCTURE_HOST_ENTITY", "guid": "MTYwNjg2MnxJTkZSQXxOQXw3MDQzMzA2NzIyMjk2NDg4Mzc", "name": "ip-172-31-16-222" }, { "accountId": 1606862, "alertSeverity": "NOT_ALERTING", "entityType": "INFRASTRUCTURE_AWS_LAMBDA_FUNCTION_ENTITY", "guid": "MTYwNjg2MnxJTkZSQXxOQXw1MjMyNzM2ODgzNjAwNjYyMjE1", "name": "TelcoDT-purchase-log-lambda" }, ... ] } } } } } }}ワークロードの状態を取得
ワークロードのステータスの計算を強制する場合は、次のクエリを使用して、アカウントID( id )をaccountフィールドの引数として渡し、ワークロードGUID( guid )を次のように渡すことができます。 collectionフィールドの引数。
{ actor { entity(guid: "YOUR_WORKLOAD_GUID") { ... on WorkloadEntity { guid workloadStatus { statusValue } } } }}そして、このような回答が返ってきます。
{ "data": { "actor": { "entity": { "guid": "MTYwNjg2MnxOUjF8V09SS0xPQUR8MTIyMzQ", "workloadStatus": { "statusValue": "OPERATIONAL" } } } }}DISRUPTEDステータス値はCRITICALステータスの同義語であることに注意してください。
ワークロードの作成
以下は、 workloadCreateミューテーションクエリを使用してワークロードを作成するNerdGraph呼び出しの例です。
mutation { workloadCreate( accountId: NEW_WORKLOAD_ACCOUNT_ID, workload: { name: "NAME_OF_WORKLOAD", entityGuids: ["ENTITY_GUID_1", "ENTITY_GUID_2", ...], entitySearchQueries: [ { query: "(type = 'SERVICE') and tags.label.environment = 'production'" }, ... ], scopeAccounts: { accountIds: [NEW_RELIC_ACCOUNT_ID_1, NEW_RELIC_ACCOUNT_ID_2, ...] } } ) { guid }}この質問の一部について詳細を説明します。
account: ワークロード アカウント ID 。ワークロードはアカウント間で移動できないため、後でこの値を変更することはできません。name:ワークロードのわかりやすい名前の文字列。scopeAccounts: スコープ アカウントは、エンティティ データが取得されるアカウントです。スコープ アカウントは、ワークロード アカウントと同じ親アカウントまたはエンタープライズ パートナーシップの下のグループに属している必要があります。ワークロードのエンティティを定義するには、以下のオプションのいずれかまたは両方を使用できます。
entitySearchQueries: これにより、エンティティの配列を動的に生成できます。各クエリに名前は必要ありません。動的クエリの例を次に示します。(domain = 'INFRA' and type = 'HOST') and tags.label.environment = 'production'entityGuids:これは、ワークロードに含める特定のエンティティGUIDを選択するためのものです。
guid:これはワークロードguidを返します。 NerdGraphはスキーマスティッチングを提供するため、permalinkなどのワークロードに関するその他の詳細を取得できます。
ワークロードの変更
ワークロードを変更するには、 workloadUpdateミューテーションを使用します。ワークロードのguidを知っている必要があります。
ワークロードのアカウントは変更できません。
変更可能なフィールドについては、 ワークロードの作成 を参照してください。以下の追加ルールが適用されます。
entitySearchQueries:このフィールドには、保存されると予想されるすべてのクエリが含まれている必要があります。新しいクエリを追加する場合は、それをqueryフィールドに含め、クエリidを指定しないでください。既存のクエリを変更する場合は、そのクエリをqueryフィールドに含め、既存のidを入力します。既存のクエリを削除する場合は、そのidを含むクエリを追加しないでください。
workloadUpdateクエリの例を次に示します。
mutation { workloadUpdate( guid: "YOUR_WORKLOAD_GUID", workload: { name: "A new name for the workload", entityGuids: ["ENTITY_GUID_1", "ENTITY_GUID_2", ...], entitySearchQueries: [ { query: "(domain = 'INFRA' and type = 'HOST') and tags.label.environment = 'staging'" }, { id: AN_EXISTING_QUERY_ID, query: "(type = 'SERVICE') and tags.label.environment = 'staging'" }, ... ], scopeAccounts: { accountIds: [NEW_RELIC_ACCOUNT_ID_1, NEW_RELIC_ACCOUNT_ID_2, ...] } } ) { guid }}ワークロードに静的なステータスを設定
ワークロードに静的なステータスを設定することができ、自動ステータス計算よりも優先されます。
静的ステータスを設定するには、ワークロードのguidを知っており、次のフィールドを使用する必要があります。
enabled:ステータス値を伝達するには、このフィールドをtrueに設定することを忘れないでください。status:このワークロードに設定するステータス値。サポートされている値は、OPERATIONAL、DEGRADED、またはDISRUPTEDです。description:追加の詳細を提供するテキストフィールド。
mutation { workloadUpdate( guid: "YOUR_WORKLOAD_GUID" workload: { statusConfig: { static: { enabled: true status: DEGRADED description: "Game day. Expect some turbulence today between 8 and 9am PST." } } } ) { guid updatedAt status { value } }}ワークロードの自動ステータスルールの変更
ワークロードを作成するときは、 statusConfigオブジェクトを使用して、ワークロードのステータスを計算するために使用する自動ルールを定義できます。 rules配列を空のままにすると、ワークロードにルールが設定されません。
ただし、ワークロードを作成するときにstatusConfigオブジェクトを使用しない場合は、デフォルトで次のルールが追加されます。
{ "statusConfig": { "automatic": { "enabled": true, "rules": [ { "entitySearchQueries": [ { "query": "(domain = 'APM' and type = 'APPLICATION')" } ], "rollup": { "strategy": "WORST_STATUS_WINS", "thresholdType": null, "thresholdValue": null } }, { "entitySearchQueries": [ { "query": "(domain = 'MOBILE' and type = 'APPLICATION')" } ], "rollup": { "strategy": "WORST_STATUS_WINS", "thresholdType": null, "thresholdValue": null } }, { "entitySearchQueries": [ { "query": "(domain = 'BROWSER' and type = 'APPLICATION')" } ], "rollup": { "strategy": "WORST_STATUS_WINS", "thresholdType": null, "thresholdValue": null } }, { "entitySearchQueries": [ { "query": "(domain = 'SYNTH' and type = 'MONITOR')" } ], "rollup": { "strategy": "WORST_STATUS_WINS", "thresholdType": null, "thresholdValue": null } } ], "remainingEntitiesRule": { "rollup": { "groupBy": "ENTITY_TYPE", "strategy": "BEST_STATUS_WINS", "thresholdType": null, "thresholdValue": null } } } }}このようにして設定を読み取るのです。
enabled:このフィールドがtrueに設定されている場合、自動ステータス計算が有効になります。rules:ルールの配列。デフォルトの構成では、デジタルエクスペリエンスに近いエンティティタイプ(つまり、合成モニター、ブラウザーアプリケーション、モバイルアプリケーション、およびサービス)に対して4つのルールが設定されています。これらのグループのそれぞれについて、最も不健康な状態がロールアップされます。remainingEntitiesRule:これは、他のルールで評価されていないすべてのエンティティに適用されるルールです。デフォルトの構成では、残りのエンティティはエンティティタイプごとにグループ化され、各グループのステータスを最も健全なエンティティのステータスと一致させます。
これらのルールを変更する場合は、 workloadUpdateミューテーションを使用し、使用する完全に新しいstatusConfigオブジェクトを送信する必要があります。
statucConfig.automatic.enabledをfalseに設定することにより、構成を維持したまま自動ステータス計算を無効にできます。
または、空の配列を送信して、すべての自動通常ルールを削除することもできます。また、 remainingEntitiesRuleオブジェクトを追加しないだけで、残りのエンティティのルールを削除できます。
ワークロードを複製する
ワークロードを複製するには、最初にそのguidを知る必要があります。 workloadDuplicateミューテーションでは、パラメーターとして渡す必要があります。
accountId:新しいワークロードを作成するアカウント。sourceGuid:複製するワークロードのguid。workload.name:オプション。新しいワークロードの名前を指定できます。指定しない場合、新しいワークロードには、元のワークロードの名前に- Copyが追加されます。
ワークロードを複製した後は、 修正することができます 。
mutation { workloadDuplicate( accountId: NEW_WORKLOAD_ACCOUNT_ID sourceGuid: "ORIGINAL_WORKLOAD_GUID" workload: { name: "New workload" } ) { guid }}ワークロードの削除
ワークロードを削除するには、 workloadDeleteミューテーションを使用し、ワークロードGUIDを指定します。
ワークロードを削除すると、すべての履歴やメタデータも削除されます。