4 Zabbixプロキシ
概要
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
Zabbix UI から SNMPv3 インターフェースを更新した場合、ほとんどのケースでは 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- ブラウザーアイテムチェック用のポーラー;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 7.4.6以降では、プロキシのログファイルはファイル所有者のみが読み書き可能な権限で作成されます。さらに、ファイルは所有者グループからも読み取り可能です。それ以外の権限はすべて拒否されます。
さまざまな種類の 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プロキシは、Zabbixサーバーと同じサポートされているプラットフォームの一覧で動作します。
メモリバッファ
メモリバッファを使用すると、新しいデータ(アイテムの値、ネットワークディスカバリ、ホストの自動登録)をバッファに保存し、データベースにアクセスせずに Zabbix サーバーへアップロードできます。 メモリバッファは、Zabbix 7.0 でプロキシ向けに導入されました。
Zabbix 7.0 より前のインストールでは、収集されたデータは Zabbix サーバーへアップロードする前にデータベースに保存されていました。 これらのインストールでは、Zabbix 7.0 へアップグレードした後もこの動作がデフォルトのままです。
最適なパフォーマンスのため、プロキシでメモリバッファの使用を設定することを推奨します。
これは、ProxyBufferMode の値を disk(既存インストール向けのハードコードされたデフォルト)から hybrid(推奨)または memory に変更することで可能です。
また、メモリバッファサイズ(ProxyMemoryBufferSize パラメーター)を設定する必要もあります。
ハイブリッドモードでは、プロキシが停止した場合、バッファがいっぱいになった場合、またはデータが古くなりすぎた場合に、未送信データをデータベースへフラッシュすることで、データ損失からバッファが保護されます。 すべての値がデータベースにフラッシュされると、プロキシは再びメモリバッファの使用に戻ります。
メモリモードではメモリバッファが使用されますが、データ損失に対する保護はありません。 プロキシが停止した場合、またはメモリが過剰に埋まった場合、未送信データは破棄されます。
ハイブリッドモード(ProxyBufferMode=hybrid)は、Zabbix 7.0 以降のすべての新規インストールに適用されます。
ProxyMemoryBufferSize や ProxyMemoryBufferAge などの追加パラメーターは、それぞれメモリバッファサイズとバッファ内データの最大保持時間を定義します。
設定が競合している場合、プロキシはエラーを出力して起動に失敗することに注意してください。たとえば、次のような場合です。
ProxyBufferModeがhybridまたはmemoryに設定されていて、ProxyMemoryBufferSizeが0。ProxyBufferModeがhybridまたはmemoryに設定されていて、ProxyLocalBufferが0ではない。
ロケール
プロキシが一部のテキストアイテムを正しく解釈できるように、UTF-8ロケールが必要であることに注意してください。 ほとんどの最新のUnix系システムではデフォルトでUTF-8ロケールが設定されていますが、システムによっては明示的に設定する必要がある場合があります。
メンテナンス中のキューの計算
Zabbixプロキシはメンテナンス期間を認識しません。詳細はメンテナンス中のキューの計算を参照してください。