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 - rwlockmutexprocessing は、プロセス種別と番号(例: 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 で決まり、1サイクルあたりの削除上限は ProxyLocalBuffer および ProxyOfflineBuffer によって決まります。
Zabbixサーバーのハウスキーピング手順とは異なり、プロキシの housekeeper プロセスは housekeeper テーブルを使用せず、各ハウスキーピングサイクルで古くなったすべてのデータを削除します。

サポートされているプラットフォーム

Zabbixプロキシは、Zabbixサーバーと同じサポートされているプラットフォームの一覧で動作します。

メモリバッファ

メモリバッファを使用すると、新しいデータ(アイテムの値、ネットワークディスカバリ、ホストの自動登録)をバッファに保存し、データベースにアクセスせずに Zabbix サーバーへアップロードできます。 メモリバッファは、Zabbix 7.0 でプロキシ向けに導入されました。

Zabbix 7.0 より前のインストールでは、収集されたデータは Zabbix サーバーへアップロードする前にデータベースに保存されていました。 これらのインストールでは、Zabbix 7.0 へアップグレードした後もこの動作がデフォルトのままです。

最適なパフォーマンスのため、プロキシでメモリバッファの使用を設定することを推奨します。 これは、ProxyBufferMode の値を disk(既存インストール向けのハードコードされたデフォルト)から hybrid(推奨)または memory に変更することで可能です。 また、メモリバッファサイズ(ProxyMemoryBufferSize パラメーター)を設定する必要もあります。

ハイブリッドモードでは、プロキシが停止した場合、バッファがいっぱいになった場合、またはデータが古くなりすぎた場合に、未送信データをデータベースへフラッシュすることで、データ損失からバッファが保護されます。 すべての値がデータベースにフラッシュされると、プロキシは再びメモリバッファの使用に戻ります。

メモリモードではメモリバッファが使用されますが、データ損失に対する保護はありません。 プロキシが停止した場合、またはメモリが過剰に埋まった場合、未送信データは破棄されます。

ハイブリッドモード(ProxyBufferMode=hybrid)は、Zabbix 7.0 以降のすべての新規インストールに適用されます。

ProxyMemoryBufferSizeProxyMemoryBufferAge などの追加パラメーターは、それぞれメモリバッファサイズとバッファ内データの最大保持時間を定義します。

設定が競合している場合、プロキシはエラーを出力して起動に失敗することに注意してください。たとえば、次のような場合です。

  • ProxyBufferModehybrid または memory に設定されていて、ProxyMemoryBufferSize0
  • ProxyBufferModehybrid または memory に設定されていて、ProxyLocalBuffer0 ではない。

ロケール

プロキシが一部のテキストアイテムを正しく解釈できるように、UTF-8ロケールが必要であることに注意してください。 ほとんどの最新のUnix系システムではデフォルトでUTF-8ロケールが設定されていますが、システムによっては明示的に設定する必要がある場合があります。

メンテナンス中のキューの計算

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