Mackerel
Terraform
MackerelDay 15

terraform で Mackerel の監視ルールを管理する

More than 1 year has passed since last update.


はじめに

ここのところ terraform を使い AWS の構成を管理するようにしています。

コードで管理することで、PullRequestベースでレビューしあうことができ、かつリポジトリに過去の履歴が全て残るという点がすばらしいですね。

その分、コードに落す工数がかかってしまいますが。

今開発しているサービスでは Mackerel を監視に使用するつもりでいます。

Mackerel は go で書かれたライブラリがあり、簡単にAPIへのアクセスができます。

監視ルールも AWS と同じく terraform で管理できると良いな、と思い、terraform で Mackerel を管理する provider を作ってみました。


terraform-provider-mackerel


terraform-provider-mackerel とは

Hashicorp社が開発している terraform というツールのプラグインです。

このプラグインを使用することで terraform で Mackerel の設定を管理することができます。

https://github.com/kjmkznr/terraform-provider-mackerel


できること

現時点では以下のことができます。


  • ダッシュボードの管理

  • 監視ルールの管理


    • ホストメトリック

    • サービスメトリック

    • 外形




API が用意されていないロールの管理や、ユーザの管理、AWS Integrationなどはできません。


インストール方法

ソースからビルドする場合は make build とすれば実行ファイルが bin/terraform-provider-mackerel というファイル名で作られます。

govendor というツールをビルド時に使用していますので、あらかじめインストールしておく必要があります。

ビルド済みのファイルを使用する場合は、Releaseページからダウンロードすることができます。

terraform-provider-mackerel$PATH に含まれているディレクトリに配置するか、以下のような設定ファイルを作ることで terraform から認識されるようになります。


  • ~/.terraformrc

providers {

mackerel = "/path/to/terraform-provider-mackerel"
}


使い方

mackerel.tf

provider "mackerel" {

apikey = "xxxx"
}

resource "mackerel_dashboard" "foobar" {
title = "terraform_for_mackerel_test_foobar"
url_path = "foo/bar"
body_markdown = <<EOF
# Head1
## Head2

* List1
* List2
EOF
}

resource "mackerel_host_monitor" "cpu" {
name = "CPU"
duration = 10
metric = "cpu%"
operator = ">"
warning = 85.5
critical = 95.5
notification_interval = 10
}

$ terraform plan


+ mackerel_dashboard.foobar
body_markdown: "# Head1\n## Head2\n\n* List1\n* List2\n"
title: "terraform_for_mackerel_test_foobar"
url_path: "foo/bar"

+ mackerel_host_monitor.cpu
critical: "95.5"
duration: "10"
metric: "cpu%"
name: "CPU"
notification_interval: "10"
operator: ">"
warning: "85.5"

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

$ terraform apply

dashboard.png

cpu.png

以上です。