New Relic では、NerdGraphスコアカードGraphQL ミューテーションを使用してスコアカードとルールを管理できます。 これらのミューテーションにより、既存のワークフローおよびインテグレーションでスコアカードとそれに関連するルールを作成、更新、削除、取得できます。
このチュートリアルでは、NerdGraphを使用してスコアカードとルールを管理する方法の例を紹介します。これらの例を使用して、スコアカードの作成、ルールの追加、スコアカードの詳細の更新などのスコアカード管理タスクを自動化できます。Scorecardsを管理するためのカスタム権限を設定する必要がある場合は、Scorecardsのカスタムロールの作成を参照してください。
変異
New Relic は、スコアカードと関連ルールを作成および管理するためのさまざまな NerdGraph ミューテーションを提供します。
スコアカードのルールをマチュリティレベルに整理し、各ルールに重みを付けることもできます。APIでは、マチュリティレベルはprogress levelsと呼ばれます:
- Scorecardは、
progressLevelsフィールドでその成熟度レベルを定義します。カスタム(デフォルトではない)レベルの作成はAPIを介してのみ可能です。成熟度レベルの作成または更新を参照してください。 - ルールは
progressLevelフィールドを使用してレベルに割り当てられます。このフィールドは、スコアカードのプログレスレベルのいずれかのidを取ります。 - Scorecardの加重平均スコアにおけるルールの重みは、
impactWeightフィールドで設定されます。重み付けの仕組みについては、加重スコアリングを参照してください。
スコアカードとルールを管理するには、組織 ID を提供する必要があります。actorクエリを使用して組織 ID を取得できます。
サンプルリクエスト
query FetchYourOrgId { actor { organization { id } }}entityManagementCreateScorecardミューテーションを使用して独自のスコアカードを作成できます。
入力
パラメータ | データタイプ | 必須ですか? | 説明 |
|---|---|---|---|
| 弦 | はい | スコアカードの名前。 |
| 弦 | いいえ | スコアカードの簡単な説明。 |
| 弦 | はい | 組織 ID。 |
|
| いいえ | このスコアカードの成熟度(進捗)レベル。フィールドの詳細については、 をご覧ください。 |
サンプルリクエスト
mutation CreateScorecard( $name: String! $desc: String $organizationId: ID! $progressLevels: [EntityManagementProgressLevelDefinitionCreateInput!]) { entityManagementCreateScorecard( scorecardEntity: { description: $desc name: $name scope: { type: ORGANIZATION, id: $organizationId } progressLevels: $progressLevels } ) { entity { id progressLevels { id name } rules { id } } }}// PARAMETERS{ "description": "Test test Best Practices", "name": "Test Engineering Best Practices", "organizationId": "xxxxxxxx-yyyy-0000-aaaa-0123456789qwe", "progressLevels": [ { "id": "BASIC", "name": "Basic", "description": "Minimum operational standard", "hexColorCode": "#9C5D00" }, { "id": "INTERMEDIATE", "name": "Intermediate", "description": "Expected standard for mature services", "hexColorCode": "#0E7C7B" }, { "id": "ADVANCED", "name": "Advanced", "description": "Excellence and optimization", "hexColorCode": "#11845C" } ]}このprogressLevelsフィールドはオプションです。デフォルトのBASIC、INTERMEDIATE、およびADVANCEDレベルは、UIでスコアカードを作成する場合にのみ追加されます。APIを介して作成する場合は、progressLevelsを使用してその成熟度レベルを定義します。
カスタムレベルを追加したり、既存のスコアカードのレベルを変更したりするには、成熟度レベルの作成または更新をご覧ください。
成熟度レベルは、スコアカードのprogressLevelsによって定義されます。スコアカードを作成するときに設定するか、後でentityManagementUpdateScorecardミューテーションを使用して更新します。
UIはデフォルトの3つのみをサポートしているため、カスタムレベルを作成する(4番目のレベルを追加したり、デフォルトの名前を変更したりするなど)唯一の方法はAPIです。
既存のスコアカードに新しいマチュリティレベルを追加するには:
現在のレベルを取得するには、Scorecard読み取りクエリを実行します。
完全な
progressLevels配列を使用してentityManagementUpdateScorecardミューテーションを呼び出します。保持したい既存のレベルと、新しいレベルを必ず含めてください。重要
updateミューテーションは、スコアカードのレベルのセット全体を置き換えます。配列から除外したレベルは完全に削除されます。
留意事項:
制限:スコアカードは1~5レベルを持つことができます。
階層: 配列の順序により、最も低い成熟度から最も高い成熟度までの階層が設定されます。
progressLevels配列の各アイテムは、次のフィールドを受け入れます。入力
パラメータ
データ型
それは必須ですか?
説明
id弦
はい
ルールの
progressLevelによって参照される、レベルの安定した識別子です。デフォルトのレベルでは、
BASIC、
INTERMEDIATE、および
ADVANCEDを使用します。カスタムレベルの場合は、たとえば
EXPERTのように独自に定義できます。
name弦
はい
Basicなどの、レベルの表示名。
description弦
いいえ
ユーザー向けのレベルの説明。
hexColorCode弦
いいえ
#11845Cなど、UIでレベルを表すために使用される16進カラーコード。
サンプルリクエスト
mutation UpdateScorecardProgressLevels($id: ID!$name: String!$description: String!$progressLevels: [EntityManagementProgressLevelDefinitionUpdateInput!]) {entityManagementUpdateScorecard(id: $idscorecardEntity: {name: $namedescription: $descriptionprogressLevels: $progressLevels}) {entity {idprogressLevels {idnamedescriptionhexColorCode}}}}// PARAMETERS{"id": "SCORECARD_ID","name": "Test Engineering Best Practices","description": "Test test Best Practices","progressLevels": [{"id": "BASIC","name": "Basic","description": "Minimum operational standard","hexColorCode": "#9C5D00"},{"id": "INTERMEDIATE","name": "Intermediate","description": "Expected standard for mature services","hexColorCode": "#0E7C7B"},{"id": "ADVANCED","name": "Advanced","description": "Excellence and optimization","hexColorCode": "#11845C"},{"id": "EXPERT","name": "Expert","description": "A custom level beyond the defaults","hexColorCode": "#005054"}]}
entityManagementCreateScorecardRuleミューテーションを使用して、スコアカードの新しいルールを作成できます。
入力
パラメータ | データタイプ | 必須ですか? | 説明 |
|---|---|---|---|
| 弦 | はい | ルールの名前。 |
| 弦 | いいえ | ルールの簡単な説明。 |
| 弦 | はい | コンプライアンスを評価するための NRQL クエリ。 |
| Int | はい | ルールがクエリを実行するアカウント ID のリスト。 |
| Int | いいえ | クエリが実行される各アカウントと結合する必要があるアカウント ID のリスト。 |
| 文字列 (ID) | はい | 組織 ID。取得方法については、上記の 参照してください。 |
| ID | いいえ | このルールが属する成熟度(進行状況)レベルの
(
など)。スコアカードの
のいずれかと一致する必要があります — 定義するには、 を参照してください。 |
| Int | いいえ | スコアカードの加重平均スコアにおけるルールの重みです。
から
までの整数(デフォルトは
)です。 をご覧ください。 |
| Int | いいえ | ルールが実行される頻度(分単位)です。許可される値:
(1時間)、
(6時間)、
(12時間)、および
(1日)。 |
サンプルリクエスト
mutation CreateRule( $name: String! $description: String $query: String! $accounts: [Int!]! $joinAccounts: [Int!] $organizationId: ID! $progressLevel: ID $impactWeight: Int $runInterval: Int) { entityManagementCreateScorecardRule( scorecardRuleEntity: { name: $name description: $description enabled: true progressLevel: $progressLevel impactWeight: $impactWeight runInterval: $runInterval nrqlEngine: { accounts: $accounts joinAccounts: $joinAccounts query: $query } scope: { id: $organizationId, type: ORGANIZATION } } ) { entity { id # RULE Id } }}// PARAMETERS{ "name": "APM Services Have Alerts Defined", "description": "Check that APM services have alerts associated with them", "accounts": [1, 2, 3], "query": "SELECT if(latest(alertSeverity) != 'NOT_CONFIGURED', 1, 0) AS 'score' FROM Entity WHERE type = 'APM-APPLICATION' AND tags.nr.team IS NOT NULL AND tags.environment IS NOT NULL FACET id AS 'entityGuid', tags.nr.team AS 'team', tags.environment AS 'environment' LIMIT MAX SINCE 1 day ago", "organizationId": "xxxxxxxx-yyyy-0000-aaaa-0123456789qwe", "progressLevel": "BASIC", "impactWeight": 2, "runInterval": 1440}entityManagementAddCollectionMembersミューテーションを使用して、スコアカードにルールを関連付けることができます。
入力
パラメータ | データタイプ | 必須ですか? | 説明 |
|---|---|---|---|
| 弦 | はい | ルールを追加するスコアカードの ID。 |
| 弦 | はい | スコアカードに追加するルール ID のリスト。 |
サンプルリクエスト
mutation AddRuleToCollection($collectionId: ID!, $rules: [ID!]!) { entityManagementAddCollectionMembers(collectionId: $collectionId, ids: $rules)}// PARAMETERS{ "collectionId": "", // Collection ID is from the rule.id from scorecard entity "rules": [] // Provide list of all rule ids which are generated during rule creation.}entityManagementUpdateScorecardミューテーションを使用して、既存のスコアカードの詳細を更新できます。
入力
パラメータ | データタイプ | 必須ですか? | 説明 |
|---|---|---|---|
| 弦 | はい | スコアカードの一意の識別子。 |
| 弦 | いいえ | スコアカードの説明を更新しました。 |
| 弦 | はい | スコアカードの名前が更新されました。 |
サンプルリクエスト
mutation UpdateScorecard($id: ID!, $description: String, $name: String!) { entityManagementUpdateScorecard( id: $id scorecardEntity: { description: $description, name: $name } ) { entity { name id rules { id } } }}entityManagementUpdateScorecardRuleミューテーションを使用してスコアカードのルールを更新できます。
入力
パラメータ | データタイプ | 必須ですか? | 説明 |
|---|---|---|---|
| ID | はい | ルールの一意の識別子。 |
| 弦 | はい | ルールの名前。 |
| 弦 | いいえ | ルールの簡単な説明。 |
| 弦 | はい | コンプライアンスを評価するための NRQL クエリ。 |
| Int | はい | ルールがクエリを実行するアカウント ID のリスト。 |
| Int | いいえ | クエリが実行される各アカウントと結合する必要があるアカウント ID のリスト。 |
| ブール値 | いいえ | ルールを有効または無効にします。 |
| ID | いいえ | このルールが属する成熟度(進行状況)レベルの
(
など)。スコアカードの
のいずれかと一致する必要があります — 定義するには、 を参照してください。 |
| Int | いいえ | スコアカードの加重平均スコアにおけるルールの重みです。
から
までの整数(デフォルトは
)です。 をご覧ください。 |
| Int | いいえ | ルールが実行される頻度(分単位)です。許可される値:
(1時間)、
(6時間)、
(12時間)、および
(1日)。 |
サンプルリクエスト
mutation UpdateRule( $ruleId: ID! $name: String! $description: String $query: String! $queryAccounts: [Int!]! $joinAccounts: [Int!] $enabled: Boolean $progressLevel: ID $impactWeight: Int $runInterval: Int) { entityManagementUpdateScorecardRule( id: $ruleId scorecardRuleEntity: { description: $description name: $name enabled: $enabled progressLevel: $progressLevel impactWeight: $impactWeight runInterval: $runInterval nrqlEngine: { accounts: $queryAccounts joinAccounts: $joinAccounts query: $query } } ) { entity { id name description progressLevel impactWeight nrqlEngine { accounts joinAccounts query } } }}entityManagementDeleteミューテーションを使用して、既存のスコアカードまたはルールを削除できます。
入力
パラメータ | データタイプ | 必須ですか? | 説明 |
|---|---|---|---|
| ID | はい | ターゲット 削除するスコアカードまたはルール ID。 |
サンプルリクエスト
mutation DeleteEntity($id: ID!) { entityManagementDelete(id: $id) { id }}スコアカードの NerdGraph クエリ
FetchScorecardDetailsクエリを使用して、特定のスコアカードに関連付けられているすべてのルールを取得できます。
入力
パラメータ | データタイプ | 必須ですか? | 説明 |
|---|---|---|---|
| 弦 | はい | ルールを取得するためのスコアカードの ID。 |
サンプルリクエスト
query FetchScorecardDetails($scorecardId: ID!) { actor { entityManagement { entity(id: $scorecardId) { ... on EntityManagementScorecardEntity { name description progressLevels { id name description hexColorCode } rules { id } } } } }}FetchRulesCollection クエリ
FetchRulesCollectionクエリを使用してコレクションの詳細を取得できます。このクエリには、 FetchScorecardDetails応答から取得したルール ID が必要です。
入力
パラメータ | データタイプ | 必須ですか? | 説明 |
|---|---|---|---|
| 弦 | はい | 応答から取得された ID。 |
サンプルリクエスト
query FetchRulesCollection($rulesId: ID!) { actor { entityManagement { collectionElements(filter: { collectionId: { eq: $rulesId } }) { items { ... on EntityManagementScorecardRuleEntity { id name progressLevel impactWeight nrqlEngine { accounts joinAccounts query } } } nextCursor } } }}