Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationEventAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
4
Help us understand the problem. What are the problem?

More than 3 years have passed since last update.

@kjm

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

はじめに

ここのところ terraform を使い AWS の構成を管理するようにしています。
コードで管理することで、PullRequestベースでレビューしあうことができ、かつリポジトリに過去の履歴が全て残るという点がすばらしいですね。
その分、コードに落す工数がかかってしまいますが。

今開発しているサービスでは Mackerel を監視に使用するつもりでいます。
Mackerel は go で書かれたライブラリがあり、簡単にAPIへのアクセスができます。
監視ルールも AWS と同じく terraform で管理できると良いな、と思い、terraform で Mackerel を管理する provider を作ってみました。

terraform-provider-mackerel

terraform-provider-mackerel とは

Hashicorp社が開発している terraform というツールのプラグインです。
このプラグインを使用することで terraform で 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

以上です。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
4
Help us understand the problem. What are the problem?