1 プロキシ

概要

Zabbix プロキシは、Zabbix サーバーに代わってパフォーマンスおよび可用性データを収集できます。
これにより、プロキシはデータ収集の負荷の一部を引き受け、Zabbix サーバーの負荷を軽減できます。

また、すべての エージェント と プロキシ が 1 台の Zabbix サーバーに報告し、すべてのデータが中央で収集される場合、プロキシを使用することは集中監視と分散監視を実装する最も簡単な方法です。

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

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

プロキシが必要とする TCP 接続は、Zabbix サーバーへの 1 本だけです。
そのため、ファイアウォールのルールを 1 つ設定するだけでよく、ファイアウォールを回避しやすくなります。

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

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

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

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

Function Supported by proxy
Items
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
Item value preprocessing Yes
Network discovery Yes
Active agent autoregistration Yes
Low-level discovery Yes 2
Remote commands Yes
Calculating triggers No
Processing events No
Event correlation No
Sending alerts No

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

過負荷からの保護

Zabbixサーバーがしばらくダウンしていて、プロキシが大量のデータを収集し、その後サーバーが起動すると、サーバーが過負荷になる可能性があります(ヒストリキャッシュの使用率がしばらくの間95-100%のままになる)。 この過負荷はパフォーマンスの低下を引き起こし、チェックの処理が本来よりも遅くなります。 このシナリオによるヒストリキャッシュの過負荷による問題を回避するために、保護機能が実装されています。

Zabbixサーバーのヒストリキャッシュが満杯になると、ヒストリキャッシュへの書き込みアクセスが制限され、サーバーのデータ収集プロセスが停止します。 最も一般的なヒストリキャッシュの過負荷のケースは、サーバーダウン後にプロキシが収集したデータをアップロードする場合です。 これを回避するためにプロキシのスロットリングが追加されました(現在は無効化できません)。

ヒストリキャッシュの使用率が80%に達すると、Zabbixサーバーはスロットリングモードに入ります。 スロットリングモードでは、サーバーはヒストリキャッシュの使用率が60%未満の場合にのみプロキシデータを受け入れ、受け入れるプロキシをローテーションします。 ヒストリキャッシュの使用率が20%未満になると、サーバーは通常モードに戻ります。

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

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

上記の情報は、次の表で説明できます。

ヒストリ書き込み
キャッシュ使用率
Zabbixサーバーモード Zabbixサーバーの動作
80%に達する 待機 プロキシデータの受け入れを停止し、スロットリングリスト(後で連絡するプロキシの優先リスト)を維持します。
60%に達する 通常だがスロットリングの準備 データ受け入れを判断する際に非常に大きなプロキシアップロード(10kレコード超)を拒否する場合があり、他のプロキシデータの受け入れは継続します。
20%まで下がる 通常 スロットリングリストを破棄し、プロキシデータの受け入れを通常通り開始します。

このZabbixサーバーの動作をメトリックと相関させるには、zabbix[wcache,history,pused]内部アイテムを使用できます。

設定

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

プロキシの追加

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

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

Parameter Description
Proxy name プロキシ名を入力します。プロキシ設定ファイルの Hostname パラメーターと同じ名前である必要があります。
Proxy group プロキシの 負荷分散/高可用性 用に、1つのプロキシグループを選択します。
Address for active agents 監視対象のアクティブ エージェントまたは sender が接続する先のアドレスを入力します。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 - 600s(デフォルト: グローバル タイムアウトから継承)です。時間サフィックス(例: 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 - プロキシを削除する
ホストの設定

ホスト設定フォームの監視方法フィールドで、個々のホストをプロキシまたはプロキシグループで監視するように指定できます。

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