プロキシを使用した分散監視

概要

Zabbix プロキシは、効果的で信頼性の高い分散監視構成を実現するために使用できます。

プロキシは、パフォーマンスと可用性のデータを収集するためにローカルに配置されます。その後、データは集中管理されたサーバーに報告されます。

Zabbix プロキシは、次の用途に使用できます。

  • リモート拠点の監視
  • 通信が不安定な拠点の監視
  • 数千台のデバイスを監視する際の Zabbix サーバーの負荷軽減

プロキシが必要とする TCP 接続は、Zabbix サーバーへの 1 本だけです。 そのため、設定する必要があるファイアウォールルールが 1 つで済み、ファイアウォール越しの接続が容易になります。

Zabbix プロキシは、別個のデータベースを使用する必要があります。 Zabbix サーバーのデータベースを指定すると、設定が壊れます。

プロキシによって収集されたすべてのデータは、サーバーへ送信される前にローカルに保存されます。 これにより、サーバーとの一時的な通信障害が発生してもデータは失われません。 プロキシ設定ファイルProxyLocalBuffer および ProxyOfflineBuffer パラメータで、データをローカルに保持する期間を制御します。

プロキシが Zabbix サーバーのデータベースから最新の設定変更を直接受け取る場合、CacheUpdateFrequency の値によって設定更新が追いつかない Zabbix サーバーよりも、プロキシの設定のほうが新しくなることがあります。 その結果、プロキシがデータ収集を開始して Zabbix サーバーへ送信しても、Zabbix サーバー側ではそれらのデータを無視する場合があります。

Zabbix プロキシはデータコレクターです。 トリガーの計算、イベントの処理、アラートの送信は行いません。 プロキシで利用できる機能の概要については、次の表を参照してください。

Function Supported by proxy
アイテム
Zabbix agent checks Yes
Zabbix agent checks (active) Yes 1
Simple checks Yes
Trapper items Yes
SNMP checks Yes
SNMP traps Yes
IPMI checks Yes
JMX checks Yes
Log file monitoring Yes
Internal checks Yes
SSH checks Yes
Telnet checks Yes
External checks Yes
Dependent items Yes
Script items Yes
Browser items Yes
Built-in web monitoring Yes
アイテム値の前処理 Yes
ネットワークディスカバリ Yes
アクティブ エージェントの自動登録 Yes
低レベルディスカバリ Yes 2
リモートコマンド Yes
トリガーの計算 No
イベントの処理 No
イベント相関 No
アラートの送信 No

[1] エージェントがアクティブチェックをサーバーではなくプロキシに要求するようにするには、エージェント設定ファイルの ServerActive パラメータにプロキシを指定する必要があります。
[2] LLD では、Zabbix プロキシはデータを収集して前処理するだけで、その後 Zabbix サーバーに送信してさらに処理させます。

プロキシの機能

プロキシを使用するかどうかを選択する際には、いくつかの考慮事項を 踏まえる必要があります。

プロキシ
軽量 はい
GUI いいえ
独立して動作する はい
保守が容易 はい
DBの自動作成 はい1
ローカル管理 いいえ
組み込みハードウェアに対応 はい
一方向のTCP接続 はい
集中設定 はい
通知を生成する いいえ

1 DBの自動作成機能はSQLiteでのみ動作します。 その他の対応データベースでは手動セットアップが必要です。

Zabbixプロキシはメンテナンス期間を認識しません。詳細はメンテナンス中のキューの計算を参照してください。

過負荷からの保護

Zabbix サーバーがしばらく停止しており、プロキシが大量のデータを収集していた場合、その後サーバーが起動すると、過負荷になることがあります(history cache の使用率がしばらく 95-100% のままになります)。 この過負荷により、処理性能が低下し、本来よりもチェックの処理が遅くなる可能性があります。 このような状況を防ぎ、history cache の過負荷によって発生する問題を回避するための保護機能が実装されています。

Zabbix サーバーの history cache がいっぱいになると、history cache への書き込みアクセスが制限され、サーバーのデータ収集処理が停止します。 history cache 過負荷の最も一般的なケースは、サーバー停止後にプロキシが収集済みデータをアップロードする際に発生します。 これを避けるためにプロキシのスロットリングが追加されました(現在は無効化できません)。

history cache の使用率が 80% に達すると、Zabbix サーバーはスロットリングモードに入ります。 スロットリングモードでは、history cache の使用率が 60% 未満のときにのみプロキシデータを受け入れ、受け入れるプロキシを順番に切り替えます。 history cache の使用率が 20% 未満になると、サーバーは通常モードに戻ります。

さらに、通常モードでは、history cache の使用率が 60% を超えると、Zabbix サーバーは非常に大きなパケット(10,000 レコード以上)を送信する個々のプロキシをスロットリングします。 この判定は、サーバーがプロキシのアップロードを評価した瞬間に適用されるため、history cache 使用率のグラフ(内部アイテム zabbix[wcache,history,pused] とその更新間隔)には、短時間のスパイクがすぐには反映されない場合があります。

このスロットリングモードは、キャッシュ使用率が再び 80% に達するか、20% まで低下するか、またはスロットリングリストが空になるまで継続します。 最初のケースでは、サーバーは再びプロキシデータの受け入れを停止します。 他の 2 つのケースでは、サーバーは通常どおり動作し、すべてのプロキシからのデータを受け入れます。

上記の情報は、次の表で示すことができます。

History write
cache usage
Zabbix server mode Zabbix server action
80% に達する 待機 プロキシデータの受け入れを停止するが、後で連絡するための優先順位付きプロキシ一覧(throttling list)は保持する。
60% に達する 通常、ただしスロットリングされる準備あり データを受け入れるかどうかを判断する際に、非常に大きなプロキシアップロード(10k レコード超)を拒否する場合がある。それ以外のプロキシデータは受け入れ続ける。
20% まで低下する 通常 スロットリングリストを破棄し、プロキシデータの受け入れを通常どおり開始する。

この動作をメトリックと関連付けるには、zabbix[wcache,history,pused] 内部アイテムを使用できます。

設定

インストールし、設定したプロキシを、Zabbix Webインターフェースで設定します。

プロキシの追加

Zabbix Webインターフェースでプロキシを設定するには、次の手順を実行します。

  • 次へ移動: Administration > Proxies
  • Create proxy をクリックする

Parameter Description
Proxy name プロキシ名を入力します。プロキシ設定ファイルの Hostname パラメータと同じ名前である必要があります。
Proxy group プロキシの 負荷分散/高可用性 用に 1 つのプロキシグループを選択します。
Address for active agents 監視対象のアクティブ エージェントまたは送信元が接続するアドレスを入力します。Zabbix 7.0 エージェント以降でのみサポートされます。
このアドレスは、アクティブプロキシとパッシブプロキシの両方への接続に使用されます。このフィールドは、Proxy group フィールドでプロキシグループが選択されている場合にのみ表示されます。
Address 接続先の IP アドレス/DNS 名。
Port 接続先の TCP ポート番号(既定値: 10051)。ユーザーマクロがサポートされます。
Proxy mode プロキシモードを選択します。
Active - プロキシが Zabbix サーバーに接続して設定データを要求します
Passive - Zabbix サーバーがプロキシに接続します
暗号化通信を使用しない場合、(機密性のある)プロキシ設定データが、アクティブプロキシを使用時に Zabbix サーバーの trapper ポートへアクセスできる第三者に公開される可能性があることに注意してください。これは、認証が行われない場合、または Proxy address フィールドでプロキシアドレスが制限されていない場合に、誰でもアクティブプロキシを装って設定データを要求できるためです。
Proxy address 指定した場合、アクティブプロキシからの要求は、このカンマ区切りの IP アドレス一覧(必要に応じて CIDR 表記可)またはアクティブ Zabbix プロキシの DNS 名からのみ受け入れられます。
このフィールドは、Proxy mode フィールドでアクティブプロキシが選択されている場合にのみ使用できます。マクロはサポートされません。
Interface パッシブプロキシのインターフェース詳細を入力します。
このフィールドは、Proxy mode フィールドでパッシブプロキシが選択されている場合にのみ使用できます。
Address パッシブプロキシの IP アドレス/DNS 名。
Port パッシブプロキシの TCP ポート番号(既定値: 10051)。ユーザーマクロがサポートされます。
Description プロキシの説明を入力します。

Encryption タブでは、プロキシとの 暗号化接続 を必須にできます。

Parameter Description
Connections to proxy サーバーがパッシブプロキシに接続する方法: 暗号化なし(既定)、PSK(事前共有鍵)を使用、または証明書を使用。
Connections from proxy アクティブプロキシから許可する接続タイプを選択します。複数の接続タイプを同時に選択できます(テストや別の接続タイプへの切り替えに便利です)。既定値は「No encryption」です。
Issuer 許可する証明書の発行者。証明書はまず CA(認証局)で検証されます。有効で CA によって署名されている場合、Issuer フィールドを使用して許可する CA をさらに制限できます。このフィールドは任意で、Zabbix 環境で複数の CA の証明書を使用している場合に利用することを想定しています。
Subject 許可する証明書のサブジェクト。証明書はまず CA で検証されます。有効で CA によって署名されている場合、Subject フィールドを使用して Subject 文字列の値を 1 つだけ許可できます。このフィールドが空の場合、設定された CA によって署名された有効な証明書はすべて受け入れられます。
PSK identity 事前共有鍵の識別文字列。
PSK identity に機密情報を含めないでください。どの PSK を使用するかを受信側に通知するため、ネットワーク上で暗号化されずに送信されます。
PSK 事前共有鍵(16 進文字列)。最大長: Zabbix が GnuTLS または OpenSSL ライブラリを使用する場合は 512 16 進桁(256 バイトの PSK)、Zabbix が mbed TLS(PolarSSL)ライブラリを使用する場合は 64 16 進桁(32 バイトの PSK)。例: 1f87b595725ac58dd977beef14b97461a7c1045b9a1c963065002c5473194952

Timeouts タブでは、対応しているアイテムタイプの グローバル タイムアウトを上書きできます。

Parameter Description
Timeouts for item types アイテムのタイムアウト を(タイプに基づいて)設定します。
Global - グローバルタイムアウトを使用します(各アイテムタイプのグレー表示された Timeout フィールドに表示されます)。
Override - カスタムタイムアウトを設定します(各アイテムタイプの Timeout フィールド)。許可範囲: 1 - 600 秒(既定値: グローバル タイムアウトから継承)。時間サフィックス(例: 30s、1m)および ユーザーマクロ がサポートされます。

Global timeouts リンクをクリックすると、グローバル タイムアウトを設定できます。なお、Global timeouts リンクは、Super admin タイプのユーザーで、Administration > General Webインターフェースセクションへの権限を持つ場合にのみ表示されます。

プロキシレベルのタイムアウトはグローバルタイムアウトを上書きしますが、設定済み の個別アイテムタイムアウトによって上書きされることに注意してください。

プロキシのメジャーバージョンがサーバーのメジャーバージョンと一致しない場合、Timeouts for item types の横に アイコンが表示され、ホバー時のメッセージは「Timeouts disabled because the proxy and server versions do not match」となります。 このような場合、プロキシはプロキシ設定ファイルの Timeout パラメータを使用します。

既存のプロキシの編集フォームには、次の追加ボタンがあります。

  • Refresh configuration - プロキシの設定を更新します。
  • Clone - 既存のプロキシのプロパティを基に新しいプロキシを作成します。
  • Delete - プロキシを削除します。
ホスト設定

ホスト設定フォームの Monitored by フィールドを使用して、個別のホストをプロキシまたはプロキシグループで監視するように指定できます。

ホストの一括更新も、ホストをプロキシまたはプロキシグループで監視するように指定する別の方法です。