---
title: "Grafana Alert を Terraform で作成する | grasys blog"
url: "https://blog.grasys.io/post/kyuita/grafana-alert-terraform/"
description: "こんにちは、kyuitaです。 Terraformのアラートルールは普段Yamlファイルで記述しているのですが、最近TerraformのGrafana Providerでアラートを作成することができることを知り実際に試してみたので、その手順を共有します。 grafana自体は既存の環境がある前提でTerraformか…"
---

# Grafana Alert を Terraform で作成する

-   ![](/_astro/noicon.CTHOhNiB_1HMs6A.webp)[kyuita](/authors/kyuita/)
-   公開日：2026年3月25日
-   カテゴリー：[Tech](/categories/tech/)
-   タグ：[#Grafana](/tags/grafana/)[#Terraform](/tags/terraform/)

![Grafana Alert を Terraform で作成する](/_astro/hero.CduA1QJ2_Vaqm2.webp)

こんにちは、kyuitaです。

Terraformのアラートルールは普段Yamlファイルで記述しているのですが、最近TerraformのGrafana Providerでアラートを作成することができることを知り実際に試してみたので、その手順を共有します。

grafana自体は既存の環境がある前提でTerraformからGrafanaにアラートルールを作成していきます。

## Grafana Service Accountとトークン

Terraform Providerで必要になるトークンを作成する。

Administration > Users and access > Service accounts > Create service accountと移動する。

![Grafana Service Accountとトークンの画面（1）](/_astro/01-image-ab3be09f.DitQve6C_2fxBr9.webp)

今回は名前をterraform、Roleを Admin にしておいて作成

![Grafana Service Accountとトークンの画面（2）](/_astro/02-image-1-c663b265.DFIDN9PY_1CzePr.webp)

Add service account tokenをクリックする。

![Grafana Service Accountとトークンの画面（3）](/_astro/03-image-2-dddd9c7c.mpTK39J5_ZhyzNK.webp)

![Grafana Service Accountとトークンの画面（4）](/_astro/04-image-3-31ce21a1.BArn-Lnt_Z2sPpwT.webp)

Generate tokenを押して作成されたトークンをメモしておく。

これで一旦Terraform providerに渡すトークンの準備は完了です。

## Terraform Providerの設定

Terraform Providerを利用することで、TerraformがGrafanaAPIを叩けるようになります。

Plain textcontent\_copy

```
provider.tf

terraform {
  required_providers {
    grafana = {
      source  = "grafana/grafana"
      version = ">= 4.0.0" 
    }
  }
}

provider "grafana" {
  url   = # grafanaダッシュボードのURL
  auth  = # 先ほどメモしたトークン値
}
```

## アラートルールの作成

### alert.tfファイルを作成

とりあえずCPU使用率90%を超えた場合のアラートを作成してみます

Plain textcontent\_copy

```
alert.tf

# アラートをまとめるフォルダ
resource "grafana_folder" "vmetrics_alerts" {
  title = "VictoriaMetrics Alerts"
}

# Grafana上で設定しているデータソース名
data "grafana_data_source" "vm" {
  name = "VictoriaMetrics" 
}

resource "grafana_rule_group" "memory_check" {
  name             = "VictoriaMetrics-Alerts"
  folder_uid       = grafana_folder.vmetrics_alerts.uid
  interval_seconds = 60

  rule {
    name           = "High Memory Usage"
    condition      = "C"
    for            = "5m"

    # --- データ取得 (A) ---
    data {
      ref_id         = "A"
      datasource_uid = data.grafana_data_source.vm.uid

      relative_time_range {
        from = 600
        to   = 0
      }

      model = jsonencode({
        datasourceUid = data.grafana_data_source.vm.uid
        expr          = "100 * (1 - node_memory_MemAvailable_bytes / node_memory_MemTotal_bytes)"
        refId         = "A"
      })
    }

    # --- データ加工: 直近値の取得 (B) ---
    data {
      ref_id         = "B"
      datasource_uid = "-100"

      relative_time_range {
        from = 0
        to   = 0
      }

      model = jsonencode({
        expression = "A"
        type       = "reduce"
        reducer    = "last"
      })
    }

    # --- 判定: しきい値チェック (C) ---
    data {
      ref_id         = "C"
      datasource_uid = "-100"

      relative_time_range {
        from = 0
        to   = 0
      }

      model = jsonencode({
        conditions = [{
          evaluator = {
            params = [90]
            type   = "gt"
          }
          operator = { type = "and" }
          query    = { params = ["B"] }
          type     = "query"
        }]
        type = "threshold"
      })
    }
  }
}
```

### terraform plan実行

Plain textcontent\_copy

```
$ terraform plan
data.grafana_data_source.vm: Reading...
data.grafana_data_source.vm: Read complete after 1s [id=1:xxxxxxxxx]

...

Plan: 2 to add, 0 to change, 0 to destroy.
```

この手順でTerraformを通して既存環境のGrafanaにアラートルールを作成することができました。

## 最後に

YAMLファイルに記述して変更する場合はGrafanaサーバーの再起動が必要だったのですが、Terraform の Grafana providerの場合はAPIを叩く方式のため変更のたびにGrafanaサーバーを再起動が不要となるのは便利に感じました。

Grafana Alertの管理方法に良いものがないか探していたのでこれから使用していってみてContact policyなどもTerraformで管理できるようなので既存環境からの移行など調べていきたいと思います。

## この記事を書いた人

[![](/_astro/noicon.CTHOhNiB_Z24aAgM.webp)](/authors/kyuita/)

### [kyuita](/authors/kyuita/)

kyuitaのプロフィールと執筆記事をご覧いただけます。

[プロフィールと記事一覧](/authors/kyuita/)
