プロキシ
概要
Zabbixプロキシは、1つ以上の監視対象デバイスから監視データを収集し、その情報をZabbixサーバーに送信するプロセスであり、実質的にサーバーの代理として動作します。 収集されたデータはすべてローカルにバッファーされ、その後、プロキシが属するZabbixサーバーに転送されます。
プロキシの導入は必須ではありませんが、単一のZabbixサーバーへの負荷分散に非常に有効です。 データ収集をプロキシのみが行う場合、サーバー側での処理はCPUおよびディスクI/Oの負荷が軽減されます。
Zabbixプロキシは、現地管理者がいない遠隔拠点、支社、ネットワークの集中監視に最適なソリューションです。
Zabbixプロキシには別個のデータベースが必要です。
Zabbixプロキシでサポートされるデータベースは、SQLite、MySQL、PostgreSQLです。
関連情報: 分散環境でのプロキシの使用
プロキシの実行
パッケージとしてインストールした場合
Zabbixプロキシはデーモンプロセスとして実行されます。 プロキシは次のコマンドで起動できます:
systemctl start zabbix-proxy
これはほとんどのGNU/Linuxシステムで動作します。 他のシステムでは、次のコマンドを実行する必要があるかもしれません:
/etc/init.d/zabbix-proxy start
同様に、Zabbixプロキシの停止/再起動/ステータス表示には、以下のコマンドを使用します:
systemctl stop zabbix-proxy
systemctl restart zabbix-proxy
systemctl status zabbix-proxy
手動で起動する
上記の方法で動作しない場合は、手動で起動する必要があります。
zabbix_proxy バイナリへのパスを見つけて、次を実行します。
zabbix_proxy
Zabbix プロキシでは、次のコマンドラインパラメータを使用できます。
-c --config <file> 設定ファイルへのパス
-f --foreground Zabbix プロキシをフォアグラウンドで実行する
-R --runtime-control <option> 管理機能を実行する
-T --test-config 設定ファイルを検証して終了する
-h --help このヘルプを表示する
-V --version バージョン番号を表示する
コマンドラインパラメータを指定して Zabbix プロキシを実行する例:
zabbix_proxy -c /usr/local/etc/zabbix_proxy.conf
zabbix_proxy --help
zabbix_proxy -V
ランタイム制御
ランタイム制御オプション:
| Option | Description | Target |
|---|---|---|
config_cache_reload |
設定キャッシュを再読み込みします。現在キャッシュを読み込み中の場合は無視されます。 アクティブな Zabbix プロキシは Zabbix サーバーに接続して設定データを要求します。 パッシブな Zabbix プロキシは、次回サーバーがプロキシに接続したときに Zabbix サーバーから設定データを要求します。 |
|
history_cache_clear=target |
ID で指定したアイテムの履歴キャッシュをクリアします。 アイテムの最初と最後の値を除く、すべての値に影響します。 |
target - アイテムの ID。 |
diaginfo[=<section>] |
プロキシのログファイルに診断情報を収集します。 | historycache - 履歴キャッシュ統計;preprocessing - 前処理マネージャー統計;locks - mutex の一覧(BSD システムでは空です)。 |
snmp_cache_reload |
SNMP キャッシュを再読み込みします - すべてのホストの SNMP エンジンプロパティ(engine time、engine boots、engine id、credentials)をクリアします。SNMP の問題をトラブルシュートする際に、グローバルなキャッシュクリアを強制するために使用します。 | |
housekeeper_execute |
housekeeping 手順を開始します。housekeeping 手順が現在進行中の場合は無視されます。 | |
log_level_increase[=<target>] |
ログレベルを上げます。target が指定されていない場合は、すべてのプロセスに影響します。 BSD システムではサポートされていません。 |
process type - 指定した種類のすべてのプロセス(例: poller)。すべての プロキシのプロセス種別 を参照してください。 process type,N - プロセス種別と番号(例: poller,3)pid - プロセス識別子( 1 から 65535)。より大きい値を指定する場合は、target を 'process type,N' として指定します。 |
log_level_decrease[=<target>] |
ログレベルを下げます。target が指定されていない場合は、すべてのプロセスに影響します。 BSD システムではサポートされていません。 |
|
prof_enable[=<target>] |
プロファイリングを有効にします。 target が指定されていない場合は、すべてのプロセスに影響します。 有効化されたプロファイリングでは、関数名ごとのすべての rwlock/mutex の詳細が表示されます。 |
process type - 指定した種類のすべてのプロセス(例: history syncer)。すべての プロキシのプロセス種別 を参照してください。 process type,N - プロセス種別と番号(例: history syncer,1)。pid - プロセス識別子( 1 から 65535)。より大きい値を指定する場合は、target を 'process type,N' として指定します。scope - rwlock、mutex、processing は、プロセス種別と番号(例: history syncer,1,processing)またはその種類のすべてのプロセス(例: history syncer,rwlock)と組み合わせて使用できます。 |
prof_disable[=<target>] |
プロファイリングを無効にします。 target が指定されていない場合は、すべてのプロセスに影響します。 |
process type - 指定した種類のすべてのプロセス(例: history syncer)。すべての プロキシのプロセス種別 を参照してください。 process type,N - プロセス種別と番号(例: history syncer,1)。pid - プロセス識別子( 1 から 65535)。より大きい値を指定する場合は、target を 'process type,N' として指定します。 |
ランタイム制御を使用してプロキシの設定キャッシュを再読み込みする例:
zabbix_proxy -c /usr/local/etc/zabbix_proxy.conf -R config_cache_reload
ランタイム制御を使用してアイテムの履歴キャッシュをクリアする例:
zabbix_proxy -c /usr/local/etc/zabbix_proxy.conf -R history_cache_clear=42243
ランタイム制御を使用して診断情報を収集する例:
# プロキシのログファイルに利用可能なすべての診断情報を収集します:
zabbix_proxy -R diaginfo
# プロキシのログファイルに履歴キャッシュ統計を収集します:
zabbix_proxy -R diaginfo=historycache
ランタイム制御を使用して SNMP キャッシュを再読み込みする例:
zabbix_proxy -R snmp_cache_reload
SNMPv3 インターフェースが Zabbix UI から更新された場合、ほとんどのケースでは Zabbix がそのインターフェースの新しい SNMPv3 credentials を自動的に再読み込みします。-R snmp_cache_reload は、credentials の変更後もポーリングが失敗し続ける場合(たとえば engineBoots/engineID の不整合や RFC 非準拠デバイスが原因の場合)、またはトラブルシューティングのためにグローバルな SNMP キャッシュのクリアを強制したい場合にのみ使用してください。
housekeeper の実行をトリガーするためにランタイム制御を使用する例:
zabbix_proxy -c /usr/local/etc/zabbix_proxy.conf -R housekeeper_execute
ログレベルを変更するためにランタイム制御を使用する例:
# すべてのプロセスのログレベルを上げます:
zabbix_proxy -c /usr/local/etc/zabbix_proxy.conf -R log_level_increase
# 2 番目の poller プロセスのログレベルを上げます:
zabbix_proxy -c /usr/local/etc/zabbix_proxy.conf -R log_level_increase=poller,2
# PID 1234 のプロセスのログレベルを上げます:
zabbix_proxy -c /usr/local/etc/zabbix_proxy.conf -R log_level_increase=1234
# すべての http poller プロセスのログレベルを下げます:
zabbix_proxy -c /usr/local/etc/zabbix_proxy.conf -R log_level_decrease="http poller"
プロセスユーザー
Zabbix プロキシは、root 以外のユーザーとして実行されるように設計されています。 起動した root 以外のユーザーで実行されます。 そのため、プロキシは任意の root 以外のユーザーとして問題なく実行できます。
'root' として実行しようとすると、ハードコードされた 'zabbix' ユーザーに切り替わります。このユーザーはシステム上に存在している必要があります。
プロキシを 'root' として実行できるのは、プロキシ設定ファイルの AllowRoot パラメータをそれに応じて変更した場合のみです。
設定ファイル
zabbix_proxy の設定方法の詳細については、設定ファイル のオプションを参照してください。
プロキシのプロセス種別とスレッド
agent poller- ワーカースレッドを持つ、パッシブチェック用の非同期ポーラープロセス;availability manager- ホストの可用性更新用プロセス;browser poller- browser item チェック用ポーラー;configuration syncer- 設定データのメモリ内キャッシュを管理するプロセス;data sender- プロキシデータ送信プロセス;discovery manager- デバイス発見用の管理プロセス;discovery worker- discovery manager からの発見タスクを処理するプロセス;history syncer- 履歴DB書き込みプロセス;housekeeper- 古いアイテム履歴を削除するプロセス;http agent poller- ワーカースレッドを持つ、HTTPチェック用の非同期ポーラープロセス;http poller- Web監視用ポーラー;icmp pinger- icmpping チェック用ポーラー;internal poller- 内部チェック用ポーラー;ipmi manager- IPMIポーラーの管理プロセス;ipmi poller- IPMIチェック用ポーラー;java poller- Javaチェック用ポーラー;odbc poller- ODBCチェック用ポーラー;poller- パッシブチェック用の通常のポーラー;preprocessing manager- 前処理ワーカースレッドを持つ前処理タスクの管理プロセス;preprocessing worker- データ前処理用スレッド;self-monitoring- サーバー内部統計を収集するプロセス;snmp poller- ワーカースレッドを持つ、SNMPチェック用の非同期ポーラープロセス(walk[OID]およびget[OID]アイテムのみ);snmp trapper- SNMPトラップ用トラッパー;task manager- 他のコンポーネントから要求されたタスクをリモート実行するプロセス(例: 障害をクローズする、障害を承認する、アイテム値を今すぐ確認する、リモートコマンド機能);trapper- アクティブチェック、トラップ、およびプロキシ通信用トラッパー;unreachable poller- 到達不能なデバイス用ポーラー;vmware collector- VMwareサービスからのデータ収集を担当する VMware データコレクター。
プロキシのログファイルを使用して、これらのプロセス種別を確認できます。
プロキシのログファイルは、ファイル所有者に対してのみ読み書き権限を持つように作成されます。さらに、ファイルは所有者グループによって読み取り可能です。それ以外の権限はすべて拒否されます。
さまざまな種類の Zabbix プロキシプロセスは、zabbix[process,<type>,<mode>,<state>] 内部 アイテム を使用して監視できます。
History syncerトランザクション統計
history syncerプロセスのタイトルには、history syncerトランザクションに関する詳細な統計が表示されます。
205276 ? S 0:00 zabbix_proxy: history syncer #1 [processed 1 values in 0.001179 (0.001167,0.000000) sec, idle 1 sec]
205277 ? S 0:00 zabbix_proxy: history syncer #2 [processed 0 values in 0.000022 (0.000000,0.000000) sec, idle 1 sec]
processed...in N (<timings>) sec に含まれる時間は、次のとおりです。
- アイテムの値をデータベースに書き込むのにかかった時間。
- アイテムデータ(状態、エラー)を更新するのにかかった時間。
ハウスキーピング手順
Zabbix プロキシには、古くなったアイテムの履歴データとトレンドを削除する housekeeper プロセスがあります。
このプロセスは、HousekeepingFrequency によって決まる頻度でサイクル実行され、各サイクルでの削除上限は ProxyLocalBuffer と ProxyOfflineBuffer によって決まります。
Zabbix サーバーのハウスキーピング手順とは異なり、プロキシの housekeeper プロセスは housekeeper テーブルを使用しません。代わりに、各ハウスキーピングサイクルで古くなったデータをすべて削除します。
サポートされるプラットフォーム
Zabbixプロキシは、Zabbixサーバーと同じ サポートされるプラットフォーム の一覧で動作します。
メモリバッファ
メモリバッファを使用すると、新しいデータ(アイテムの値、ネットワークディスカバリ、ホストの自動登録)をバッファに保存し、データベースにアクセスせずに Zabbix サーバーへアップロードできます。 メモリバッファは、Zabbix 7.0 でプロキシ向けに導入されました。
Zabbix 7.0 より前のインストールでは、収集したデータは Zabbix サーバーへアップロードする前にデータベースに保存されていました。 これらのインストールでは、Zabbix 7.0 へアップグレードした後も、この動作がデフォルトのままです。
最適なパフォーマンスのため、プロキシでメモリバッファの使用を設定することを推奨します。
これは、ProxyBufferMode の値を disk(既存のインストールに対するハードコードされたデフォルト)から hybrid(推奨)または memory に変更することで可能です。
また、メモリバッファサイズ(ProxyMemoryBufferSize パラメーター)を設定する必要もあります。
hybrid モードでは、プロキシが停止した場合、バッファがいっぱいになった場合、またはデータが古すぎる場合に、未送信データをデータベースへフラッシュすることでデータ損失から保護されます。 すべての値がデータベースへフラッシュされると、プロキシは再びメモリバッファの使用に戻ります。
memory モードではメモリバッファが使用されますが、データ損失に対する保護はありません。 プロキシが停止した場合、またはメモリが過剰に使用された場合、未送信データは破棄されます。
hybrid モード(ProxyBufferMode=hybrid)は、Zabbix 7.0 以降のすべての新規インストールに適用されます。
ProxyMemoryBufferSize や ProxyMemoryBufferAge などの追加パラメーターは、それぞれメモリバッファサイズとバッファ内データの最大経過時間を定義します。
設定に矛盾がある場合、プロキシはエラーを出力して起動に失敗することに注意してください。たとえば、次のような場合です。
ProxyBufferModeがhybridまたはmemoryに設定されていて、ProxyMemoryBufferSizeが0。ProxyBufferModeがhybridまたはmemoryに設定されていて、ProxyLocalBufferが0ではない。
ロケール
プロキシでは、一部のテキストアイテムを正しく解釈できるように、UTF-8 ロケールが必要です。 多くの最新の Unix 系システムでは UTF-8 ロケールがデフォルトになっていますが、システムによっては明示的に設定する必要があります。
メンテナンス中のキューの計算
Zabbixプロキシはメンテナンス期間を認識しません。詳細はメンテナンス中のキューの計算を参照してください。