0
0

More than 1 year has passed since last update.

[Zabbix]トリガーのタグ機能を利用して、同一トリガーから生成された複数の障害イベントを個別にクローズ管理する

Last updated at Posted at 2022-04-24

●はじめに

Zabbix3.2から実装されたトリガーのタグ機能を学習したので、設定例を記載しました。
従来であれば、同一トリガーから生成された複数の障害イベントは、トリガーの条件式が偽になればすべて同時に障害→正常となるので、実際のOS内の状況を正確に反映することはできませんでした。
トリガーのタグ機能を使えば、同一トリガーから生成された複数の障害イベントに対し、個別にタグを割り当てて状況を把握し、より正確に復旧を検知することができるようになります。
本記事では、/var/log/messagesに出力されるサービスを死活監視する場合を想定して記載しました。

●環境

項目 詳細
ホストOS macOS Monterey 12.2.1
仮想化ソフト VMware Fusion 12.2.0
ゲストOS Alma Linux 8.5
Zabbix ver 5.0.21

●トリガーのタグ機能とは

トリガーのタグ機能とは、同一のトリガーによって発生した複数の障害イベントに対し、個別にタグを割り当てる機能です。
複数の障害イベントが同一のトリガーから生成され、かつそのうちの1つが「障害→復旧」した場合、その同一トリガーから生成された他の障害イベントもすべて復旧していました。

/var/log/messagesのような、様々なアプリケーションやシステムのログが混在するログファイルの場合、過去に発生していた他のアプリケーションのエラーも(実際にはまだ障害であっても)障害から正常に戻してしまいます。

トリガーのタグ機能を使えば、同一トリガーから生成された障害イベントであっても、個別に障害からの復旧を確認できます。

●設定例

前述したように、ログに出力されるサービスの死活監視を想定してタグ機能を設定してみます。
ログに出力されるサービス名を個別に取得し、動的にタグに割り当ててそれぞれの障害/正常を管理します。
systemdで管理しているサービスの起動/停止を判定させ、Stoppedの文字列で障害、Startedの文字列で正常に戻します。

1.設定箇所
[左ペイン] - [設定] - [ホスト or テンプレート] - [トリガー] - [任意のトリガー] - [タグ]

2.書式
①名前:任意のタグ名(※後述する「クローズに利用するタグ名」に使用)
②値: {{マクロ}.関数("pattern",output)}
スクリーンショット 2022-04-25 1.02.16.png

# 入力例
{{ITEM.VALUE}.regsub("^.+ systemd.+:(Started|Stopped)(.+)\.$",\2)}

3.関数
regsub:大文字小文字を区別
iregsub:大文字小文字を区別しない

4.引数
parttern:抜き出したい文字列を指定(今回は正規表現で指定)
output:partternで取得した文字列の中から、抽出したい文字列を指定
※pattern内の抽出したい文字列部分を()で囲い、outputで \1 や \2 のように後方参照で指定

5.トリガー設定
名前:任意
深刻度:任意
障害の条件式:{Host1:log[/var/log/messages].str(Stopped)}=1
正常イベントの生成:復旧条件式
復旧条件式:{Host1:log[/var/log/messages].str(Started)}=1
障害イベントの生成モード:複数
正常時のイベントクローズ:タグの値が一致したすべての障害
クローズに利用するタグ名:[タグ]のタブで設定されたタグ名を指定
スクリーンショット 2022-04-25 1.20.31.png

●どういった動作になるのか

1.障害時の動作

{{ITEM.VALUE}.regsub("^.+ systemd.+:(Started|Stopped)(.+)\.$",\2)}

通常 /var/log/messages には、「systemd[xxxx]: Started/Stopped サービス名」の形式でログが出力されています。
上記トリガーのタグでは(.+)の部分(=サービス名)を抽出し、Serviceタグの値に割り当てます。
これにより同一のトリガーから生成された複数の障害イベントでも、タグを割り当てて個別に管理することが可能になりました。
※以下はNTPとApacheが停止した場合の例。Serviceタグにそれぞれ別々の値が代入されて、「タグ名:タグの値」の形式になっているのが分かります。
スクリーンショット 2022-04-04 9.34.45.png

2.復旧時の動作
トリガーのタグ機能を使用しない場合、この状態で「Started NTP client/server」という文字列が出力されると、NTPだけでなくApacheも復旧したとみなされてしまいます。
今回のようにトリガーのタグ機能を使用した場合、複数の障害イベントのうち、NTPのタグがついた障害イベントのみ復旧させることができます。
この場合、トリガーは復旧条件式で指定した「Started」を拾い、正常時のイベントクローズ「タグの値が一致したすべての障害」に従い、該当するNTPのタグが付与された障害イベントをクローズする動きをとります。
スクリーンショット 2022-04-04 9.47.36.png

●まとめ

本記事では、Zabbix3.2から実装されたトリガーのタグ機能を紹介しました。
トリガーのタグ機能は、同一トリガーから生成された複数の障害イベントに対し、動的にタグを割り当てる機能です。
個別に状況を把握し、より正確に復旧を検知するために、ぜひ導入したい機能だと思います。
※もし間違い等ございましたら、ご指摘いただけますと幸いです。

●参考

・Zabbix統合監視実践入門

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0