Zabbix アーキテクチャ概要
Zabbix は、分散システムを監視するための包括的なソリューションです。主要な構成要素は以下の通りです。
- Zabbix Server: システムのコアコンポーネント。データを受信し、アラートをトリガーします。また、収集されたデータをデータベースに保存する役割も担います。
- Zabbix Agent: モニター対象となる機器にインストールされるクライアントソフト。監視データを実行して収集し、Server に送信します。現在は C 言語で実装された標準版(Agent)と、Go 言語で開発されたバージョン 2(Agent 2)が存在し、後者は高並列処理に対応しています。
- Zabbix Proxy: Server を介さずにデータを収集・前処理を行い、バッチ転送することで Server 負荷を軽減します。
- Web フロントエンド: 設定管理、データ表示、アラート設定を行うためのユーザーインターフェース。
- データベース: 設定情報および時系列データやイベント情報を永続化します。PostgreSQL や MySQL などが利用可能です。
Linux サーバーへの Zabbix Agent インストール手順
ここでは、RHEL/CentOS 系ディストリビューションを対象とし、パッケージマネージャー(Yum/DNF)を使用してエージェントをインストールし、特定の Zabbix Server へ接続する構成を行います。
1. インストールスクリプトの作成
一括インストールと設定を自動化するためのシェルスクリプトを作成します。
vi /opt/scripts/zabbix_agent_setup.sh
2. スクリプトの実装内容
以下のコードをコピーして保存します。このスクリプトはリポジトリの追加、パッケージのインストール、設定ファイルの生成、そしてサービス起動までを一括で実行するように設計されています。
#!/bin/bash
#
# Zabbix Agent Automatic Setup Script
# Target: RHEL/CentOS 7+ / Rocky Linux
#
set -e
# 設定パラメータ
ZABBIX_SERVER_ADDRESS="192.168.10.252" # メインサーバーの IP または FQDN
ZABBIX_VERSION="latest" # バージョン指定(例: latest, 5.4. など)
AGENT_INSTALL_DIR="/var/lib/zabbix" # データ保管先
CONF_FILE_PATH="/etc/zabbix/zabbix_agentd.conf"
LOG_FILE="/var/log/zabbix/zabbix_agent.log"
echo "--- Starting Zabbix Agent Installation ---"
# 1. Zabbix リポジトリの登録
# 公式リポジトリを有効化
dnf install -y wget
wget https://repo.zabbix.com/zabbix/${ZABBIX_VERSION%/}/rhel/8/$(/usr/bin/arch)/x86_64/zabbix-release-$(pwd | awk -F '/' '{print $NF}')all.rpm -O /tmp/zabbix-release.rpm
if [ $? -ne 0 ]; then
echo "Warning: Could not download release package automatically. Please ensure manual configuration."
fi
# 2. パッケージのインストール
echo "Installing Zabbix Agent..."
dnf makecache
dnf install -y zabbix-agent zabbix-agent2
# 3. 設定ファイルのカスタマイズ
echo "Configuring Zabbix Agent..."
if [ ! -f "$CONF_FILE_PATH" ]; then
echo "Error: Configuration file not found at $CONF_FILE_PATH"
exit 1
fi
# 既存の設定を上書きしてサーバー接続情報を反映
cp $CONF_FILE_PATH $CONF_FILE_PATH.bak
cat > $CONF_FILE_PATH <<EOF
### Zabbix Agent Configuration ###
# Active checks and Passive checks settings
Hostname=auto
ServerActive=${ZABBIX_SERVER_ADDRESS}:10051
Server=${ZABBIX_SERVER_ADDRESS}
# Logging
LogFile=${LOG_FILE}
PidFile=/var/run/zabbix/zabbix_agentd.pid
# Include external scripts
Include=/etc/zabbix/zabbix_agentd.d/*.conf
EOF
# ファイル権限の調整
chown root:zabbix $CONF_FILE_PATH
chmod 644 $CONF_FILE_PATH
# 4. サービスの有効化と起動
echo "Starting and Enabling Zabbix Agent Service..."
systemctl daemon-reload
systemctl enable zabbix-agent
systemctl start zabbix-agent
# 5. ステータス確認
if systemctl is-active --quiet zabbix-agent; then
echo "SUCCESS: Zabbix Agent is running."
echo "Server Address: ${ZABBIX_SERVER_ADDRESS}"
else
echo "FAILED: Service failed to start. Check logs with 'journalctl -u zabbix-agent'"
exit 1
fi
echo "--- Installation Complete ---"</code>
3. スクリプトの実行と検証
作成したスクリプトに対して実行権限を与え、テスト実行を行います。必要に応じてネットワークファイアウォール(ポート 10051)の確認も併せて行ってください。
chmod +x /opt/scripts/zabbix_agent_setup.sh
/opt/scripts/zabbix_agent_setup.sh