4 Zabbixプロキシ

概要

Zabbixプロキシは、1つ以上の監視対象から監視データを収集し、その情報をZabbixサーバーに送信するプロセスであり、基本的にサーバーに代わって機能します。収集されたすべてのデータはローカルにバッファリングされてから、プロキシが属するZabbixサーバーに転送されます。

プロキシのデプロイはオプションですが、単一のZabbixサーバーの負荷を分散するのに非常に役立つ場合があります。プロキシがデータを収集する場合、サーバーのCPUとディスクI/Oの負荷が少なくなります。

Zabbixプロキシはローカル管理者がいなくても、リモートロケーション、ブランチ、ネットワークを一元的に監視するための理想的なソリューションです。

Zabbixプロキシにはサーバーとは別のデータベースが必要です。

ZabbixプロキシでサポートされているデータベースはSQLite、MySQL、PostgreSQLであることに注意してください。 Oracleの使用は自己責任であり、たとえば、ローレベルディスカバリルールの戻り値のように、いくつかの制限が含まれる場合があります。

参照: 分散環境でのプロキシの使用

プロキシの起動

パッケージを使用してインストールした場合

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 サーバーから設定データを要求します。
diaginfo[=<section>] プロキシのログファイルに診断情報を収集します。 historycache - history cache の統計情報;
preprocessing - preprocessing manager の統計情報;
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 -R diaginfo

# プロキシのログファイルに history cache の統計情報を収集します:
zabbix_proxy -R diaginfo=historycache

ランタイム制御を使用して SNMP キャッシュを再読み込みする例:

zabbix_proxy -R snmp_cache_reload

SNMPv3 インターフェースが Zabbix UI から更新された場合、ほとんどのケースで Zabbix はそのインターフェースの新しい SNMPv3 credentials を自動的に再読み込みします。-R snmp_cache_reload は、認証情報の変更後もポーリングが失敗し続ける場合(たとえば 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' ユーザーに切り替わります。このユーザーはシステム上に存在している必要があります。 プロキシ設定ファイルの AllowRoot パラメータを適切に変更した場合にのみ、'root' としてプロキシを実行できます。

設定ファイル

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.0.22以降、プロキシのログファイルはファイル所有者のみが読み書きできる権限で作成されます。さらに、ファイルは所有者グループによって読み取り可能です。それ以外の権限はすべて拒否されます。

さまざまな種類のZabbixプロキシプロセスは、zabbix[process,<type>,<mode>,<state>] 内部 アイテム を使用して監視できます。

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

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 以降のすべての新規インストールに適用されます。

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

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

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

ロケール

いくつかのテキスト形式のアイテムを正しく処理できるようにするため、プロキシにはUTF-8のロケールが必要であることに注意してください。最近のほとんどのUNIXライクなシステムにはデフォルトでUTF-8ロケールがありますが、システムによっては具体的に設定しなければ使用することができません。

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

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