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のインストール方法は環境と要件に応じて選択できます:

  1. パッケージインストール: 本番環境での標準的な選択
  2. ソースコンパイル: カスタマイズが必要な場合
  3. Docker: 開発・テスト環境や コンテナ化環境
  4. クラウド: スケーラビリティと管理性が重要な場合

次のセクションでは、インストール完了後の初期設定について詳しく説明します。


参考リンク

← 前へ: 3.1 システム要件と準備 | 次へ: 3.3 初期設定とセットアップ →