1 プロキシ

概要

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

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

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

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

プロキシが必要とするのは、Zabbix サーバーへの 1 本の TCP 接続だけです。このため、ファイアウォールの設定は 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
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 サーバーがしばらく停止しており、プロキシが大量のデータを収集していた場合、その後サーバーが起動すると過負荷になる可能性があります(history cache の使用率がしばらく 95-100% のままになります)。この過負荷により、チェックの処理が本来より遅くなるなど、パフォーマンス低下が発生することがあります。このような状況で発生する問題を回避するため、history cache の過負荷による障害を防ぐ保護機能が実装されました。

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

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

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

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

History write
cache usage
Zabbix server mode Zabbix server action
80% に達する Wait プロキシデータの受け入れを停止するが、throttling list(後で接続する対象として優先順位付けされたプロキシの一覧)は維持する。
60% まで下がる Throttled スロットリングリストの処理を開始するが、まだプロキシデータは受け入れない。
20% まで下がる Normal スロットリングリストを破棄し、通常どおりプロキシデータの受け入れを開始する。

この動作をメトリックと関連付けるには、内部アイテム 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 タイプのユーザーで、AdministrationGeneral の Webインターフェースセクションに対する権限を持つ場合にのみ表示されます。

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

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

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

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

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

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

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