Terraform Mackerel Provider がサービスメトリック名の取得に対応しました ほか

こんにちは。Mackerel SRE チームの id:heleeen です。

Mackerel 用の Terraform Provider において、先日リリースした v0.0.7 からサービスメトリックの一覧取得がサポートされました。これによってサービスメトリック名を Mackerel から取得して監視設定ができます。

mackerelio-labs/mackerel | Terraform Registry

こちらは Mackerel アンバサダー でもある @fujiwara さんが Pull Request をくださいました。機能追加にあたりご協力いただいた @fujiwara さん、ありがとうございます!

mackerel_service_metric_names の使いかた

今回追加された mackerel_service_metric_names は冒頭で述べたとおり、サービスメトリックの一覧を取得するための機能です。name のみを指定するとそのサービスのサービスメトリック一覧を取得します。

data "mackerel_service_metric_names" "sample" {
  name = "sample"
}

prefix を合わせて指定すると前方一致での絞り込みが行なえます。

data "mackerel_service_metric_names" "sample" {
  name   = "sample"
  prefix = "service-metric-name.prefix"
}

これによりサービスメトリック名を一覧で取得でき、監視設定を複数のサービスメトリックへ設定しやすくなります。こちらが設定例です。

data "mackerel_service_metric_names" "sample" {
  name   = "sample"
  prefix = "service-metric-name.prefix"
}

resource "mackerel_monitor" "service_metrics" {
  for_each = data.mackerel_service_metric_names.sample.metric_names
  name     = format("%s is low", each.key)

  service_metric {
    service  = "sample"
    metric   = each.value
    operator = "<"
    duration = 1
    warning  = 5
    critical = 10
  }
}

これを terraform plan したときのイメージです。

An execution plan has been generated and is shown below.
Resource actions are indicated with the following symbols:
  + create

Terraform will perform the following actions:

  # mackerel_monitor.service_metrics["service-metric-name.prefix.one"] will be created
  + resource "mackerel_monitor" "service_metrics" {
      + id                    = (known after apply)
      + name                  = "service-metric-name.prefix.one is low"
      + notification_interval = 0

      + service_metric {
          + critical           = 10
          + duration           = 1
          + max_check_attempts = 1
          + metric             = "service-metric-name.prefix.one"
          + operator           = "<"
          + service            = "sample"
          + warning            = 5
        }
    }

  # mackerel_monitor.service_metrics["service-metric-name.prefix.the-other"] will be created
  + resource "mackerel_monitor" "service_metrics" {
      + id                    = (known after apply)
      + name                  = "service-metric-name.prefix.the-other is low"
      + notification_interval = 0

      + service_metric {
          + critical           = 10
          + duration           = 1
          + max_check_attempts = 1
          + metric             = "service-metric-name.prefix.the-other"
          + operator           = "<"
          + service            = "sample"
          + warning            = 5
        }
    }

サービスメトリックに対する監視がより少ない記述で設定できます。

MACKEREL_APIKEY に対応しました

これまで環境変数から API キーを指定する場合は MACKEREL_API_KEY のみに対応していましたが、mkr や mackerel-container-agent で利用されている MACKEREL_APIKEY も利用できるようになりました。
MACKEREL_APIKEYMACKEREL_API_KEY より優先されるため、MACKEREL_API_KEYMACKEREL_APIKEY に異なるオーガニゼーションのAPIキーを設定している場合は実行先が変わりますのでご留意いただけますと幸いです。

そのほか Terraform Mackerel Provider についての詳しい説明は ドキュメント をご参照ください。

困ったときは

Mackerel の Slack Workspace にてご連絡ください!

https://mackerel-ug-slackin.herokuapp.com/

ぜひご利用ください

以上、 Mackerel の Terraform Provider の新機能についてご案内させていただきました。IaC によるモニタリング管理にぜひお役立てください。