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

概要

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

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

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

  • リモートロケーションの監視
  • 通信が不安定なロケーションの監視
  • 数千台のデバイスを監視する際のZabbixサーバーの負荷軽減
  • アプリケーションパフォーマンス監視(APM)のためのテレメトリデータの収集

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

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

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

Zabbixサーバーのデータベースから最新の設定変更を直接受信するプロキシは、Zabbixサーバーよりも新しい設定を持つ場合があります。これは、CacheUpdateFrequencyの値によって、Zabbixサーバーの設定更新が遅れる可能性があるためです。 その結果、プロキシがデータの収集を開始してZabbixサーバーに送信しても、Zabbixサーバーがそのデータを無視する場合があります。

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

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

[1] エージェントがアクティブチェックについてサーバーではなくプロキシに問い合わせるようにするには、エージェント設定ファイルのServerActiveパラメータにプロキシを指定する必要があります。
[2] LLDでは、Zabbixプロキシはデータの収集と前処理のみを行い、その後、さらなる処理のためにZabbixサーバーへ送信します。
[3] テレメトリデータは、プロキシでAPMが有効になっている場合にのみ収集されます(プロキシの設定のAPMタブを参照)。Zabbixサーバーはテレメトリデータを受信できません。

プロキシの機能

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

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

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

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

過負荷からの保護

Zabbixサーバーがしばらく停止しており、その間にプロキシが大量のデータを収集していた場合、サーバーの起動後に過負荷が発生する可能性があります(履歴キャッシュの使用率がしばらくの間95~100%のままになります)。 この過負荷により、チェックの処理速度が本来より遅くなり、パフォーマンスが低下する可能性があります。 履歴キャッシュの過負荷によって発生する問題を回避するため、この状況に対する保護機能が実装されています。

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

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

さらに、履歴キャッシュの使用率が60%を超えている場合、通常モード中でも、アップロード制限によってアップロードが途中で切り捨てられた個々のプロキシを、Zabbixサーバーが延期することがあります。 この判断は、サーバーがプロキシのアップロードを評価する時点で適用されるため、履歴キャッシュの使用率グラフにすぐに反映されない場合があります(内部アイテム zabbix[wcache,history,pused] とその更新間隔では、短時間のスパイクを検出できないことがあります)。

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

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

履歴書き込みキャッシュの使用率 Zabbixサーバーのモード Zabbixサーバーのアクション
60%超(「通常」モードで、80%に達するまで) 通常 アップロード制限によってアップロードバッチが途中で切り捨てられたプロキシを延期し、その他のプロキシからのデータの受け入れを継続します。
80%に到達 待機 プロキシデータの受け入れを停止しますが、スロットリングリスト(後で接続するプロキシの優先順位付きリスト)は保持します。
60%未満に低下(「待機」モード後) スロットリング 再びプロキシデータの受け入れを開始し、スロットリングリスト内のプロキシを順番に処理します。
20%未満に低下(「スロットリング」モード後) 通常 スロットリングリストを破棄し、通常どおりプロキシデータの受け入れを開始します。

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

設定

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

プロキシの追加

独自のインフラストラクチャにプロキシをインストールする代わりに、Zabbix Cloudにプロキシをデプロイできます。 デプロイするには、管理 > プロキシでCloudにプロキシを作成をクリックします。Zabbix Cloudが新しいブラウザータブで開きます。 そこでプロキシノードを作成した後、以下の説明に従ってZabbixのWebインターフェースでプロキシを設定します。 詳細については、Zabbix Cloudプロキシのセットアップを参照してください。

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

  1. 管理 > プロキシに移動します。
  2. プロキシの作成をクリックします。
  3. フォームにプロキシのパラメータを入力します。

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

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

パラメータ 説明
プロキシへの接続 サーバーがパッシブプロキシに接続する方法:暗号化なし(デフォルト)、PSK(事前共有鍵)または証明書を使用。
プロキシからの接続 アクティブプロキシから許可する接続の種類を選択します。複数の接続タイプを同時に選択できます(テストや別の接続タイプへの切り替えに便利です)。デフォルトは「暗号化なし」です。
発行者 証明書で許可される発行者。証明書はまずCA(認証局)で検証されます。有効でCAによって署名されている場合、発行者フィールドを使用して許可するCAをさらに制限できます。このフィールドは任意で、Zabbixのインストール環境が複数のCAの証明書を使用する場合に使用します。
サブジェクト 証明書で許可されるサブジェクト。証明書はまずCAで検証されます。有効でCAによって署名されている場合、サブジェクトフィールドを使用して、サブジェクト文字列の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

APMタブでは、プロキシでアプリケーションパフォーマンス監視(APM)を設定できます。 プロキシは、OpenTelemetryプロトコル(OTLP/gRPC)を介してアプリケーションまたはOpenTelemetryコレクターから送信されたテレメトリデータ(トレース、メトリクス、ログ)を収集し、データをテレメトリデータソースに書き込むことができます。

パラメータ 説明
データ収集を有効にする プロキシでテレメトリデータ収集を有効にするには、チェックボックスをオンにします。
テレメトリデータ収集を有効にする前に、プロキシ設定ファイルでStartAPMCollectorパラメータを1に設定します(APMをサポートするZabbixプロキシが必要です)。
1秒あたりの最大メッセージ数 プロキシが受け入れる1秒あたりのメッセージ数の最大値を設定します。
無制限 - すべての受信メッセージを受け入れます。
カスタム - 指定した1秒あたりのメッセージ数まで受け入れます。

メッセージとは、アプリケーション、OpenTelemetryコレクター、または別のテレメトリソースから送信されるOTLPリクエストです。サイズは送信元によって異なります。たとえば、OpenTelemetryコレクターは数千のスパンを1つのメッセージにまとめる場合がありますが、単純なアプリケーションはより小さなメッセージ(例:トレースごとに1つ)を送信する場合があります。

制限を超えると、プロキシはgRPCステータスコードUNAVAILABLE(一時的なエラー)で応答します。そのため、送信元は設定に応じて、後でメッセージの送信を再試行できます。
リソース属性 選択したカテゴリの受信テレメトリデータに追加するリソース属性を指定します(例:このプロキシが受信したすべてのデータに環境またはリージョンを示す属性を付加する)。これらの属性を使用してテレメトリデータをフィルタリングできます。たとえば、テレメトリクエリアイテムの条件で使用できます。

受信データに同じキーのリソース属性がすでに含まれている場合は、ここで指定した属性ではなく、受信した属性が保持されます。
キー 属性キーを入力します(例:deployment.environment、cloud.region)。選択したカテゴリ内で一意である必要があります。
値 属性値を入力します(例:production、eu-central-1)。空にすることもできます。
カテゴリ 属性を適用する受信データのカテゴリを選択します:トレース、メトリクス、またはログ。

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

パラメータ 説明
アイテムタイプのタイムアウト (タイプに基づく)アイテムのタイムアウトを設定します。
グローバル - グローバルタイムアウトを使用します(各アイテムタイプのグレー表示されたタイムアウトフィールドに表示されます)。
上書き - カスタムタイムアウトを設定します(各アイテムタイプのタイムアウトフィールドで設定します)。許可される範囲:1~600秒(デフォルト:グローバルタイムアウトから継承)。時間の接尾辞(例:30s、1m)とユーザーマクロがサポートされています。

グローバルタイムアウトリンクをクリックすると、グローバルタイムアウトを設定できます。グローバルタイムアウトリンクは、管理 > 一般設定のWebインターフェースセクションへの権限を持つ特権管理者タイプのユーザーにのみ表示されます。

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

プロキシのメジャーバージョンがサーバーのメジャーバージョンと一致しない場合、アイコンがアイテムタイプのタイムアウトの横に表示され、ホバー時に「プロキシとサーバーのバージョンが一致しないため、タイムアウトが無効です」というメッセージが表示されます。 この場合、プロキシはプロキシ設定ファイルのTimeoutパラメータを使用します。

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

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

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

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