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

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

문제 신고

NerdGraph 튜토리얼: 신호 손실 및 갭 채우기

NerdGraph API 를 사용하여 New Relic 경고 손실 신호 감지 및 갭 채우기를 사용자 정의할 수 있습니다. 예를 들어 신호 손실을 고려하기 전에 기다려야 하는 시간이나 시계열의 간격을 채우는 데 사용해야 하는 값을 구성할 수 있습니다.

New Relic이 잠시 동안 데이터 수신을 중단하면 신호 손실이 발생합니다. 기술적으로 우리는 데이터가 시계열에서 마지막으로 수신된 이후 상당한 시간이 경과한 후에 신호 손실을 감지합니다. 신호 손실은 알림을 설정하는 데 사용할 수 있는 사고를 트리거하거나 해결하는 데 사용할 수 있습니다.

갭 채우기는 데이터 포인트 손실로 인한 문제를 해결하는 데 도움이 될 수 있습니다. 유효한 데이터 포인트 사이에 간격이 감지되면 마지막으로 알려진 값이나 정적 값과 같은 대체 값으로 해당 간격을 자동으로 채웁니다. 간격 채우기는 경고가 트리거되거나 해결되지 않아야 할 때 해결되는 것을 방지할 수 있습니다.

시스템은 적극적으로 보고된 신호의 공백을 채웁니다. 이 신호 기록은 2시간 동안 활동이 없으면 삭제됩니다. 간격 채우기의 경우 이 비활성 기간 이후에 수신된 데이터 포인트는 새로운 신호로 처리됩니다.

신호 손실, 갭 채우기 및 이러한 기능에 대한 액세스 요청 방법에 대해 자세히 알아보려면 이 지원 포럼 게시물 을 참조하십시오.

이 가이드에서는 다음을 다룹니다.

신호 손실 감지 사용자 지정

신호 손실 감지는 특정 시간 이후에 데이터가 수신되지 않으면 인시던트를 열거나 닫습니다. 예를 들어 만료 기간을 60초로 설정하고 통합이 1분 이상 데이터를 전송하지 않는 것으로 보이면 신호 손실 임계값이 트리거됩니다.

NerdGraph에서 다음 세 필드를 사용하여 신호 손실 기간과 인시던트를 열지 또는 닫을지 여부를 구성할 수 있습니다.

  • expiration.expirationDuration: 신호가 손실된 것으로 간주하기 전에 플랫폼에서 마지막 데이터 포인트를 수신한 후 대기하는 시간(초)입니다. 이는 데이터 타임스탬프가 아닌 데이터가 당사 플랫폼에 도착한 시간을 기반으로 합니다. 기본값은 이 null을 유지하는 것이므로 신호 손실 감지가 활성화되지 않습니다.
  • expiration.openViolationOnExpiration: true 인 경우 신호가 손실되면 새로운 인시던트가 열립니다. 기본값은 false 입니다. 이 필드를 사용하려면 기간을 지정해야 합니다.
  • expiration.closeViolationsOnExpiration: true 인 경우 신호와 관련된 열린 인시던트가 만료 시 닫힙니다. 기본값은 false 입니다. 이 필드를 사용하려면 기간을 지정해야 합니다.

신호가 끊어질 것으로 예상될 때는 인지던트를 열지 않도록 설정할 수도 있습니다. 이를 위해 NerdGraph에서 다음 필드를 사용하세요.

  • expiration.ignoreOnExpectedTermination: true 인 경우 신호가 끊어질 것으로 예상되면 인시던트가 열리지 않습니다. 신호가 손실될 것으로 예상됨을 나타내려면 엔터티에 태그 termination: expected 이 있어야 합니다. 기본값은 false 입니다. 인프라 호스트 엔터티의 경우 태그 hostStatus: shutdown 은 신호가 중지될 것으로 예상되어 인시던트가 발생하지 않을 것임을 나타냅니다.

기존 조건에 대한 신호 손실 설정 보기

기존 NRQL 조건에는 이미 구성된 신호 손실 설정이 있을 수 있습니다. 기존 조건 설정을 보려면 nrqlCondition > expiration 에서 필드를 선택합니다.

{
actor {
account(id: YOUR_ACCOUNT_ID) {
alerts {
nrqlCondition(id: NRQL_CONDITION_ID) {
... on AlertsNrqlStaticCondition {
id
name
nrql {
query
}
expiration {
closeViolationsOnExpiration
expirationDuration
openViolationOnExpiration
ignoreOnExpectedTermination
}
}
}
}
}
}
}

다음과 같은 결과가 표시되어야 합니다.

{
"data": {
"actor": {
"account": {
"alerts": {
"nrqlCondition": {
"expiration": {
"closeViolationsOnExpiration": false,
"expirationDuration": 300,
"openViolationOnExpiration": true,
"ignoreOnExpectedTermination": false
},
"id": "YOUR_ACCOUNT_ID",
"name": "Any less than - Extrapolation",
"nrql": {
"query": "SELECT average(value) FROM AlertsSmokeTestSignals WHERE wave_type IN ('min-max', 'single-gap') FACET wave_type"
}
}
}
}
}
},
...

신호 설정 손실로 새 조건 만들기

2분 동안 데이터가 수신되지 않으면 신호 임계값 손실을 트리거하는 NRQL 정적 조건을 새로 생성한다고 가정해 보겠습니다. 아래 예와 같이 expirationDuration 120초로 설정하고 openViolationOnExpiration true 로 설정합니다.

mutation {
alertsNrqlConditionStaticCreate(
accountId: YOUR_ACCOUNT_ID
policyId: YOUR_POLICY_ID
condition: {
name: "Low Host Count - Catastrophic"
enabled: true
nrql: {
query: "SELECT uniqueCount(host) FROM Transaction WHERE appName='my-app-name'"
}
signal {
aggregationWindow: 60
aggregationMethod: EVENT_FLOW
aggregationDelay: 120
}
terms: [{
threshold: 2
thresholdOccurrences: AT_LEAST_ONCE
thresholdDuration: 600
operator: BELOW
priority: CRITICAL
}]
valueFunction: SINGLE_VALUE
violationTimeLimitSeconds: 86400
expiration: {
expirationDuration: 120
openViolationOnExpiration: true
}
}
) {
id
name
}
}

조건의 신호 손실 설정 업데이트

경보 조건에 대한 신호 매개변수의 손실을 업데이트하려면 어떻게 합니까? 다음 변형을 사용하면 NRQL 정적 조건 을 새 expiration 값으로 업데이트할 수 있습니다.

mutation {
alertsNrqlConditionStaticUpdate(
accountId: YOUR_ACCOUNT_ID
id: YOUR_STATIC_CONDITION_ID
condition: {
expiration: {
closeViolationsOnExpiration: true
expirationDuration: 300
openViolationOnExpiration: false
ignoreOnExpectedTermination: true
}
}
) {
id
expiration {
closeViolationsOnExpiration
expirationDuration
openViolationOnExpiration
ignoreOneExpectedTermination
}
}
}

간격 채우기 사용자 정의

간격 채우기는 시계열의 간격 값을 마지막으로 찾은 값이나 선택한 정적 임의 값으로 바꿉니다. 신호의 갭(데이터 수신이 복원된 후) 후에 다른 데이터 포인트가 수신된 후에만 갭을 채웁니다.

유형이 정적으로 설정된 경우 채우기 유형과 값을 모두 구성할 수 있습니다.

  • signal.fillOption: 손실된 데이터 포인트의 대체 값 유형입니다. 값은 다음과 같을 수 있습니다.

    • NONE: 공백 채우기가 비활성화됩니다.
    • LAST_VALUE: 시계열에서 볼 수 있는 마지막 값입니다.
    • STATIC: fillValue 에 정의된 임의의 값입니다.
  • signal.fillValue: fillOptionSTATIC 로 설정된 경우 손실된 데이터 포인트를 교체하는 데 사용할 값입니다.

중요

간격 채우기는 expiration.expirationDuration 의 영향도 받습니다. 간격이 만료 기간보다 길면 신호가 만료된 것으로 간주되어 간격이 더 이상 채워지지 않습니다.

예를 들어, 간격 채우기가 구성된 정적 NRQL 조건을 만드는 방법은 다음과 같습니다.

mutation {
alertsNrqlConditionStaticCreate(
accountId: YOUR_ACCOUNT_ID
policyId: YOUR_POLICY_ID
condition: {
enabled: true
name: "Example Gap Filling Condition"
nrql: { query: "SELECT count(*) FROM Transaction" }
terms: {
operator: ABOVE
priority: CRITICAL
threshold: 1000
thresholdDuration: 300
thresholdOccurrences: ALL
}
valueFunction: SINGLE_VALUE
violationTimeLimitSeconds: 28800
signal: {
aggregationWindow: 60
aggregationMethod: EVENT_FLOW
aggregationDelay: 120
fillOption: STATIC
fillValue: 1
}
}
) {
id
}
}