【入門編】Zabbixプロキシ(Proxy)構築入門:拠点間監視と負荷分散を実現するアーキテクチャ設計 – 運用監視・オブザーバビリティ活用バイブル

こんにちは!インフラの現場を支えるエンジニアの皆さん、日々の運用監視お疲れ様です。

「本社のZabbixサーバから、遠隔地にある支店のネットワーク機器やサーバを監視したい」
「クラウド上の監視基盤から、オンプレミスの閉域網内にあるシステムをごっそり監視したい」

そんな壁にぶつかったことはありませんか?
ここで安易に「VPNを張って、遠隔地から直接Zabbixサーバのポートをバチバチに開ける」なんて設計をすると、ネットワーク管理者に怒られるだけでなく、セキュリティ面でも夜しか眠れなくなります。

そんな時に救世主となるのが「Zabbixプロキシ(Proxy)」です。
これをマスターすれば、拠点間の監視が劇的にスマートになり、本体サーバの負荷も綺麗に分散できるようになりますよ。今日はその神髄を、優しく紐解いていきましょう。

—

1. そもそも「Zabbixプロキシ」とは何者か?

一言で言うと、Zabbixプロキシは「本体(Zabbixサーバ)の代わりに最前線でデータを集め、一時的に溜め込んで、本体にまとめて報告する優秀なパワードスーツ」です。

通常、Zabbixサーバは自分でターゲット(監視対象)にアクセスし、データを集め、DBに書き込みます。しかし、監視対象が遠隔地にある場合、以下の問題が発生します。

  • ネットワークの遅延と不安定さ: WAN回線越しに直接監視すると、タイムアウトが頻発して「偽の障害アラート(ノイズ)」の嵐になる。
  • サーバの負荷: 数千台の機器を1台のサーバで直に監視すると、ZabbixサーバのプロセスやDBが悲鳴を上げる。
  • セキュリティリスク: 拠点ごとにファイアウォールの穴をあけまくる必要がある。

Zabbixプロキシを現地に1台置けば、プロキシがローカルでガンガン監視データを収集し、「アクティブモード」と呼ばれる通信方式で、自分からZabbixサーバへデータを送り届けます。つまり、遠隔地側から本社側へ向けて外向きに通信(アウトbound)するだけで済むため、ファイアウォールの設計も非常にクリーンになるのです。

—

2. 今回構築するアーキテクチャの全体像

今回は、最も現場で使われる「アクティブ・プロキシ構成」を構築します。

[ 拠点A (Zabbixサーバ & DB) ] <--- (TCP 10051 / 暗号化通信) --- [ 拠点B (Zabbixプロキシ) ] ---> 監視対象機器

  • 通信の方向: ZabbixプロキシからZabbixサーバへ接続しに行きます(サーバ側からプロキシを叩きに行くわけではありません)。
  • データ保持: 万が一、拠点間の回線が一時的に切断されても、プロキシ側のローカルDB(SQLiteなど)にデータをバッファリング(退避)し、復旧後にサーバへ自動送信します。データがロストしません。

それでは、実際に手を動かして構築していきましょう!

—

3. Zabbixプロキシのインストール(CentOS / Rocky Linux系を想定)

まずは、プロキシとして動作するマシン(拠点側の軽量なサーバ等)にZabbixプロキシをインストールします。ここでは軽量かつ高速な「SQLite3」を内蔵DBとして使います(大規模でなければSQLiteで十分すぎるほど動きます)。

① Zabbixリポジトリの導入

Zabbix公式リポジトリのインストール(※環境のバージョンに合わせて読み替えてください)
sudo rpm -Uvh https://repo.zabbix.com/zabbix/6.4/rhel/9/x86_64/zabbix-release-6.4-1.el9.noarch.rpm
sudo dnf clean all

② プロキシ本体とSQLiteのインストール

zabbix-proxyと、ローカルDBとして使うsqlite3をインストール
sudo dnf install zabbix-proxy-sqlite3 zabbix-sql-scripts -y

これだけで、エンジン本体のインストールは完了です。驚くほど早いですよね。

—

4. 最重要!基礎セットアップと設定ファイルの書き方

次に、プロキシの心臓部である設定ファイル(`/etc/zabbix/zabbix_proxy.conf`)を書き換えます。
現場で確実に動かすための「魂のコメント付き設定」を以下に示します。

==========================================
Zabbix Proxy 基礎設定ファイル
==========================================

【1】ZabbixサーバのIPアドレス(またはホスト名)を指定
プロキシはこのサーバに向かってデータを送りにいきます。
Server=192.168.10.100

【2】Zabbixサーバ側で登録する「プロキシ名(Hostname)」
※後ほどWebGUI側で登録する名前と「完全一致」させる必要があります!
Hostname=Tokyo-Branch-Proxy

【3】使用するデータベースの指定(今回は軽量なSQLite3)
DBName=/var/lib/zabbix/zabbix_proxy.db

【4】プロキシ自体の稼働ログ出力先
LogFile=/var/log/zabbix/zabbix_proxy.log
LogFileSize=0

【5】データの送信間隔やスレッド数(デフォルトのままでも動きますがチューニングの要所)
StartPollers=10

たったこれだけです。設定ファイルを保存したら、データベースの初期化はプロキシパッケージがよしなにやってくれるため、すぐに起動テストに移れます。

—

5. セキュリティの要:暗号化(TLS)通信の設定

「社内ネットワークだから暗号化しなくていいや」……それは令和のインフラエンジニアとしてはNGです。プロキシとサーバ間の通信も、標準でTLS暗号化をかけましょう。追加の証明書ファイルいらずで、Zabbix標準の事前共有鍵(PSK)でセキュアに保護できます。

① PSK(事前共有鍵)の生成

プロキシ側で、ランダムな鍵文字列を生成してファイルに保存します。

256ビットのランダムな鍵を生成してファイルに書き込む
openssl rand -hex 32 | sudo tee /etc/zabbix/zabbix_proxy.psk
権限をZabbixユーザーだけが見られるように厳格化
sudo chown zabbix:zabbix /etc/zabbix/zabbix_proxy.psk
sudo chmod 400 /etc/zabbix/zabbix_proxy.psk

生成された中身(例: `a1b2c3d4…` のような文字列)をメモしておいてください。後でZabbixサーバのGUI画面に入力します。

② 設定ファイルにPSKのパスを追加

`/etc/zabbix/zabbix_proxy.conf` の末尾に以下を追記します。

— TLS暗号化設定 —
TLSAccept=psk
TLSConnect=psk
TLSIdentity=TokyoBranchPSK01
TLSPSKFile=/etc/zabbix/zabbix_proxy.psk

これでプロキシ側の準備は完璧です!プロキシを起動して自動起動を有効化しておきます。

sudo systemctl enable –now zabbix-proxy

—

6. Zabbixサーバ(WebGUI)側の設定と動作確認

プロキシを動かしたら、次は本体(Zabbixサーバ)に「こういうプロキシからデータを受け取るからね」と教え込みます。

① Zabbix WebGUIでのプロキシ登録

1. Zabbixの管理画面にログインし、[管理] > [Zabbixプロキシ] を開く。
2. 右上の [プロキシの作成] をクリック。
3. 以下のように入力:

  • プロキシ名: `Tokyo-Branch-Proxy` (※設定ファイルの `Hostname` と一字一句同じに!)
  • プロキシモード: アクティブ
  • 接続先: (アクティブなので不要、またはIP制限等)
  • 暗号化:
  • 接続からの接続: `PSK`
  • 接続への接続: `PSK`
  • PSK identity: `TokyoBranchPSK01`
  • PSK: (先ほどプロキシ側で生成したランダム文字列を貼り付け)

4. [追加] をクリック!

② HelloWorld的動作確認:プロキシが生きているか確認する!

設定が正しく完了していれば、数秒〜数十秒後、Zabbixサーバの [管理] > [Zabbixプロキシ] の一覧画面で、「最終動作時刻(Last seen)」が更新され、緑色のアイコンに変わります。

この瞬間、「よし、つながった!」とエンジニアとしての小さくも確かな達成感を味わえるはずです。

もし繋がらない場合は、以下のコマンドでログを確認してください。秒で原因が分かります。

sudo tail -f /var/log/zabbix/zabbix_proxy.log

よくある原因は、ファイアウォール(firewalld等)でサーバ側のポート(TCP 10051)がブロックされているケースです。`sudo firewall-cmd –add-port=10051/tcp –permanent` を忘れないようにしましょう。

—

おわりに

いかがでしたでしょうか?
Zabbixプロキシの導入は、一見すると難しそうに見えますが、「プロキシは本体に向かって外向きに通信し、ローカルで集めたデータを運ぶ郵便屋さん」という本質的イメージさえ掴んでしまえば、怖くありません。

このアーキテクチャをマスターすれば、拠点展開のスピードが劇的に上がり、ネットワークの制約に縛られない美しい監視網が手に入ります。あなたの毎日の運用管理が、よりスリリングで、そして何より「安心できる」ものになりますように。

それでは、次の現場でお会いしましょう!

タイトルとURLをコピーしました