Zabbixの基本概念とデータ構造
Zabbixは、ネットワーク、サーバー、アプリケーションの可用性とパフォーマンスを監視するためのエンタープライズ向けソリューションです。監視データは主に以下の2つの形式で保持されます。
- ヒストリ (History): 収集された個々の監視データの生の値。
- トレンド (Trends): 1時間ごとの最小値、最大値、平均値を集計した統計データ。
データベースの準備と権限設定
Zabbix ServerおよびProxyは、設定や監視データを保存するためにSQLデータベースを必要とします。以下はMySQL/MariaDBを使用した初期設定の例です。
-- データベースの作成
CREATE DATABASE zabbix_master_db CHARACTER SET utf8 COLLATE utf8_bin;
-- ユーザーの作成と権限付与
CREATE USER 'zbx_admin'@'192.168.1.%' IDENTIFIED BY 'secure_password';
GRANT ALL PRIVILEGES ON zabbix_master_db.* TO 'zbx_admin'@'192.168.1.%';
FLUSH PRIVILEGES;
Zabbix Serverのインストールと構成
Ubuntu環境におけるパッケージを利用したZabbix Serverの基本設定手順を説明します。
# リポジトリの登録とインストール
wget https://repo.zabbix.com/zabbix/4.0/ubuntu/pool/main/z/zabbix-release/zabbix-release_4.0-3+bionic_all.deb
dpkg -i zabbix-release_4.0-3+bionic_all.deb
apt update
apt install -y zabbix-server-mysql zabbix-frontend-php zabbix-agent
# 設定ファイルの編集
vi /etc/zabbix/zabbix_server.conf
# 以下の項目を修正
DBHost=192.168.1.100
DBName=zabbix_master_db
DBUser=zbx_admin
DBPassword=secure_password
データベースのスキーマをインポートします。
zcat /usr/share/doc/zabbix-server-mysql/create.sql.gz | mysql -uzbx_admin -p -h 192.168.1.100 zabbix_master_db
分散監視を実現するZabbix Proxyの活用
Zabbix Proxyは、Serverに代わって監視データを収集し、一括してServerへ送信します。これにより、Serverの負荷軽減や、ネットワーク的に孤立した拠点の監視が可能になります。
Proxyの種類
- アクティブモード: Proxyが自らServerに接続し、設定情報を取得・データを送信します。
- パッシブモード: ServerがProxyに接続し、監視指示を送りデータを受け取ります。
Proxyの構成例 (アクティブモード)
# Proxyパッケージのインストール
apt install -y zabbix-proxy-mysql
# 設定の変更
vi /etc/zabbix/zabbix_proxy.conf
ProxyMode=0 # 0はアクティブモード
Server=192.168.1.50
Hostname=Regional-Proxy-A
DBHost=localhost
DBName=zabbix_proxy_local
DBUser=zabbix
JMXによるJavaアプリケーション(Tomcat)の監視
Zabbix Java Gatewayを使用することで、TomcatなどのJMX対応アプリケーションからヒープメモリやスレッド数の情報を取得できます。
Tomcat側のcatalina.shに以下のJMXオプションを追加します。
CATALINA_OPTS="$CATALINA_OPTS \
-Dcom.sun.management.jmxremote \
-Dcom.sun.management.jmxremote.port=12345 \
-Dcom.sun.management.jmxremote.ssl=false \
-Dcom.sun.management.jmxremote.authenticate=false \
-Djava.rmi.server.hostname=192.168.1.20"
Zabbix Server/Proxy側でJava Gatewayを有効化します。
# zabbix_server.conf の設定
JavaGateway=127.0.0.1
JavaGatewayPort=10052
StartJavaPollers=5
Zabbix Agentの最適化
監視対象ホスト(Agent)の設定において、Serverからの要求を許可するServerパラメータと、Agent自らデータを送信するServerActiveを適切に設定します。
# /etc/zabbix/zabbix_agentd.conf
Server=192.168.1.50,192.168.1.51 # 接続を許可するServer/Proxy
ServerActive=192.168.1.50 # アクティブチェック送信先
Hostname=Web-App-Server-01
パフォーマンスチューニングのポイント
大規模環境では、zabbix_server.conf内のプロセス数を調整することが重要です。
- StartPollers: 一般的な監視項目の収集プロセス数。
- StartDBSyncers: データベースへの書き込みプロセス数。
- HistoryCacheSize: データベース書き込み前のキャッシュサイズ。