Zabbix can be configured to support hierarchical distributed monitoring.
分散監視には、様々な目標があります。
Zabbix管理者は、単一拠点のZabbixウェブフロントエンドから全ノードの設定をコントロールできます。
複数階層から構成される複雑な環境の監視に使用します。
特に地理的に分散する複数の拠点を監視する場合に役に立ちます。
1台のZabbixサーバで数千台のホストを監視する必要がある場合でも対応できます。
Zabbixを使用すると、効果的かつ信頼できる方法で分散ITインフラストラクチャを監視できます。分散設定全体の設定は、単一拠点で共通のウェブインタフェースから実行できます。
Zabbixは、分散設定で最大1000個のノードをサポートします。各ノードは、その場所の監視を行います。ノードはローカルに設定したり、マスターノードから設定することができます。マスターノードには、全ての子ノードの設定データのコピーが置かれています。子ノードの設定は、オフラインモード、すなわちマスターノードと子ノードが接続されていない状態でも実行できます。
階層型分散監視を使用すると、ノードをツリー構造で構成できます。各ノードは、そのマスターノードにのみレポートします。
全てのノードは、通信障害が発生した後も動作可能であり、ヒストリ情報とイベントはローカルに保存されます。通信が復旧したときに子ノードがマスターノードにデータを送信するように設定できます。
Zabbix分散設定に新しいノードを接続したり、分散設定からノードを切断しても、分散設定の機能は一切損なわれることはなく、要求されるノードをリスタートする必要もありません。
各ノードは独自に設定することができ、通常のZabbixサーバとして動作します。
ノードのパラメータを以下に示します。
パラメータ | 説明 |
---|---|
名前 | 一意なノード名。 |
Id | 一意なノードID。 |
タイプ | ローカルl – ローカルノード リモート – リモートノード |
タイムゾーン | ノードのタイムゾーン。ノード間で時間関連のデータを転送する際に、タイムスタンプは自動的にローカルのタイムゾーンに変換されます。 |
IPアドレス | ノードのIPアドレス。ZabbixトラッパーはこのIPアドレスで待ち受ける必要があります。 |
ポート | ノードのポート番号。Zabbixトラッパーはこのポート番号で待ち受ける必要があります。デフォルトは10051です。 |
ヒストリの保存期間 (秒) | ローカル以外のヒストリデータにのみ適用されます。ノードのヒストリを保存する期間(秒単位)を指定します。 |
トレンドの保存期間 (秒) | ローカル以外のトレンドデータにのみ適用されます。ノードのトレンドを保存する期間(秒単位)を指定します。 |
ここでは、中央ノード(ノード名: Central Node)と子ノード(ノード名: Child Node)から構成される単純な設定を例として説明します。
中央ノードは子ノードの設定を完全にコントロールします。子ノードは中央ノードにイベント、ヒストリ、およびトレンドをレポートします。
中央ノードのNodeIDは1、子ノードのNodeIDは2です。
中央ノードのIPアドレス: 192.168.3.2, ポート番号: 10051
子ノードのIPアドレス: 192.168.3.5, ポート番号: 15052
ステップ1 Zabbixのインストール。
標準のインストール手順に従ってデータベースを作成し、Zabbixのフロントエンドとバイナリをインストールします。
ステップ2 サーバの設定ファイルにNodeIDを設定。
zabbix_server.confファイルに次の行を設定します:
NodeID=1
ステップ3 データベースデータの変換。
Zabbixサーバのバイナリを実行して、最初のノードが使用できるように一意なIDを変換します。
cd bin ./zabbix_server -n 1 -c /etc/zabbix/zabbix_server.conf Converting tables .................................................................. done.
変換完了です。
ステップ4 ノードパラメータの設定
ステップ5 子ノードの追加。
ステップ6 マスターノードの起動。
サーバのログファイルの起動メッセージに、設定したNodeIDが表示されることを確認します:
31754:20070629:150342 server #16 started [Node watcher. Node ID:1]
ステップ1 Zabbixのインストール。
標準のインストール手順に従ってデータベースを作成し、Zabbixのフロントエンドとバイナリをインストールします。
ステップ2 サーバの設定ファイルにNodeIDを設定。
zabbix_server.confファイルに次の行を設定します:
NodeID=2
ステップ3 データベースデータの変換。
Zabbixサーバのバイナリを実行して、最初のノードが使用できるように一意なIDを変換します。
cd bin ./zabbix_server -n 2 -c /etc/zabbix/zabbix_server.conf Converting tables .................................................................. done.
変換完了です。
ステップ4 ノードパラメータの設定
ステップ5 マスターノードの追加。
ステップ6 子ノードの起動。
サーバのログファイルの起動メッセージに、設定したNodeIDが表示されることを確認します:
27524:20070629:150622 server #9 started [Node watcher. Node ID:2]
ここでは、7個のノードで構成される設定例について説明します。各ノードはローカル(ローカルのウェブインタフェースを使用)で、またはそのマスターノードから設定できます。
この例では、Rigaという名前のノード(ノード4)が全ての子ノードからイベントを収集します。さらに、各ノードのヒストリ情報も収集するように設定することもできます。
ノードは、他のノードと無関係に、独自のプラットフォーム(OS、ハードウェア)およびデータベースエンジンを使用できます。また、子ノードはZabbixフロントエンドを使用しなくてもインストールできます。
実用的には、SQLiteまたはMySQL MyISAMが動作するZabbixサーバには多少能力が劣るハードウェアを使用して、上位レベルのノードには高性能なハードウェアとMySQL InnoDB、Oracle、またはPostgreSQLのいずれかのバックエンドを組み合わせて使用する方法が考えられます。
分散環境では各ノードに一意なノードIDを割り当てる必要があります。そのための詳細なステップを以下に示します。
標準のインストール手順の実行
標準のインストール手順を実行します。ただし、Zabbixサーバは起動しないでください。続いてZabbixフロントエンドのインストールと設定を行い、Zabbixデータベースを作成してdata.sqlからデータを追加します。
zabbix_server.confの設定
NodeIDをZabbixサーバ設定ファイルに追加します。NodeIDは一意なノードIDである必要があります。
マスターノードと子ノードの設定
Zabbixフロントエンドを使用して、ステップ2で設定したノードと直接通信するノードの詳細を設定します。IPアドレスとポート番号が全て正確に設定されていることを確認します。
Zabbixノードの起動。
Zabbixサーバを起動します:
shell> ./zabbix_server
全て正しく設定されている場合、Zabbixノードは自動的に設定および分散設定内の全ノードとのデータ交換を開始します。サーバログファイルには、以下のようなメッセージが表示されます。
... 11656:20061129:171614 NODE 2: Sending data of node 2 to node 1 datalen 3522738 11656:20061129:171614 NODE 2: Sending data of node 2 to node 1 datalen 20624 ...
分散設定内のノードに接続する場合、GUIの右上隅にある接続可能な子ノードのリストを使用します。表示されているのは、現在のノードです。
GUIに表示される情報は全て、このリストで選択したノードの情報です。
子ノードはそれぞれ、設定変更、ヒストリデータ、およびイベントをそのマスターノードに定期的に送信します。
データ | 頻度 |
---|---|
設定の変更 | 120秒ごと |
イベント | 10秒ごと。 |
ヒストリ | 10秒ごと。 |
通信障害が発生した場合、子ノードはデータを再送信します。
トレンドは受信したヒストリデータに基づいてローカルに計算されます。
ノード間で運用データが送信されることはありません。たとえば、アイテム関連の情報(最終チェック、最新値など)はローカルにのみ存在します。
マスターノード(少なくとも1つの子ノードを持つノード)はそれぞれ、設定変更を子ノードに(直接またはマスターノードに直接接続されている他の子ノードを経由して)定期的に送信します。
データ | 頻度 |
---|---|
設定の変更 | 120秒ごと |
マスターノードの設定が子ノードに送信されることはありません。
ノード間通信で使用するのはTCPプロトコルだけです。
データフロー | 送信元ポート | 送信先ポート |
---|---|---|
子ノードからマスターノード | 任意 | 10051 |
マスターノードから子ノード | 任意 | 10051 |
これはZabbix trapperが使用するデフォルトポートです。
どのノードも分散設定では多めの処理リソースを必要とします。マスターノードには、十分な処理能力およびローカルデータと子ノードから受信した全データを保存できるだけの容量が必要です。また、ネットワーク通信には、新しいデータを遅延なく転送できるだけの速度が要求されます。