1 プロキシ

概要

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

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

Zabbixプロキシは以下の用途に使用できます:

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

プロキシはZabbixサーバーへのTCP接続が1つだけ必要です。 このため、ファイアウォールを回避するのが容易になり、ファイアウォールルールを1つだけ設定すれば済みます。

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

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

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

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

機能 プロキシによるサポート
アイテム
Zabbixエージェント監視 はい
Zabbixエージェント監視(アクティブ) はい 1
シンプルチェック はい
トラッパーアイテム はい
SNMP監視 はい
SNMPトラップ はい
IPMI監視 はい
JMX監視 はい
ログファイル監視 はい
内部監視 はい
SSH監視 はい
Telnet監視 はい
外部監視 はい
依存アイテム はい
スクリプトアイテム はい
ブラウザーアイテム はい
組み込みWeb監視 はい
アイテム値の事前処理 はい
ネットワークディスカバリ はい
アクティブエージェントの自動登録 はい
ローレベルディスカバリ はい 2
リモートコマンド はい
トリガーの計算 いいえ
イベントの処理 いいえ
イベントの相関 いいえ
アラートの送信 いいえ

[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フロントエンドでプロキシを設定します。

プロキシの追加

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

  • Administration > Proxies に移動します
  • Create proxy をクリックします

パラメータ 説明
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 タブでは、プロキシとの暗号化接続を必須にできます。

パラメータ 説明
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 タブでは、対応するアイテムタイプに対してグローバルタイムアウトを上書きできます。

パラメータ 説明
Timeouts for item types アイテムタイムアウト(タイプに基づく)を設定します。
Global - グローバルタイムアウトを使用します(アイテムタイプごとのグレー表示された Timeout フィールドに表示されます)。
Override - カスタムタイムアウトを設定します(各アイテムタイプの Timeout フィールド内)。許可範囲: 1 - 600s(デフォルト: global タイムアウトから継承)。時間サフィックス(例: 30s、1m)およびユーザーマクロをサポートします。

Global timeouts リンクをクリックすると、global タイムアウトを設定できます。Global timeouts リンクは、Administration > General Webインターフェースセクションへの権限を持つ Super admin タイプのユーザーにのみ表示されることに注意してください。

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

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

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

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

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

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