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 - ミューテックスの一覧(BSD システムでは空です)
snmp_cache_reload SNMPキャッシュを再読み込みします — すべてのホストのSNMPエンジンプロパティ(engine time、engine boots、engine id、認証情報)をクリアします。SNMPの問題をトラブルシューティングする際に、グローバルキャッシュのクリアを強制するために使用します。
housekeeper_execute ハウスキーピング手順を開始します。ハウスキーピング手順が現在進行中の場合は無視されます。
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認証情報を自動的に再読み込みします。-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'ユーザーに切り替わります。このユーザーはシステム上に存在する必要があります。 プロキシを'root'として実行するには、プロキシの設定ファイルで'AllowRoot'パラメータを適切に変更する必要があります。

設定ファイル

zabbix_proxyの設定の詳細については、設定ファイルのオプションを参照してください。

プロキシのプロセスタイプとスレッド

  • agent poller - ワーカースレッドを持つ、パッシブチェック用の非同期ポーラープロセス
  • availability manager - ホストの可用性更新用プロセス
  • browser poller - ブラウザアイテムチェック用ポーラー
  • configuration syncer - 設定データのインメモリキャッシュを管理するプロセス
  • data sender - プロキシデータ送信プロセス
  • discovery manager - デバイスディスカバリ用のマネージャープロセス
  • discovery worker - ディスカバリマネージャーからのディスカバリタスクを処理するプロセス
  • 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プロキシプロセスは、内部item zabbix[process,<type>,<mode>,<state>] を使用して監視できます。

ヒストリーシンカーのトランザクション統計

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などの追加パラメータは、それぞれメモリバッファのサイズとバッファ内のデータの最大保持期間を定義します。

注意:設定が矛盾している場合、プロキシはエラーを出力して起動に失敗します。例えば、以下の場合です。

  • ProxyBufferModeが「hybrid」または「memory」に設定されていて、ProxyMemoryBufferSizeが「0」の場合
  • ProxyBufferModeが「hybrid」または「memory」に設定されていて、ProxyLocalBufferが「0」でない場合

ロケール

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

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

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