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サーバーの履歴キャッシュがいっぱいになると、履歴キャッシュへの書き込みアクセスが
スロットリングされ、サーバーのデータ収集プロセスが停止します。履歴キャッシュの
過負荷が最もよく発生するのは、サーバー停止後にプロキシが収集済みデータをアップロードする場合です。これを回避するため、
プロキシのスロットリングが追加されました(現在は無効化できません)。

Zabbixサーバーは、履歴キャッシュ使用率が 80% に達すると、プロキシからのデータ受信を停止します。
その代わりに、それらのプロキシはスロットリングリストに追加されます。これは、キャッシュ使用率が
60% まで低下するまで続きます。その後、サーバーはスロットリングリストで定義された順に、プロキシからのデータ受信を 1 台ずつ再開します。
つまり、スロットリング期間中に最初にデータのアップロードを試みたプロキシが最初に処理され、
その処理が完了するまで、サーバーは他のプロキシからのデータを受信しません。

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

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

履歴書き込み
キャッシュ使用率
Zabbixサーバーのモード Zabbixサーバーの動作
80% に達する 待機 プロキシデータの受信を停止しますが、スロットリングリスト(後で接続するプロキシの優先順位付きリスト)は維持します。
60% まで低下 スロットリング中 スロットリングリストの処理を開始しますが、引き続きプロキシデータは受信しません。
20% まで低下 通常 スロットリングリストを破棄し、通常どおりプロキシデータの受信を開始します。

この Zabbixサーバーの動作は、zabbix[wcache,history,pused] 内部アイテムを使用してメトリクスと関連付けることができます。

設定

Zabbix プロキシサーバーをインストールして設定したのち、Zabbixフロントエンドでプロキシの設定をします。

プロキシの追加

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 タイプのユーザーで、AdministrationGeneral Webインターフェースセクションへの権限を持つ場合にのみ表示されます。

サポートされるアイテムタイプ:
- Zabbix エージェント(パッシブチェックとアクティブチェックの両方)
- Simple checkicmpping*vmware.* アイテムを除く)
- SNMP エージェント(SNMP walk[OID] および get[OID] アイテムのみ)
- External check
- Database monitor
- HTTP エージェント
- SSH エージェント
- TELNET エージェント
- Script
- Browser

Override で設定したタイムアウトはグローバル設定より優先されますが、アイテム設定 で個別のアイテムタイムアウトが設定されている場合は、それがさらに優先されます。

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

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

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

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

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