ZabbixAPIを使ってトリガーをまとめて登録する方法

Zabbix

はじめに

今回ZabbixAPIを使用してトリガーを一括登録するための方法を記載しています。以下の記事に載せているのはログ監視用のアイテムに連動しているので、そのアイテムがある前提です。

他の記事でも同様ですが、認証については以下が組み込まれていることが前提です。

APIに関して何も知らなかったので、以下のサイトを参考にカスタマイズしました。

Zabbix APIでラクにミスなく大量のホストを登録しよう! | そるでぶろぐ
Zabbix APIを使いこなせば、手作業によるミスを減らしてラクに大量の監視設定を行うことができます。でも初心者には分かりにくいし、とっつきにくい…。そこで本記事では、Zabbi...

使い方

今回アイテムを一括登録するために必要になる物は以下です。

  • 1. 登録したいトリガーの情報を記載したファイル
  • 2. トリガーを一括登録するスクリプト

※トリガーを作る際に対応するアイテムが必要です。その辺りは個々でカスタマイズしてみてください。

登録したいトリガーの情報を記載したファイル

以下は登録したいトリガーの情報を記載したファイルです。「;」で区切られています。

各区切りが何に対応しているかは、ファイル内に記載しています。

[root@localhost ~]# cat trigger_create_list

test01;{A_TEST_Template_Log_Setting:log[/usr/local/bin/logcheck/forzabbixlog/rt02.log,,,,skip].str(>)}=1;4;1;{A_TEST_Template_Log_Setting:log[/usr/local/bin/logcheck/forzabbixlog/rt02.log,,,,skip].str(SYSTEM IS NOERROR)}=1;0
test02;{A_TEST_Template_Log_Setting:log[/usr/local/bin/logcheck/forzabbixlog/rt02.log,,,,skip].str(>)}=1;4;0;;1
###############################各列の名称###############################
#【1.TriggerName】
#トリガー名を指定する。
########################################################################
#【2.AlertFormula】
#障害条件を記入する。
########################################################################
#【3.priority】
#障害のプライオリティを以下の値で指定する。
#[0](default) not classifiedl;[1]information;[2]warning;[3]average;[4]high;[5]disaster.
########################################################################
#【4.recoveryInt】
#以下の値で指定します。
#[0]-指定しない;[1]復旧条件式を指定する。
########################################################################
#【5.recoveryExpression】
#復旧条件式を入れる。recoveryIntが0の場合は空欄。
########################################################################
#【6.Manual_colose_Flag】
#復旧条件を設定しない場合、障害から正常の状態に戻れないので、手動で障害の解除を許可する
#[0]-許可しない;[1]-許可する

トリガーを一括登録するスクリプト

登録したいトリガー情報が記載されているファイルを引数として実行します。

[root@localhost zabbix_api]# cat trigger_create_fromList.sh
#! /bin/bash
ZabbixWeb=http://192.168.68.250/zabbix/

PRE_IFS=$IFS
IFS=$'\n'

auth=bash zabbix_token_get.sh

for line in cat "$1" | grep -v ^#

do

 TriggerName=echo ${line} | cut -d ';' -f 1
 AlertFormula=echo ${line} | cut -d ';' -f 2
 priority=echo ${line} | cut -d ';' -f 3
 recoveryInt=echo ${line} | cut -d ';' -f 4
 recoveryExpression=echo ${line} | cut -d ';' -f 5
 Manual_Close_Flag=echo ${line} | cut -d ';' -f 6

curl -s -d '
{
    "jsonrpc": "2.0",
    "method": "trigger.create",
    "params":{
            "description": "'$TriggerName'",
            "expression": "'$AlertFormula'",
            "priority": "'$priority'",
            "recovery_mode": "'$recoveryInt'",
            "recovery_expression": "'$recoveryExpression'",
            "manual_close": "'$Manual_Close_Flag'"
             },
    "auth": "'${auth}'",
    "id": 1
}
' -H "Content-Type: application/json-rpc" ${ZabbixWeb}api_jsonrpc.php

done

IFS=$PRE_IFS