3.2 インストール方法
環境に応じたZabbixの導入手順とベストプラクティス
インストール方法概要
Zabbixの導入には複数の方法があり、それぞれ異なる特徴と適用場面があります。環境の要件、運用方針、技術的制約を考慮して最適な方法を選択することが重要です。
インストール方法の比較
方法 | 難易度 | 柔軟性 | 管理容易性 | 適用場面 |
---|---|---|---|---|
パッケージ | 低 | 中 | 高 | 本番環境・標準構成 |
ソースコンパイル | 高 | 高 | 低 | カスタム要件・最新機能 |
Docker | 中 | 中 | 高 | 開発・テスト・コンテナ環境 |
クラウド | 低 | 高 | 高 | スケーラブル・マネージド |
パッケージによるインストール
事前準備
リポジトリの追加
Red Hat系(RHEL/CentOS/AlmaLinux)
bash
# Zabbix公式リポジトリの追加(RHEL 9)
rpm -Uvh https://repo.zabbix.com/zabbix/6.4/rhel/9/x86_64/zabbix-release-6.4-1.el9.noarch.rpm
# パッケージ情報の更新
dnf clean all && dnf update
Debian系(Ubuntu/Debian)
bash
# 必要パッケージのインストール
apt update
apt install wget curl gnupg2
# Zabbix公式リポジトリの追加(Ubuntu 22.04)
wget https://repo.zabbix.com/zabbix/6.4/ubuntu/pool/main/z/zabbix-release/zabbix-release_6.4-1+ubuntu22.04_all.deb
dpkg -i zabbix-release_6.4-1+ubuntu22.04_all.deb
apt update
データベースの準備
MySQL/MariaDBのインストールと設定
bash
# MySQL 8.0のインストール(Ubuntu)
apt install mysql-server mysql-client
# セキュリティ設定
mysql_secure_installation
# Zabbix用データベースとユーザーの作成
mysql -u root -p
sql
-- データベースとユーザーの作成
CREATE DATABASE zabbix CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;
CREATE USER 'zabbix'@'localhost' IDENTIFIED BY 'SecurePassword123!';
GRANT ALL PRIVILEGES ON zabbix.* TO 'zabbix'@'localhost';
FLUSH PRIVILEGES;
EXIT;
PostgreSQLのインストールと設定
bash
# PostgreSQL 15のインストール(Ubuntu)
apt install postgresql postgresql-contrib
# Zabbix用データベースとユーザーの作成
sudo -u postgres createuser --pwprompt zabbix
sudo -u postgres createdb -O zabbix -E Unicode -T template0 zabbix
Zabbixサーバーのインストール
パッケージのインストール
MySQL使用の場合
bash
# Zabbixサーバー、フロントエンド、エージェントのインストール
apt install zabbix-server-mysql zabbix-frontend-php zabbix-apache-conf zabbix-sql-scripts zabbix-agent
# または Red Hat系の場合
dnf install zabbix-server-mysql zabbix-web-mysql zabbix-apache-conf zabbix-sql-scripts zabbix-selinux-policy zabbix-agent
PostgreSQL使用の場合
bash
# PostgreSQL版のインストール
apt install zabbix-server-pgsql zabbix-frontend-php zabbix-apache-conf zabbix-sql-scripts zabbix-agent
データベーススキーマの導入
bash
# MySQLの場合
zcat /usr/share/zabbix-sql-scripts/mysql/server.sql.gz | mysql --default-character-set=utf8mb4 -uzabbix -p zabbix
# PostgreSQLの場合
zcat /usr/share/zabbix-sql-scripts/postgresql/server.sql.gz | sudo -u zabbix psql zabbix
設定ファイルの編集
Zabbixサーバー設定
bash
# 設定ファイルの編集
nano /etc/zabbix/zabbix_server.conf
ini
# /etc/zabbix/zabbix_server.conf の主要設定
ListenPort=10051
SourceIP=
# データベース設定
DBHost=localhost
DBName=zabbix
DBUser=zabbix
DBPassword=SecurePassword123!
DBPort=3306
# パフォーマンス設定
StartPollers=10
StartTrappers=5
StartPingers=5
StartDiscoverers=3
StartHTTPPollers=5
StartTimers=2
StartEscalators=2
# ログ設定
LogFile=/var/log/zabbix/zabbix_server.log
LogFileSize=10
DebugLevel=3
# キャッシュ設定
CacheSize=32M
HistoryCacheSize=64M
HistoryIndexCacheSize=16M
TrendCacheSize=32M
ValueCacheSize=64M
Apache/PHP設定
bash
# Apache設定の確認
cat /etc/zabbix/apache.conf
apache
# /etc/zabbix/apache.conf
<Directory "/usr/share/zabbix">
Options FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
<IfModule mod_php.c>
php_value max_execution_time 300
php_value memory_limit 128M
php_value post_max_size 16M
php_value upload_max_filesize 2M
php_value max_input_time 300
php_value max_input_vars 10000
php_value always_populate_raw_post_data -1
php_value date.timezone Asia/Tokyo
</IfModule>
</Directory>
サービスの起動と自動開始設定
bash
# サービスの開始と自動起動設定
systemctl restart zabbix-server zabbix-agent apache2
systemctl enable zabbix-server zabbix-agent apache2
# サービス状態の確認
systemctl status zabbix-server
systemctl status zabbix-agent
systemctl status apache2
ソースからのコンパイルインストール
開発環境の準備
必要パッケージのインストール
bash
# Ubuntu/Debianの場合
apt update
apt install build-essential libmysqlclient-dev libssl-dev libsnmp-dev \
libevent-dev libpcre3-dev libcurl4-openssl-dev libxml2-dev \
libssh2-1-dev libiksemel-dev libldap2-dev
# Red Hat系の場合
dnf groupinstall "Development Tools"
dnf install mysql-devel openssl-devel net-snmp-devel libevent-devel \
pcre-devel libcurl-devel libxml2-devel libssh2-devel \
iksemel-devel openldap-devel
ソースコードの取得とコンパイル
bash
# ソースコードのダウンロード
cd /tmp
wget https://cdn.zabbix.com/zabbix/sources/stable/6.4/zabbix-6.4.12.tar.gz
tar -xzf zabbix-6.4.12.tar.gz
cd zabbix-6.4.12
# ユーザーとグループの作成
groupadd --system zabbix
useradd --system -g zabbix -d /usr/lib/zabbix -s /sbin/nologin -c "Zabbix Monitoring System" zabbix
コンパイル設定と実行
bash
# 設定オプションの確認
./configure --help
# MySQL使用でフル機能でコンパイル
./configure \
--prefix=/usr/local/zabbix \
--enable-server \
--enable-agent \
--with-mysql \
--with-openssl \
--with-libcurl \
--with-libxml2 \
--with-net-snmp \
--with-ssh2 \
--with-openipmi \
--with-ldap
# コンパイルとインストール
make -j$(nproc)
make install
設定ファイルとサービスの設定
bash
# 設定ディレクトリの作成
mkdir -p /etc/zabbix
mkdir -p /var/log/zabbix
mkdir -p /var/run/zabbix
# 設定ファイルのコピー
cp conf/zabbix_server.conf /etc/zabbix/
cp conf/zabbix_agentd.conf /etc/zabbix/
# 権限設定
chown -R zabbix:zabbix /var/log/zabbix
chown -R zabbix:zabbix /var/run/zabbix
systemdサービスファイルの作成
ini
# /etc/systemd/system/zabbix-server.service
[Unit]
Description=Zabbix Server
After=syslog.target network.target mysql.service
[Service]
Environment="CONFFILE=/etc/zabbix/zabbix_server.conf"
EnvironmentFile=-/etc/default/zabbix-server
Type=forking
Restart=on-failure
PIDFile=/var/run/zabbix/zabbix_server.pid
KillMode=control-group
ExecStart=/usr/local/zabbix/sbin/zabbix_server -c $CONFFILE
ExecStop=/bin/kill -SIGTERM $MAINPID
RestartSec=10s
User=zabbix
Group=zabbix
[Install]
WantedBy=multi-user.target
Dockerによるインストール
Docker Composeを使用した構成
docker-compose.ymlファイルの作成
yaml
# docker-compose.yml
version: '3.8'
services:
mysql:
image: mysql:8.0
container_name: zabbix-mysql
restart: unless-stopped
environment:
MYSQL_ROOT_PASSWORD: root_password
MYSQL_DATABASE: zabbix
MYSQL_USER: zabbix
MYSQL_PASSWORD: zabbix_password
volumes:
- mysql_data:/var/lib/mysql
command: --character-set-server=utf8mb4 --collation-server=utf8mb4_bin
zabbix-server:
image: zabbix/zabbix-server-mysql:6.4-alpine-latest
container_name: zabbix-server
restart: unless-stopped
environment:
DB_SERVER_HOST: mysql
MYSQL_DATABASE: zabbix
MYSQL_USER: zabbix
MYSQL_PASSWORD: zabbix_password
MYSQL_ROOT_PASSWORD: root_password
ports:
- "10051:10051"
volumes:
- zabbix_data:/var/lib/zabbix
depends_on:
- mysql
zabbix-web:
image: zabbix/zabbix-web-apache-mysql:6.4-alpine-latest
container_name: zabbix-web
restart: unless-stopped
environment:
DB_SERVER_HOST: mysql
MYSQL_DATABASE: zabbix
MYSQL_USER: zabbix
MYSQL_PASSWORD: zabbix_password
ZBX_SERVER_HOST: zabbix-server
PHP_TZ: Asia/Tokyo
ports:
- "80:8080"
- "443:8443"
volumes:
- zabbix_web:/etc/ssl/apache2
depends_on:
- mysql
- zabbix-server
zabbix-agent:
image: zabbix/zabbix-agent2:6.4-alpine-latest
container_name: zabbix-agent
restart: unless-stopped
environment:
ZBX_HOSTNAME: "Zabbix server"
ZBX_SERVER_HOST: zabbix-server
ports:
- "10050:10050"
depends_on:
- zabbix-server
volumes:
mysql_data:
zabbix_data:
zabbix_web:
Docker環境の起動
bash
# Docker Composeでサービス起動
docker-compose up -d
# ログの確認
docker-compose logs -f zabbix-server
# コンテナ状態の確認
docker-compose ps
Kubernetesでのデプロイ
Helmチャートを使用した導入
bash
# Helm リポジトリの追加
helm repo add zabbix-chart-6.4 https://cdn.zabbix.com/zabbix/sources/stable/6.4/helm-chart/
helm repo update
# 設定値ファイルの作成
cat > values.yaml << EOF
zabbixserver:
enabled: true
image:
repository: zabbix/zabbix-server-mysql
tag: 6.4-alpine-latest
postgresql:
enabled: false
mysql:
enabled: true
auth:
rootPassword: "rootpassword"
database: "zabbix"
username: "zabbix"
password: "zabbixpassword"
zabbixweb:
enabled: true
image:
repository: zabbix/zabbix-web-apache-mysql
tag: 6.4-alpine-latest
service:
type: LoadBalancer
EOF
# Zabbixのデプロイ
helm install zabbix zabbix-chart-6.4/zabbix -f values.yaml
クラウド環境でのデプロイ
AWS EC2での構築
CloudFormationテンプレート例
yaml
# zabbix-cloudformation.yaml
AWSTemplateFormatVersion: '2010-09-09'
Description: 'Zabbix Server on EC2'
Parameters:
InstanceType:
Type: String
Default: t3.medium
AllowedValues: [t3.small, t3.medium, t3.large, t3.xlarge]
KeyName:
Type: AWS::EC2::KeyPair::KeyName
Description: EC2 Key Pair for SSH access
Resources:
ZabbixSecurityGroup:
Type: AWS::EC2::SecurityGroup
Properties:
GroupDescription: Security group for Zabbix server
SecurityGroupIngress:
- IpProtocol: tcp
FromPort: 22
ToPort: 22
CidrIp: 0.0.0.0/0
- IpProtocol: tcp
FromPort: 80
ToPort: 80
CidrIp: 0.0.0.0/0
- IpProtocol: tcp
FromPort: 443
ToPort: 443
CidrIp: 0.0.0.0/0
- IpProtocol: tcp
FromPort: 10051
ToPort: 10051
CidrIp: 0.0.0.0/0
ZabbixInstance:
Type: AWS::EC2::Instance
Properties:
ImageId: ami-0c02fb55956c7d316 # Amazon Linux 2
InstanceType: !Ref InstanceType
KeyName: !Ref KeyName
SecurityGroupIds: [!Ref ZabbixSecurityGroup]
UserData:
Fn::Base64: !Sub |
#!/bin/bash
yum update -y
yum install -y docker
systemctl start docker
systemctl enable docker
# Docker Composeのインストール
curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
Google Cloud Platformでのデプロイ
gcloudコマンドでのVMインスタンス作成
bash
# Compute Engine インスタンスの作成
gcloud compute instances create zabbix-server \
--zone=asia-northeast1-a \
--machine-type=e2-standard-2 \
--image-family=ubuntu-2204-lts \
--image-project=ubuntu-os-cloud \
--boot-disk-size=20GB \
--boot-disk-type=pd-ssd \
--tags=zabbix-server
# ファイアウォールルールの作成
gcloud compute firewall-rules create allow-zabbix \
--allow tcp:80,tcp:443,tcp:10051,tcp:10050 \
--source-ranges 0.0.0.0/0 \
--target-tags zabbix-server
Microsoft Azureでのデプロイ
Azure Resource Manager テンプレート例
json
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"vmName": {
"type": "string",
"defaultValue": "zabbix-server"
},
"adminUsername": {
"type": "string",
"defaultValue": "azureuser"
},
"authenticationType": {
"type": "string",
"defaultValue": "sshPublicKey",
"allowedValues": ["sshPublicKey", "password"]
}
},
"variables": {
"vmSize": "Standard_B2s"
},
"resources": [
{
"type": "Microsoft.Compute/virtualMachines",
"apiVersion": "2021-03-01",
"name": "[parameters('vmName')]",
"location": "[resourceGroup().location]",
"properties": {
"hardwareProfile": {
"vmSize": "[variables('vmSize')]"
},
"osProfile": {
"computerName": "[parameters('vmName')]",
"adminUsername": "[parameters('adminUsername')]"
}
}
}
]
}
インストール後の確認
動作確認手順
bash
# サービス状態の確認
systemctl status zabbix-server
systemctl status zabbix-agent
systemctl status apache2
# ポートリスニング状況の確認
netstat -tlnp | grep :10051 # Zabbix Server
netstat -tlnp | grep :10050 # Zabbix Agent
netstat -tlnp | grep :80 # Web Interface
# ログファイルの確認
tail -f /var/log/zabbix/zabbix_server.log
tail -f /var/log/zabbix/zabbix_agentd.log
Webインターフェースへのアクセス
URL: http://your-server-ip/zabbix
デフォルトログイン:
ユーザー名: Admin
パスワード: zabbix
初期トラブルシューティング
よくある問題と解決策
データベース接続エラー
bash
# MySQL接続の確認
mysql -uzabbix -p -h localhost zabbix
# 設定ファイルの確認
grep -E "^DB" /etc/zabbix/zabbix_server.conf
権限エラー
bash
# ファイル権限の確認と修正
chown -R zabbix:zabbix /var/log/zabbix
chown -R zabbix:zabbix /var/run/zabbix
chmod 755 /var/log/zabbix
SELinux関連の問題
bash
# SELinux状態の確認
getenforce
# SELinuxポリシーの適用
setsebool -P httpd_can_network_connect on
setsebool -P zabbix_can_network on
まとめ
Zabbixのインストール方法は環境と要件に応じて選択できます:
- パッケージインストール: 本番環境での標準的な選択
- ソースコンパイル: カスタマイズが必要な場合
- Docker: 開発・テスト環境や コンテナ化環境
- クラウド: スケーラビリティと管理性が重要な場合
次のセクションでは、インストール完了後の初期設定について詳しく説明します。
参考リンク