• 로그인지금 시작하기

사용자의 편의를 위해 제공되는 기계 번역입니다.

영문본과 번역본이 일치하지 않는 경우 영문본이 우선합니다. 보다 자세한 내용은 이 페이지를 방문하시기 바랍니다.

문제 신고

NerdGraph 튜토리얼: 워크로드 보기 및 관리

New Relic을 사용하면 워크로드 라는 그룹으로 엔터티를 함께 그룹화할 수 있습니다. 이를 통해 팀이나 프로젝트에서 사용하는 전체 스택을 더 잘 모니터링할 수 있습니다.

여기에서 NerdGraph API 를 사용하여 워크로드 관련 작업을 수행하는 방법을 보여줍니다.

작업 부하에 표시되는 차트를 사용자 지정하는 방법에 대한 게시물 도 참조하십시오.

중요

CLITerraform 리소스 를 사용하여 이러한 작업을 자동화할 수도 있습니다.

계정의 워크로드 가져오기

계정의 모든 워크로드를 가져오려면 다음 GraphQL 쿼리 를 사용하고 id 필드를 통해 계정 ID를 전달합니다. 이 예에서는 세 가지 기본 필드를 검색합니다.

  • guid: 워크로드 GUID.
  • name: 워크로드 이름.
  • permalink: New Relic UI의 영구 URL.
{
  actor {
    account(id: YOUR_ACCOUNT_ID) {
      workload {
        collections {
          guid
          name
          permalink
        }
      }
    }
  }
}

응답에는 각 워크로드에 대한 다음 유형의 데이터가 포함됩니다.

{
"data": {
"actor": {
"account": {
"workload": {
"collections": [
...,
{
"guid": "MTY...NTY",
"name": "Acme Telco - Fulfillment Chain",
"permalink": "https://one.newrelic.com/redirect/entity/MTY...NTY"
},
...
]
}
}
}
},
"extensions": { ... }
}

워크로드의 엔터티 목록 가져오기

워크로드 GUID( guid )를 인수로 전달하면 다음 쿼리로 워크로드에 속하는 엔터티를 가져올 수 있습니다. 이 예에서는 일부 워크로드 메타데이터도 검색합니다.

  • accountId: 워크로드 계정.

  • name: 워크로드 이름.

  • permalink: New Relic UI의 워크로드 영구 URL입니다.

  • alertSeverity: 워크로드의 상태입니다. 이 값은 최대 10분 지연될 수 있습니다. 쿼리 시간에 워크로드 상태를 강제로 계산하려면 워크로드 상태 가져오기 예제를 사용하세요.

  • 항목의 실제 목록을 포함하는 중첩된 collection , membersresults 객체:

    • 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 {
    account(id: YOUR_ACCOUNT_ID) {
      workload {
        collection(guid: "YOUR_WORKLOAD_GUID") {
          guid
          status {
            value
          }
        }
      }
    }
  }
}

다음은 응답에서 얻을 수 있는 내용입니다.

{
"data": {
"actor": {
"account": {
"workload": {
"collection": {
"guid": "MTYwNjg2MnxOUjF8V09SS0xPQUR8MTIyMzQ",
"status": {
"value": "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: 규칙의 배열입니다. 기본 구성에서는 디지털 경험에 더 가까운 엔터티 유형(즉, 합성 모니터, 브라우저 응용 프로그램, 모바일 응용 프로그램 및 서비스)에 대해 네 가지 규칙이 설정됩니다. 이러한 각 그룹에 대해 비정상 상태가 롤업됩니다.
  • remainingEntitiesRule: 다른 규칙에서 평가되지 않은 모든 항목에 적용되는 규칙입니다. 기본 구성에서 나머지 엔터티는 엔터티 유형별로 그룹화되며 각 그룹의 상태가 가장 건강한 엔터티의 상태와 일치하도록 합니다.

이러한 규칙을 수정하려면 workloadUpdate 변형을 사용하고 사용하려는 완전한 새 statusConfig 객체를 보내야 합니다.

statucConfig.automatic.enabledfalse 로 설정하여 구성을 유지하면서 자동 상태 계산을 비활성화할 수 있습니다.

또는 빈 배열을 보내 모든 자동 일반 규칙을 삭제할 수 있습니다. 그리고 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를 지정합니다.

워크로드를 삭제하면 모든 기록과 메타데이터도 삭제됩니다.

Copyright © 2022 New Relic Inc.

This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.