●はじめに
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)}
# 入力例
{{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
障害イベントの生成モード:複数
正常時のイベントクローズ:タグの値が一致したすべての障害
クローズに利用するタグ名:[タグ]のタブで設定されたタグ名を指定
●どういった動作になるのか
1.障害時の動作
{{ITEM.VALUE}.regsub("^.+ systemd.+:(Started|Stopped)(.+)\.$",\2)}
通常 /var/log/messages には、「systemd[xxxx]: Started/Stopped サービス名」の形式でログが出力されています。
上記トリガーのタグでは(.+)の部分(=サービス名)を抽出し、Serviceタグの値に割り当てます。
これにより同一のトリガーから生成された複数の障害イベントでも、タグを割り当てて個別に管理することが可能になりました。
※以下はNTPとApacheが停止した場合の例。Serviceタグにそれぞれ別々の値が代入されて、「タグ名:タグの値」の形式になっているのが分かります。
2.復旧時の動作
トリガーのタグ機能を使用しない場合、この状態で「Started NTP client/server」という文字列が出力されると、NTPだけでなくApacheも復旧したとみなされてしまいます。
今回のようにトリガーのタグ機能を使用した場合、複数の障害イベントのうち、NTPのタグがついた障害イベントのみ復旧させることができます。
この場合、トリガーは復旧条件式で指定した「Started」を拾い、正常時のイベントクローズ「タグの値が一致したすべての障害」に従い、該当するNTPのタグが付与された障害イベントをクローズする動きをとります。
●まとめ
本記事では、Zabbix3.2から実装されたトリガーのタグ機能を紹介しました。
トリガーのタグ機能は、同一トリガーから生成された複数の障害イベントに対し、動的にタグを割り当てる機能です。
個別に状況を把握し、より正確に復旧を検知するために、ぜひ導入したい機能だと思います。
※もし間違い等ございましたら、ご指摘いただけますと幸いです。
●参考
・Zabbix統合監視実践入門