TerraformでZabbix監視設定

こんにちは、SCSK株式会社の大石です。

Terraformには様々なプロバイダが存在していますが、その中にZabbixのプロバイダがあることをご存じでしょうか?
今回は、Terraformを使用して、Zabbixの監視設定をしてみたいと思います。
監視内容は以下を想定します。

  • ホスト: test
  • ホストグループ: testHostgroup
  • テンプレート: testTemplate
  • アイテム: CPU5分間のロードアベレージ
  • トリガー: 最終取得データが2を超えた場合

使用するプロバイダは以下となります。

 

プロバイダのインストール

terraformで使用するプロバイダをインストールします。
.tfファイルを作成し、以下を記述します。

terraform {
    required_providers {
        zabbix = {
            source = "tpretz/zabbix"
            version = "0.17.0"
        }
    }
}

上記を記載したら、以下コマンドを実行してインストールをします。

terraform init

 

プロバイダの選択とZabbixログイン

プロバイダをインストールしたら、プロバイダブロックを記載していきます。
プロバイダブロックは上記でインストールしたZabbixプロバイダとログイン情報を記載する必要があります。

provider "zabbix" {
    username = "<Webコンソールのユーザ>"
    password = "<Webコンソールのパスワード>"
    url = "http://<IPアドレス or ドメイン>/zabbix/api_jsonrpc.php"
    tls_insecure = false
}

監視設定

続いてリソースブロックとデータブロックを記載して、監視設定をします。

// 作成するテンプレートが所属するホストグループを取得
data "zabbix_hostgroup" "templategroup" {
    name = "Templates"
}

// 今回作成するホストが所属するホストグループ作成
resource "zabbix_hostgroup" "test_hostgroup" {
    name = "testHostgroup"
}

// テンプレート作成
resource "zabbix_template" "test_template"{
    host = "testTemplate"
 //1~3行目で 取得したホストグループのIDを指定
    groups = [data.zabbix_hostgroup.templategroup.id]
}

// エージェントタイプのアイテム作成
resource "zabbix_item_agent" "test_item" {
 // 作成したテンプレートIDを指定
    hostid = zabbix_template.test_template.id
    key = "system.cpu.load[all,avg5]"
    name = "test_item_system.cpu.load"
    valuetype = "float"
}

//  トリガーを作成
resource "zabbix_trigger" "test_trigger"  {
    name = "test_trigger_system.cpu.load[all,avg5]"
    expression = "last(/test/system.cpu.load[all,avg5])>2"
    priority = "disaster"
}

// ホストを作成
resource "zabbix_host" "test" {
 // 作成したホストグループのIDを指定
    groups = [ zabbix_hostgroup.test_hostgroup.id ]
    host = "test"
    interface {
        ip = "172.23.32.191"
        type = "agent"
    }
   // 作成したテンプレートのIDを指定
    templates = [zabbix_template.test_template.id]
 // アイテムとトリガーの依存関係を指定
    depends_on = [ zabbix_item_agent.test_item ]
}

ここまで書いたら、以下のコマンドを実行して.tfファイルに書いたリソースを適用します。

// 適用前に確認
terraform plan 
// .tfファイルの内容を適用
terraform apply

ZabbixのWebコンソールを開き、[設定]-[ホスト]を開くと、設定されたホストが登録され、
テンプレートの適用とアイテム、トリガーが登録されていることが分かります。

最後に

Terraformには今回ご紹介したプロバイダ以外にもいくつかありますが、リソースを変更するとホストを削除して再登録する挙動をしたり、
バグで変更そのものができないものもあったりします。今回ご紹介したプロバイダも含め、バグを踏んで予想外の動作をすることもあるので、要検証したうえで使用しましょう。

弊社ではZabbix関連サービスを展開しています。以下ページもご参照ください。

SCSK Plus サポート for Zabbix

SCSK Plus サポート for Zabbix
世界で最も人気のあるオープンソース統合監視ツール「Zabbix」の導入構築から運用保守までSCSKが強力にサポートします

★YouTubeに、SCSK Zabbixチャンネルを開設しました!★

SCSK Zabbixチャンネル
本チャンネルでは、SCSK株式会社でのZabbixに関するトレンド/事例紹介などを動画にまとめて取り上げております。最新のトピックについては、以下の弊社HPもしくはツイッターアカウントをぜひ参照ください。ツイッターアカウント:

★YouTubeに、SCSK Zabbixチャンネルを開設しました!★

x.com
タイトルとURLをコピーしました