• 로그인지금 시작하세요

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

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

문제 신고

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

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

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

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

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

신호 손실, 간격 채우기 및 이러한 기능에 대한 액세스를 요청하는 방법에 대해 자세히 알아보려면 이 Explorers Hub 게시물 을 참조하세요.

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

신호 손실 감지 사용자 지정

신호 손실 감지는 일정 시간이 지난 후에도 데이터가 수신되지 않으면 위반을 열거나 닫습니다. 예를 들어 만료 기간을 60초로 설정하고 통합이 1분 이상 데이터를 보내지 않는 것 같으면 신호 손실 위반이 트리거됩니다.

NerdGraph에서 다음 세 필드를 사용하여 신호 손실 기간과 위반을 열거나 닫을지 여부를 구성할 수 있습니다.

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

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

기존 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
            }
          }
        }
      }
    }
  }
}

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

{
  "data": {
    "actor": {
      "account": {
        "alerts": {
          "nrqlCondition": {
            "expiration": {
              "closeViolationsOnExpiration": false,
              "expirationDuration": 300,
              "openViolationOnExpiration": true
            },
            "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초로 설정하고 openViolationOnExpirationtrue 로 설정합니다.

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: BOOLEAN
        expirationDuration: DURATION_IN_SECONDS
        openViolationOnExpiration: BOOLEAN
      }
    }
  ) {
    id
    expiration {
      closeViolationsOnExpiration
      expirationDuration
      openViolationOnExpiration
    }
  }
}

간격 채우기 사용자 정의

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

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

  • 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
  }
}
Copyright © 2022 New Relic Inc.