Terraform을 사용한 NewRelic 경고 설정
할 일
이번에는
newrelic_nrql_alert_condition
를 설정합니다.특히 막히는 것 같은 부분을 중점적으로 설명할 수 있으면 좋을까 생각합니다.
소스 코드
간단하게 terraform module화하고 있으므로, 필요한 분은 소스로부터 다운로드해 보세요.
terraform provider 정보
참고 URL
NewRelic의 prodiver에서는 다음이 필수 설정 항목입니다.
NEW_RELIC_ACCOUNT_ID
환경 변수로 대체 가능 NEW_RELIC_API_KEY
환경 변수로 대체 가능 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_condition
와 newrelic_infra_alert_condition
두 가지 리소스를 구분해야 했지만 이것이 있으면 1つのresouceで設定可能
입니다.또한 NRQL을 그대로 사용할 수 있으므로 기존 대시보드 설정에서
View query
에서 NRQL을 복사하여 붙여넣기만 하면 경고를 인코딩할 수 있습니다.참고 URL
APM의 Slow Query 경고를 설정해 봅니다.
where 절에 설정할 수 있는 연산자(NRQL)는 여기를 참조하십시오.
newrelic_nrql_alert_condition 의 설정 항목으로 어려운 곳
type
value_function
メトリクスがないところはデータなし
입니다 violation_time_limit
violation_time_limit_seconds
쪽이, terraform plan시에 DEPRECATED가 되어 있던, 문서의 실수? ? evaluation_offset
threshold_occurrences
all
: 모든 값이 임계 값을 초과했습니다 at_least_once
: 하나 이상의 값이 임계 값을 초과합니다 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
설정도 확인Reference
이 문제에 관하여(Terraform을 사용한 NewRelic 경고 설정), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/fnaoto/items/7be13c9f23e0d5ff2c43텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)