New Relic을 사용하면 워크로드 라는 그룹으로 엔터티를 함께 그룹화할 수 있습니다. 이를 통해 팀이나 프로젝트에서 사용하는 전체 스택을 더 잘 모니터링할 수 있습니다.
여기에서 NerdGraph API 를 사용하여 워크로드 관련 작업을 수행하는 방법을 보여줍니다.
- 계정의 워크로드 가져오기
- 워크로드의 엔터티 목록 가져오기
- 워크로드 상태 가져오기
- 워크로드 생성
- 워크로드 수정
- 워크로드의 정적 상태 설정
- 워크로드에 대한 자동 상태 규칙 수정
- 워크로드 복제
- 워크로드 삭제
작업 부하에 표시되는 차트를 사용자 지정하는 방법에 대한 게시물 도 참조하십시오.
중요
CLI 및 Terraform 리소스 를 사용하여 이러한 작업을 자동화할 수도 있습니다.
계정의 워크로드 가져오기
계정의 모든 워크로드를 가져오려면 다음 GraphQL 쿼리 를 사용하고 id
필드를 통해 계정 ID를 전달합니다. 이 예에서는 세 가지 기본 필드를 검색합니다.
guid
: 워크로드 GUID.name
: 워크로드 이름.permalink
: New Relic UI의 영구 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
: New Relic UI의 워크로드 영구 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
: 규칙의 배열입니다. 기본 구성에서는 디지털 경험에 더 가까운 엔터티 유형(즉, 합성 모니터, 브라우저 응용 프로그램, 모바일 응용 프로그램 및 서비스)에 대해 네 가지 규칙이 설정됩니다. 이러한 각 그룹에 대해 비정상 상태가 롤업됩니다.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를 지정합니다.
워크로드를 삭제하면 모든 기록과 메타데이터도 삭제됩니다.