監視対象機器が登録された後、実際に監視を実施するには、監視アイテム、グラフ描画設定、トリガー条件式設定などの監視設定を行う必要があります。Zabbixではこういった設定を効率よく管理するための機能として、「テンプレート管理機能」と「ローレベルディスカバリ機能」が実装されています。
Zabbixには、監視設定をテンプレート化して管理できる機能があります。具体的には、「アプリケーション情報(監視アイテムを種別ごとにグルーピングする機構)」「監視アイテム」「グラフ」「トリガー」「スクリーン」「ディスカバリルール」「Web監視シナリオ」を、テンプレートとしてあらかじめ設定しておくことができます。
テンプレート管理を効率よく実施するポイントは、マクロを活用することです。ここでは例として、以下のようなWeb監視を実施したい場合のテンプレート設定を考えてみましょう。
この場合、テンプレートのWeb監視のURL設定は、ホストのインターフェイスIPアドレス設定情報を示すマクロである{HOST.IP}を利用して、以下のように行います。
URL:http://{HOST.IP}/index.html
これにより、テンプレートを監視対象ホストに対して割り当てるだけで、各ホストのURLに対するWeb監視が実施できます。
第2回でも紹介しましたが、Zabbix 2.2では、Webシナリオ監視設定をテンプレートに設定できるようになりました。それ以外にも、「トリガーの不明状態」や「アイテムおよびローレベルディスカバリの取得不可状態」を検知できるようになっています。
これまでは、監視アイテムの設定誤り(監視結果のデータ型の設定誤りなど)や、監視対象先の異常などにより監視結果が取得できない状態が発生したり、それに伴ってトリガーの条件式を評価できない状態になったりすると、それを検知できませんでした。
この課題に対する機能が追加されました。設定は、Zabbixフロントエンド管理画面で「設定」→「アクション」→「アクションの作成」から行います。この時、イベントソースとしてこの機能向けに新たに追加された「内部イベント」を選択します。例えば、アイテムが取得不可状態になったことを検知する設定を行う場合は、実行条件として図2のような設定を行います。
テンプレートを自動的に割り当てできる機能が充実していく中、「その監視機能が本当に正しく動いているのか」を確実に知るためにも、この機能は非常に有用です。
ローレベルディスカバリは、Zabbix 2.0から実装されている機能です。監視対象ホストの内部情報をディスカバリして、最適なアイテムやグラフ、トリガーなどを自動設定できます。この機能により、各環境に最適な監視設定をより効率よく実施できます。
例えば、Zabbix Agentを介して監視対象ホストが搭載しているネットワークインターフェイスが何であるかをディスカバリし、ディスカバリ結果に応じたネットワークインターフェイスI/O監視アイテムを自動登録する、といったことが可能になります。
設定例は以下の通りです。
(net.if.discoveryによりディスカバリされた結果(インターフェイス名)は{#IFNAME}というマクロ変数に格納されます)
Zabbix 2.0でローレベルディスカバリがサポートしていたのは、Zabbix Agentを利用したファイルシステム情報、ネットワークインターフェイス情報のディスカバリ、およびSNMP Agentを利用したSNMP OID情報のディスカバリのみでした。
Zabbix 2.2からは、vSphere APIから情報を収集し、vCenter ServerおよびESXiハイパーバイザが管理している仮想マシン情報をホストとして自動登録したり、ハイパーバイザや仮想マシンの情報を自動監視する機能など、仮想環境での監視を容易にする機能が追加されています。
Zabbixのアクション機能には、第2回で紹介したようにメッセージ通知を行うだけでなく、リモートコマンドを実行する機能も備わっています。そのため、監視結果がとある条件を満たした際に、対象ホストで自動的にオペレーション処理を実行する、といった対応を取ることもできます。
リモートコマンドは、Zabbix Server上で実行することも、Zabbix Agent上で実行することもできます。またSSHやTelnet接続しての実行も可能なため、手順がパターン化さえしていれば、基本的に何に対するオペレーションも自動化できます。さらに、第2回で紹介したステップ実行と組み合わせることで、やや複雑なオペレーションも実現可能です。
Zabbix 2.2から、Zabbixのグローバルスクリプト内でのユーザー定義マクロ展開がサポートされるようになりました。
Zabbixのグローバルスクリプトは、Zabbixフロントエンド管理画面から手動で対象ホストに対して実行したり、アクション機能により自動的に実行できます。スクリプトは任意の形式で作ることができ、汎用性が非常に高いのが特徴です。
このグローバルスクリプトの機能では、これまで、{HOST.CONN}をはじめとするホストのインターフェイス関連情報のマクロ展開がサポートされていました。Zabbix 2.2からは新たに、ユーザーが定義した任意のマクロ展開にも対応しました。これにより、グローバルスクリプトがさらに柔軟になると考えられます。
例えば、「グローバルスクリプト実行時に、ホストごとに異なるパラメータを渡したい」といったニーズがあった場合、これまではグローバルスクリプトを複数用意する必要がありました。しかしユーザー定義マクロを活用すれば、ホストごとにユーザー定義マクロの値を変えるだけで同一のグローバルスクリプトを利用できます。
ここまでご紹介してきたように、Zabbixには、監視機器の登録や監視設定など、運用監視作業を自動化する機能や、障害発生時のオペレーションを自動実行する機能が豊富に実装されています。最新のZabbix 2.2では、さらなる自動化に向けた機能が追加され、運用負荷を軽減すべく改良されていることが分かります。今後も運用者を“楽”にしてくれるような機能の実装が期待されます。
さて、最終回では、これまで紹介してきた機能を活用して、クラウド環境、仮想環境の監視を自動的に監視するためのプラグイン「HyClops for Zabbix」について紹介します。
池田大輔
Twitter : @ike_dai
TIS株式会社戦略技術センター所属。社内向けシステムの保守運用業務を経験後、クラウド時代の効率的な統合運用管理をテーマに活動中。その中でZabbixを利用した統合運用管理システム(HyClops for Zabbix)の開発に取り組む。ZABBIX-JP運営スタッフ所属。Zabbix認定スペシャリスト。『Zabbix統合監視[実践]活用 - 物理・仮想・クラウド混在環境の省力運用(仮)』という書籍を執筆中で、11月中旬頃発売予定。戦略技術センターでは、技術情報をブログ『Tech-Sketch』にて発信中。
Copyright © ITmedia, Inc. All Rights Reserved.