2020 年 10 月 26 日
Zabbix のアイテムとトリガーの設定
※注意
本記事では、Zabbix サーバー、Zabbix エージェント共に弊社製品である「MIRACLE ZBX」を使用しています。Zabbix LLC 社が主体となって開発している OSS の Zabbix を使用する場合と挙動が異なる可能性がございます。あらかじめご了承ください。
はじめに
前回までの記事では、Zabbix のインストール方法や監視対象である CentOS に Zabbix エージェントを導入する方法を説明しました。
今回の記事では、Zabbix の監視項目である「アイテム」、監視結果の値から障害として判定するための閾値である「トリガー」について説明します。
また、Zabbix のエージェントレス監視、アクティブチェックの一例として実際に Ping 監視とログ監視を行う方法を説明します。
環境
本記事は以下の環境を用いています。
Zabbix サーバー 仮想マシン 「zabbix」
使用ソフトウェア | バージョン |
---|---|
Oracle VM VirtualBox | 6.1.6 r137129 (Qt5.6.2) |
CentOS | 7.7.1908 (Core) |
MIRACLE ZBX Server | 4.0.18-6 |
MariDB | 15.1 Distrib 5.5.65-MariaDB |
監視対象のサーバー 仮想マシン 「centos」
使用ソフトウェア | バージョン |
---|---|
Oracle VM VirtualBox | 6.1.6 r137129 (Qt5.6.2) |
CentOS | 7.7.1908 (Core) |
MIRACLE ZBX Agent | 4.0.18-6 |
Zabbix サーバーの構築方法は MIRACLE ZBX インストール 、 監視対象への Zabbix エージェントの導入方法は CentOS7 への Zabbix エージェントの導入 をご参照ください。
アイテム
Zabbix では、監視対象の CPU 使用率やディスク使用率など個別の監視項目を「アイテム」と呼びます。
Zabbix はアイテムごとに値の取得方法および取得のために動作するプロセスが異なります ( アイテムタイプ )。
アイテムタイプは Zabbix エージェントの有無、監視通信の開始起点の観点から 4 種類に分類できます。
(1) エージェントレス監視
Zabbix エージェントを使わないで監視を行う方式です。SNMP などを利用する場合は監視 対象に監視に使用するためのクライアントを導入する必要があります。
例 シンプルチェック (Ping 監視、ポート監視等 )、SNMP 監視、HTTP 監視
(2) トラップ監視
監視対象が主体となり Zabbix サーバーへ監視情報を送りつける方式です。
例 SNMB トラップ監視、Zabbix トラップ監視
(3)Zabbix エージェント監視 ( ポーリング )
監視対象に Zabbix エージェントを導入し、Zabbix サーバーが Zabbix エージェントにポーリ ング監視を行う方式です。
例 サーバーの CPU、メモリ、ディスク等のメトリクス監視
(4)Zabbix エージェント監視 ( アクティブチェック )
監視対象に導入した Zabbix エージェントが監視情報をリストに基づいてあらかじめ取得し、Zabbix エージェントを起点として監視情報を連携する方式です。
多用すると Zabbix サーバーのパフォーマンス劣化につながるため注意が必要です。
例 ポーリングと同様のメトリクス監視、ログ監視、イベントログ監視
トリガー
アイテムの値に対し、障害として検知するために設定する閾値のことを「トリガー」と言います。条件式を設定し、アイテムの取得ごとに評価を行い、真となった場合に障害と判断し、イベント ( 障害報告 ) が表示がされます。
設定例
ここからは実際にアイテムとトリガーの設定例として Ping 監視とログ監視を行う方法を紹介していきます。
Ping 監視 ( シンプルチェック )
監視対象の死活監視を行う設定です。シンプルチェックのため監視対象に Zabbix エージェントを導入する必要はありません。
アイテムの設定
(1)Zabbix の Web インターフェースにアクセスします。
( デフォルトでは http://<Zabbix サーバーの ip アドレス >/zabbix )
(2) 画面上部にある「設定」→「ホスト」をクリックします。
(3) 監視対象の名前の横にある「アイテム」をクリックします。
今回の例の場合は、監視対象は centos なのでその横にあるアイテム ( 下記図の赤丸 )
(5) 各項目に下記を入力します。
- 名前 「Ping 監視」
登録名です。任意の名前を指定できます。 - タイプ 「シンプルチェック」
アイテムタイプ ( 監視を行う方式 ) を指定します。Ping 監視では Zabbix エージェントを使わないシンプルチェックを選択します。 - キー 「icmpping」
取得したい値に応じてキーを指定する必要があります。「選択」を押すとアイテムタイプ に応じたキーの一覧が選択できます。選択後は引数を変更する必要があります
今回は Ping 監視を行うキーである「icmppmig」を指定します。
例 icmpping[<target>,<packets>,<interval>,<size>,<timeout>] → icmpping
Zabbix 4.0 のアイテムタイプと対応するキーについて詳しくは Zabbix Documentation をご 参照ください。 - データ型 「数値(整数)」
監視を行った際の応答のデータ型を指定します。キーに応じた適切な設定を選んでください。 - 値のマッピング 「Service State」
取得した数値を実際の意味に変更するため設定です。任意で登録可能です。
icmpping は反応があれば 1, 反応がなければ 0 が返ってきます。
「0 は Down、1 は Up」という意味は Service State として登録されているため、今回の例ではそれを指定します。
(6)「追加」をクリックするとアイテムが追加されます。これで設定は完了です。
(7) 監視結果を確認するには「監視データ」→「最新データ」をクリックします。
(8) 作成したアイテムを探します。ホスト名やアイテム名で探すと簡単に見つかります。
(9) 値が監視対象の状態に応じて切り替われば成功です。
監視対象が起動しているとき
※うまく取得できない場合は、監視対象のファイアウォールの設定で ICMP が許可されているかご確認ください。
トリガーの設定
Ping 監視の結果が 0(Down) だった場合、障害と判定するトリガーを設定します。
(1) 画面上部にある「設定」→「ホスト」をクリックします。
(2) 監視対象の名前の横にある「トリガー」をクリックします。
(3) 画面右上にある「トリガーの作成」をクリックします。
(4) 各項目に下記を入力します。
- 名前 「centos 接続障害」
トリガーの名前です。障害時のメッセージとなるのでどのような障害がわかるよう指定します。 - 深刻度 「軽度の障害」
障害の程度の設定です。障害一覧に表示された時の色が変わり、今回の例では行いませんが、深刻度によってメール送信などアクションの実行を設定することができます。 - 条件式 「{centos:icmpping.last()}=0」
取得した値を障害と認識するための条件式です。
入力欄の右にある追加を押し、以下を入力すると作成されます。
アイテム 「Ping 監視」 障害を判定したいアイテムを指定します。 関数 「last()」 監視結果に対してい実行する関数です。今回は最新値を取得する last() を使用します。 結果 「0」 関数の結果と比較し、真の場合は障害となります。 - 説明文 「centos の状態を確認してください。」
障害発生時に対処方法の説明を記述できます。
また URL に参考となるサイトのリンクを張ることもできます。
(5)「追加」を押すとトリガーが追加されます。これで設定は完了です。
(6) 障害を確認するには「監視データ」→「障害」をクリックします。
(7) 監視対象を停止します。
(8) 数十秒後、以下のようなイベントが現れます。
(10) 数十秒後以下のように解決済となれば設定完了です。
ログ監視 ( アクティブチェック )
監視対象のログを監視する設定を行います。Zabbix エージェントを用いたアクティブチェックの場合のみログ監視が行えます。
アイテムの設定
(1)Zabbix の Web インターフェースにアクセスします。
( デフォルトでは http://<Zabbix サーバーの ip アドレス >/zabbix )
(2) 画面上部にある「設定」→「ホスト」をクリックします。
(3) 監視対象の名前の横にある「アイテム」をクリックします。
(4) 画面右上にある「アイテムの作成」をクリックします。
(5) 各項目に下記を入力します。
- 名前 「ログ監視」
登録名です。任意の名前を指定できます。 - タイプ 「Zabbix エージェント ( アクティブ )」
アイテムタイプ ( 監視を行う方式 ) を指定します。ログ監視は、アクティブチェックでしか行えないため「Zabbix エージェント ( アクティブ )」を指定します。 - キー 「log[/tmp/logfile]」
取得したい値に応じてキーを指定する必要があります。「選択」を押すとアイテムタイプに応じたキーの一覧が選択できます。選択後は引数を変更する必要があります
今回はログの内容を取得キーである「log」を指定します。
第一引数に監視したいファイルのパス、第二引数に文字列を与えるとその文字列が含まれる場合のみ取得します。
存在しないファイルを指定すると監視時にエラーとなるため気をつけてください。
Zabbix 4.0 のアイテムタイプと対応するキーについて詳しくは Zabbix Documetation をご参照ください。 - データ型 「ログ」
監視を行った際の応答のデータ型を指定します。キーに応じた適切な設定を選んでください。今回はログを取得するため「ログ」を指定します。
(6)「追加」をクリックするとアイテムが追加されます。これで設定は完了です。
(7) 監視結果を確認するには「監視データ」→「最新データ」をクリックします。
(8) 作成したアイテムを探します。ホスト名やアイテム名で探すと簡単に見つかります。
(9) log の第一引数で与えたファイルに書き込みを行い、Zabbix 上で以下のように取得できたら成功です。
例 監視対象で以下のコマンドを実行
$ echo "This is Log test." >> /tmp/logfile
Zabbix でログの内容に応じて以下のように表示されたら成功
トリガーの設定
取得したログの中に大文字小文字問わず「error」という文字列が入っていたら障害と判定し、復旧時には、手動で復旧報告を行うトリガーを設定します。
(1) 画面上部にある「設定」→「ホスト」をクリックします。
(2) 監視対象の名前の横にある「トリガー」をクリックします。
(3) 画面右上にある「トリガーの作成」をクリックします。
(4) 各項目に下記を入力します。
- 名前 「テストログエラー」
トリガーの名前です。障害時のメッセージとなるのでどのような障害がわかるよう指定します。 - 深刻度 「軽度の障害」
障害の程度の設定です。障害一覧に表示された時の色が変わり、今回の例では行いませんが、深刻度によってメール送信などアクションの実行を設定することができます。 - 条件式 「{centos:icmpping.last()}=0」
取得した値を障害と認識するための条件式です。 入力欄の右にある追加を押し、以下を入力すると作成されます。
アイテム 「ログ監視」 障害を判定したいアイテムを指定します。 関数 「iregexp()」 監視結果に対して実行する関数です。 V 「error」 関数に渡す引数です。今回は検知する文字列である「error」を入力します。 結果 「1」 関数の結果と比較し、真の場合は障害となります。
今回は文字列が見つかると 1 が返る関数のため 1 を入力します。 - 正常イベントの生成 「なし」
復旧を検知する条件を設定できます。今回は発生したエラーの復旧及び報告を自分で行う ことを想定しているため「なし」にします。 - 手動クローズの許可 「チェックを入れる」
手動でアイテムを閉じることを許可する設定です。 今回は手動で復旧報告を行う想定のため許可します。 - 説明文 「テストログでエラーが検知されました。確認してください。」
障害発生時に対処方法の説明を記述できます。 また URL に参考となるサイトのリンクを張ることもできます。
(5)「追加」を押すとトリガーが追加されます。これで設定は完了です。
(6) 障害を確認するには「監視データ」→「障害」をクリックします。
(7) 障害が発生し、監視しているログファイルに「error」を含む文字列が書き込まれます。
今回は例なので監視対象で以下のコマンドを実行し、手動で書き込みます。
$ echo "This is Error Test." >> /tmp/logfile(8) 数十秒後、以下のようなイベントが現れれば、障害を検知は成功です。
(9) エラーが発生したシステムの復旧を行います。
(10) 復旧が完了したら、復旧したイベントにチェックをつけ、ページの一番下にある 「一括更新」をクリックします。
(11) 以下の項目を入力します。
- メッセージ 「テストシステム復旧しました。」
復旧時のメッセージを入力します。これは必須です。 - 障害のクローズ 「チェックをします。」
この障害を手動で終了するかの設定です。
(13) 少し時間を空け、下記の図のように表示が解決済になれば成功です。
まとめ
今回は「アイテム」と「トリガー」について説明し、実際に Ping 監視とログ監視を行いました。
次回は RasberryPi に、本記事では説明しなかった監視方法であるトラップ監視、Zabbix エージェント監視 ( ポーリング ) を行う記事を掲載する予定です。お楽しみに!