12
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

DatadogAdvent Calendar 2022

Day 23

Datadog Downtimeを使ってDatadog monitorの閾値を特定の時間だけ変更してみた

Last updated at Posted at 2022-12-22

はじめに

皆さんこんにちはasmgです。今回は、Datadog monitorの閾値を特定の時間だけ変更するのにDatadog Downtime使うことで実現してみたいと思います。

Datadog monitorの閾値を特定時間だけ変えたくなった背景

あるサービスで特定時間に負荷がかかりalertが鳴り止まないという問題がありました。ただ、このalertは想定しているものなのでalertを飛ばしたくないという課題がありました。

Datadog Downtime使うことで実現

背景で述べた問題を解決するために、特定の時間だけ閾値を変更して必要なalertを飛ばすように実現しました。

今回は、Datadog Downtime使うことで実現する方法を検討して実現してみました。

  • 2種類の閾値以外は同じ設定のモニター(例 モニターA,B)用意する
  • Datadog Downtimeの機能を活用して下記のようにモニターAとBのダウンタイムをずらすことで特定の時間だけ閾値を変更することを実現する

Datadog Downtimeとは、設定した時間だけmonitorのalertと通知を無音にすることができる機能です。
ref:https://docs.datadoghq.com/ja/monitors/notify/downtimes/

イメージ図

空白の図 (9).png

terraform化

最後にDatadog monitorの閾値を特定の時間だけ変更する方法をterraformで実現してみました。

  • ディレクトリー構成
ファイル構造
├── service-monitor
│   ├── downtime.tf
│   └── monitor.tf
  • monitor.tf
monitor.tf
terraform {
  required_version = "= 0.14.11"

  required_providers {
    datadog = {
      source  = "DataDog/datadog"
      version = "3.3.0"
    }
  }
}

provider "datadog" {
  api_key = "{API_KEY}"
  app_key = "{APP_KEY}"
}

resource "datadog_monitor" "a-monitor" {
  name = "a-monitor"
  type = "metric alert"
  message = <<EOT
A alert
            EOT
  query = "{Queryを入れる}"
}

resource "datadog_monitor" "b-monitor" {
  name = "b-monitor"
  type = "metric alert"
  message = <<EOT
B alert
            EOT
  query = "{Queryを入れる}"
}
  • downtime.tf
downtime.tf
resource "datadog_downtime" "a-monitor-downtime" {
  scope = ["*"]
  #UTC Date
  start_date = "2022-12-21T02:00:00Z"
  end_date   = "2022-12-21T03:00:00Z"
  monitor_id = datadog_monitor.a-monitor.id
  timezone   = "Asia/Tokyo"
  recurrence {
    type   = "days"
    period = 1
  }
}

resource "datadog_downtime" "b-monitor-downtime" {
  scope = ["*"]
  #UTC Date
  start_date = "2022-12-21T03:00:00Z"
  end_date   = "2022-12-22T02:00:00Z"
  monitor_id = datadog_monitor.b-monitor.id
  timezone   = "Asia/Tokyo"
  recurrence {
    type   = "days"
    period = 1
  }
}

Datadog Downtime のstart_dateをterraformで設定する際、過去の時間を設定できません。
なので、設定する場合には、未来の時間を設定してください。

まとめ

Datadog downtimeを活用することで特定時間だけDatadog monitor自体を変更し、閾値を変更することができました。
Datadog monitorの閾値を特定時間だけ変更したいと思っている方の参考にしていただけると幸いです。

12
1
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
12
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?