Terraform을 사용한 NewRelic 경고 설정

14590 단어 NewRelicTerraform

할 일



이번에는 newrelic_nrql_alert_condition를 설정합니다.
특히 막히는 것 같은 부분을 중점적으로 설명할 수 있으면 좋을까 생각합니다.

소스 코드



간단하게 terraform module화하고 있으므로, 필요한 분은 소스로부터 다운로드해 보세요.
  • htps : // 기주 b. 코 m / f 나오토 / 사 mp ぇ ㅎㅎ

  • terraform provider 정보



    참고 URL
  • htps : // 레기 스트리. 테라후 rm. 이오 / p 로즈 rs / 네 w 레 ぃ c / 네 w 레 ぃ c / 아 st / 두 cs

  • NewRelic의 prodiver에서는 다음이 필수 설정 항목입니다.
  • account_id (계정 ID)
  • NEW_RELIC_ACCOUNT_ID 환경 변수로 대체 가능

  • api_key (API 키)
  • NEW_RELIC_API_KEY 환경 변수로 대체 가능
  • NRAK로 시작하는 키

  • region (지역)
  • US 또는 EU

  • 
    provider "newrelic" {
      account_id = "<Your Account ID>"
      api_key = "<Your Personal API Key>"    # usually prefixed with 'NRAK'
      region = "US"                          # Valid regions are US and EU
    }
    
    newrelic_insights_event 이외는 기본적으로 api_key 설정에서 OK입니다.

    newrelic_nrql_alert_condition 정보



    이를 통해 NRQL을 사용하여 확인할 수 있는 지표라면 대부분의 경고를 설정할 수 있습니다.
    참고로 newrelic_alert_policy (policy)에 대해 여러 경고를 설정할 수 있습니다.

    이것의 무엇이 기쁘다면,
    지금까지 APM과 Infrastructure에 대한 경고를 설정할 때는 newrelic_alert_conditionnewrelic_infra_alert_condition 두 가지 리소스를 구분해야 했지만 이것이 있으면 1つのresouceで設定可能입니다.
    또한 NRQL을 그대로 사용할 수 있으므로 기존 대시보드 설정에서 View query에서 NRQL을 복사하여 붙여넣기만 하면 경고를 인코딩할 수 있습니다.



    참고 URL
  • htps : // 레기 스트리. 테라후 rm. 이오 / p 로즈 rs / 네 w 레 ぃ c / 네 w 레 ぃ c / 아 st / 두 cs / 레소 r s / rql_ 아 rt_ 안녕 치온

  • APM의 Slow Query 경고를 설정해 봅니다.



    where 절에 설정할 수 있는 연산자(NRQL)는 여기를 참조하십시오.
  • htps : // / cs. 네 w레 c. 이. jp / ds cs / kue ry - r-data / rql-ne w-re-c-kue ry-pangugae / ged ts rd / rql-sy nx-c Use s-fu c chion s # se l-u

  • newrelic_nrql_alert_condition 의 설정 항목으로 어려운 곳
  • type
  • 아마 어떤 조건에서 경고 설정을 할 것인가?
  • 참고: htps : // / cs. 네 w ぃ c. 코 m / 드 cs / 아 rts / 네 w-re c- 아 rts /

  • baseline과 outliner도 설정할 수 있지만 일반 경고라면 static으로 OK

  • value_function
  • single_value 와 sum 가 설정 가능, 아마 메트릭스의 집계 방법
  • single_value이면 합계 값이 아니므로 メトリクスがないところはデータなし입니다
  • .


  • violation_time_limit
  • 이 시간을 설정하면 경보 발생 후 시간 경과 후 무언가의 자동 설정이 가능
  • 덧붙여서, Terraform의 문서에는 DEPRECATED라고 쓰고 있었지만, violation_time_limit_seconds 쪽이, terraform plan시에 DEPRECATED가 되어 있던, 문서의 실수? ?

  • nrql -> evaluation_offset
  • 잘 모르겠지만 3 분으로 유지
  • 그래프를 표시할 때 사용하는 설정?
  • NRQL에 설정된 쿼리 시작 시간? ?

  • critical/warning -> threshold_occurrences
  • 임계 값을 초과하는 값을 평가하는 방법
  • all : 모든 값이 임계 값을 초과했습니다
  • at_least_once : 하나 이상의 값이 임계 값을 초과합니다

  • value_function에서 sum을 선택한 경우 at_least_once 만 구성 가능


  • module 샘플

    modules/nrql_alert/main.tf
    
    resource "newrelic_alert_policy" "alert" {
      name = var.name
    }
    
    resource "newrelic_nrql_alert_condition" "alert" {
      policy_id            = newrelic_alert_policy.alert.id
      type                 = var.type
      name                 = var.name
      value_function       = var.value_function
      violation_time_limit = var.violation_time_limit
    
      nrql {
        query             = var.query
        evaluation_offset = var.evaluation_offset
      }
    
      dynamic "critical" {
        for_each = var.critical
        content {
          operator              = critical.value.operator
          threshold             = critical.value.threshold
          threshold_duration    = critical.value.threshold_duration
          threshold_occurrences = critical.value.threshold_occurrences
        }
      }
    
      dynamic "warning" {
        for_each = var.warning
        content {
          operator              = warning.value.operator
          threshold             = warning.value.threshold
          threshold_duration    = warning.value.threshold_duration
          threshold_occurrences = warning.value.threshold_occurrences
        }
      }
    }
    

    modules/nrql_alert/variables.tf
    
    variable "name" {
      type = string
    }
    
    variable "type" {
      type = string
    }
    
    variable "value_function" {
      type = string
    }
    
    variable "violation_time_limit" {
      type    = string
      default = "ONE_HOUR"
    }
    
    variable "query" {
      type = string
    }
    
    variable "evaluation_offset" {
      type    = number
      default = 3
    }
    
    variable "critical" {
      type = list(any)
    }
    
    variable "warning" {
      type    = list(any)
      default = []
    }
    

    module 호출자 샘플

    newrelic_alert/nrql_alert_mysql_slow_query.tf
    
    module "nrql_alert_mysql_slow_query" {
      source         = "../modules/newrelic/nrql_alert"
      name           = "${local.name} slow query"
      type           = "static"
      value_function = "sum"
    
    # query
    ## ヒアドキュメントを使うとわかりやすいので、おすすめ
    ## apm_app_name はAPMの設定で付けている名前に変更する
    
      query = <<EOF
       SELECT average(apm.service.datastore.operation.duration) * 1000 
       FROM Metric 
       WHERE  (appName = '${var.apm_app_name}') 
       AND ((metricTimesliceName = 'Datastore/operation/MySQL/show' AND datastoreType = 'MySQL')) 
       FACET `metricTimesliceName`
    EOF
    
    # critical
    ## operator は閾値の下か上かどちらでアラートを出すか
    ## threshold_duration は秒単位なので、 300secで5分
    
      critical = [
        {
          operator              = "above"
          threshold             = 10
          threshold_duration    = 300
          threshold_occurrences = "at_least_once"
        }
      ]
    
      warning = [
        {
          operator              = "above"
          threshold             = 5
          threshold_duration    = 300
          threshold_occurrences = "at_least_once"
        }
      ]
    }
    
    

    알림을 확인하는 방법


    Alerts & AI -> Polices -> newrelic-sample-default slow query


    제대로 Preview chart가 표시되는지 확인


    Thresholds 설정도 확인

    좋은 웹페이지 즐겨찾기