[より使いやすく!]Zabbix 2.2~4.0 LTSに搭載された新機能と活用方法

第2回 監視データの取得に関する新機能

この記事を読むのに必要な時間:およそ 3 分

第1回ではZabbixの概要の説明とWebインターフェースの新機能の紹介を行いました。今回は2.2から4.0の間に改善や追加された監視データの所得処理に関する以下の機能について解説します。

  • ローレベルディスカバリの機能強化
  • 保存前処理と依存アイテム
  • HTTPリクエストによる監視データ取得
  • 監視データ取得を即時実行

ローレベルディスカバリの機能強化

ローレベルディスカバリ(以下LLDと記載)は監視対象からネットワークインターフェースやポート,ディスクパーティションのマウントポイントなど搭載しているデバイスの一覧を取得し,そのリストに基づいてアイテムやトリガー,グラフを自動的に作成する機能です。管理者は監視対象の機器が有しているデバイスを調査する必要がなく,監視設定もすべてのデバイスについて漏れなく自動的に行えます。Zabbix 2.0の新機能として搭載されて以降,LLDはZabbixの機能の中でも非常に活用されており,以下のようにメジャーバージョンが上がるごとに機能強化されてきています。

  • 複数のフィルタ設定(2.4)
  • スクリーンのグラフプロトタイプ(2.4)
  • 複数のSNMP OIDのディスカバリ(3.0)
  • Windowsサービス,CPU,ODBCディスカバリ(3.0)

2.4ではLLDで取得されたデバイスのリストに対するフィルタをより細かく設定できるようになったことで,監視しなくてもよいデバイスを自動設定作成から除外することが柔軟に行えるようになりました。特にネットワーク機器の監視では3.0で機能強化されたSNMPの複数OIDによるLLDの機能強化と組み合わせると,ポート数が多いネットワーク機器の各ポートを監視する場合に特に効果があり,設定でシャットダウンされているポートは監視設定を生成せず,加えてポート名称でもフィルタを行うといったことが可能です図1)⁠

図1

図1

また,2.4ではLLDが作成したグラフを1つのスクリーンに自動的に並べる機能も搭載され,たとえばネットワーク機器の各ポートのIN/OUTのグラフを1枚の画面に並べて表示できます図2)⁠以前は手作業で作成する必要があったものが自動化でき,監視設定を効率よく行えるようになりました。

図2

図2

3.0ではWindowsのサービスやCPU,ODBCのLLD機能を追加し,以下のことが行えます。WindowsサービスとCPUのLLDはエージェント側の新機能であり,利用するためにはZabbixエージェントも3.0以降へアップデートする必要があることに注意してください。

  • Windowsサーバーに登録されている各サービスを監視する設定を自動作成する
  • 搭載しているCPUのコアのリストを取得し,コアごとのCPU使用率の監視設定を自動作成する
  • ODBC監視を利用してRDBMSに実行したSQL結果の表をもとに監視設定を自動作成する

保存前処理と依存アイテム

Zabbix 3.4では監視対象から取得した監視データを,障害検知やデータ保存前の段階で加工する保存前処理の機能が追加されました。アイテムの設定で「保存前処理」タブから設定が行え,前後文字列の除去,正規表現を利用した文字列抜き出し,JSONやXMLデータから指定した値の抜き出しなどが行えます図3)⁠以前のバージョンにもあった「数値のかけ算を行う(乗数)⁠前回値との差分」⁠秒あたりの差分」の各設定も保存前処理タブに移動しています。

図3

図3

保存前処理の機能を利用することで,不要な文字列を除去したり特定文字列のみ抜き出して監視データとして活用できるだけでなく,アプリケーションサービスなどのAPIを実行して得られるJSONやXMLデータからデータを抜き出す処理までZabbixの設定のみで行えるようになり,以前は独自のスクリプトを作成する必要があったこれらの処理を容易に行えます。

また,Zabbix 3.4では新しいアイテムのタイプ「依存アイテム」が追加されています。依存アイテムは他のアイテムを親アイテムとして指定し,親アイテムが監視データを受信したタイミングで自身のアイテムでも同じデータを受け取ります。上記の保存前処理と組み合わせて活用することで,監視データは1回の取得で複数のアイテムで監視データを取得させ,アプリケーションやサービスの監視を効率よく行うことができます。

例としてアプリケーションやサービスのAPIへリクエストを行い,複数の監視データを含むJSONやXMLが得られる場合以下のように設定できます図4)⁠

図4

図4

  • 親アイテムで複数の監視データが含まれるテキストデータやJSON,XMLデータを取得する
  • 依存アイテムを複数作成し,それぞれのアイテムでは保存前処理設定で異なるデータを抜き出すように設定する

以前のバージョンでは,上記のような1回のリクエストで複数データが得られるようなアプリケーションやサービスの監視を行う場合,取得したデータの分割を行うスクリプトを作成する必要があり,1つの監視データを取得するために1回のデータ取得のリクエストをアプリケーションやサービスに実行する作りになっていると,監視対象へ不要に負荷をかける結果になるなどの問題がありました。監視対象の負荷を下げるためにzabbix_senderを利用した仕組みにするなどの対応を取ることで効率よく監視できますが,スクリプトが複雑になってしまいます。依存アイテムと保存前処理の機能を組み合わせて利用することで,複雑な監視を簡単に効率よく行えます。

HTTPリクエストによる監視データの取得

Zabbix 4.0ではHTTPリクエストによる監視データの取得機能が追加されました。アイテムの設定でタイプの選択に「HTTPエージェント」を選択することで利用できます図5)⁠HTTPエージェントはURLを指定しHTTPリクエストにより取得したデータを監視データとして利用します。以前のバージョンにもあったWeb監視機能はWebページが正しく表示できるかどうかをシナリオ監視できる機能であることに対して,HTTPエージェントは取得したコンテンツ自体を監視する機能であるという違いがあります。

図5

図5

HTTPエージェントを利用することで,アプリケーションやWebサービス,クラウドなどのAPIへHTTPのリクエストを実行し,得られた結果を監視できます。また,サービスなどのAPIは応答結果がJSONやXML形式となっていることが多く,前述した保存前処理や依存アイテムを活用することで1回のAPIリクエストを行い,得られた結果から必要な監視データを抜き出し複数のアイテムに分けて保存するという効率的な監視が行えます。

特に最近はクラウドサービスやコンテナ環境の詳細監視を行いたいというニーズが出てきており,これらの環境はHTTPベースのAPIを利用して内部ステータスを取得することができます。SaaSやIaaSのサービスの内部ステータスを監視するために,APIリクエストによる監視データの取得を行って監視するといったことが,スクリプトを作成しなくてもZabbixの設定画面からのみで行えるようになりました。他にもテンプレートとして設定を管理することができXMLエクスポートにより設定を共有もしやすくなったなどのメリットがあります。

監視データを即時に取得

Zabbix 4.0ではアイテムの設定画面に「監視データを取得」ボタンが追加されています。アイテムの設定一覧画面の下部,または個々のアイテムの設定画面の下部にあり,このボタンを押すことでアイテムの監視データを即時取得するようにZabbixサーバーにリクエストを行うことができます図6)⁠この機能は以下のような場面で活用できます。

図6

図6

  • アイテムを新規に作成した直後に,初回の監視タイミングを待たずに監視データを取得でき,設定が正しく動作するかを確認できる
  • アイテムの設定間違いで状態が取得不可になった場合に,設定の修正後に監視データを取得させることで,次のリトライのタイミングを待たずに設定の確認ができる
  • 障害が発生した場合に,次の監視データ取得タイミングを待たずに監視処理を実行させて最新の状態の確認ができる

また,この「監視データ取得」ボタンはLLDのルール設定でも利用できます。LLDルールは監視対象から搭載しているデバイスのリストを取得し,そのリストに基づいてアイテムやトリガー,グラフの設定を自動生成する設定です。この処理を任意のタイミングで実行できるようになり,デバイスの追加削除を行った後にボタンを押して実行することですぐに監視設定に反映させることができるようになりました。

連載第2回となる今回は監視データの取得に関する新機能について解説を行いました。Zabbix 2.2から4.0の間に監視データの取得に利用できる様々な機能が追加され,よりスマートに監視処理を行えるようになりました。今回紹介した以外にもZabbixサーバーとエージェント間やプロキシ間の通信を暗号化する機能や,Zabbixサーバーとプロキシ間の通信の圧縮など様々な機能が追加されています。次回の第3回では障害検知や障害通知に関する新機能について解説する予定です。

著者プロフィール

寺島広大(てらしまこうだい)

Zabbix Japan代表。2005年にZABBIX日本ユーザー会を設立し,雑誌や書籍の執筆を行う。2011年からラトビアZabbix本社に転職し,世界中のZabbixサポートを行いつつ,日本向けの公式トレーニングやパッケージ作成を担当する。2012年に日本支社であるZabbix Japanを設立し代表に就任。