3.3 初期設定とセットアップ

Zabbixインストール後の基本設定と運用開始のための初期設定

初期設定概要

Zabbixのインストール完了後、実際の監視を開始するためには適切な初期設定が必要です。この段階では、セキュリティの強化、基本的な監視設定、運用に必要な各種設定を行います。

初期設定の重要性

適切な初期設定により以下が実現されます:

  • セキュリティの確保: 不正アクセスの防止
  • 効率的な監視: 必要な情報の確実な収集
  • 運用の最適化: 管理負荷の軽減
  • スケーラビリティ: 将来の拡張への対応

データベースの初期設定

MySQLの最適化設定

設定ファイルの調整

ini
# /etc/mysql/mysql.conf.d/mysqld.cnf の最適化例
[mysqld]
# 基本設定
bind-address = 127.0.0.1
port = 3306
socket = /var/run/mysqld/mysqld.sock

# 文字セット設定
character-set-server = utf8mb4
collation-server = utf8mb4_bin

# InnoDB設定(メモリ8GBサーバーの例)
innodb_buffer_pool_size = 4G
innodb_log_file_size = 256M
innodb_flush_log_at_trx_commit = 2
innodb_file_per_table = 1
innodb_doublewrite = 1

# 接続設定
max_connections = 1000
connect_timeout = 10
wait_timeout = 600
interactive_timeout = 600

# キャッシュ設定
table_open_cache = 5000
table_definition_cache = 1000
query_cache_type = 0
query_cache_size = 0

# ログ設定
log_error = /var/log/mysql/error.log
slow_query_log = 1
slow_query_log_file = /var/log/mysql/slow.log
long_query_time = 5

# 一時テーブル設定
tmp_table_size = 128M
max_heap_table_size = 128M

データベースのメンテナンス設定

sql
-- 定期的なメンテナンス用プロシージャの作成
DELIMITER $$
CREATE PROCEDURE OptimizeZabbixTables()
BEGIN
    DECLARE done INT DEFAULT FALSE;
    DECLARE table_name VARCHAR(128);
    DECLARE cur CURSOR FOR 
        SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES 
        WHERE TABLE_SCHEMA = 'zabbix' AND ENGINE = 'InnoDB';
    DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;
    
    OPEN cur;
    
    read_loop: LOOP
        FETCH cur INTO table_name;
        IF done THEN
            LEAVE read_loop;
        END IF;
        
        SET @sql = CONCAT('OPTIMIZE TABLE zabbix.', table_name);
        PREPARE stmt FROM @sql;
        EXECUTE stmt;
        DEALLOCATE PREPARE stmt;
    END LOOP;
    
    CLOSE cur;
END$$
DELIMITER ;

-- 履歴データクリーンアップのイベント作成
CREATE EVENT IF NOT EXISTS cleanup_old_data
ON SCHEDULE EVERY 1 DAY
STARTS CURRENT_TIMESTAMP
DO
BEGIN
    DELETE FROM history WHERE clock < UNIX_TIMESTAMP(DATE_SUB(NOW(), INTERVAL 30 DAY));
    DELETE FROM history_uint WHERE clock < UNIX_TIMESTAMP(DATE_SUB(NOW(), INTERVAL 30 DAY));
    DELETE FROM history_str WHERE clock < UNIX_TIMESTAMP(DATE_SUB(NOW(), INTERVAL 7 DAY));
    DELETE FROM history_text WHERE clock < UNIX_TIMESTAMP(DATE_SUB(NOW(), INTERVAL 7 DAY));
    DELETE FROM history_log WHERE clock < UNIX_TIMESTAMP(DATE_SUB(NOW(), INTERVAL 7 DAY));
END;

-- イベントスケジューラーの有効化
SET GLOBAL event_scheduler = ON;

PostgreSQLの最適化設定

conf
# /etc/postgresql/15/main/postgresql.conf の最適化例
# メモリ設定(8GBサーバーの例)
shared_buffers = 2GB
effective_cache_size = 6GB
work_mem = 64MB
maintenance_work_mem = 512MB

# 接続設定
max_connections = 200
listen_addresses = 'localhost'
port = 5432

# WAL設定
wal_buffers = 16MB
checkpoint_completion_target = 0.9
max_wal_size = 2GB
min_wal_size = 1GB

# ログ設定
log_destination = 'stderr'
logging_collector = on
log_directory = 'pg_log'
log_filename = 'postgresql-%Y-%m-%d_%H%M%S.log'
log_min_duration_statement = 1000

# 統計情報収集
track_activities = on
track_counts = on
track_functions = all

Webインターフェースの初期設定

初回セットアップウィザード

アクセスとセットアップ開始

1. ブラウザでアクセス: http://your-server-ip/zabbix
2. セットアップウィザードが自動的に開始
3. 言語選択: 日本語を選択可能

前提条件の確認

確認項目:
- PHP バージョン(8.0以降)
- PHP拡張モジュール
- PHP設定値
- データベース接続

データベース接続設定

設定項目:
Database type: MySQL
Database host: localhost
Database port: 3306
Database name: zabbix
Username: zabbix
Password: [設定したパスワード]

Zabbixサーバー設定

設定項目:
Host: localhost
Port: 10051
Name: Zabbix server

管理者アカウントの設定

デフォルトパスワードの変更

初期ログイン情報:
Username: Admin
Password: zabbix

必須変更事項:
1. 管理者パスワードの変更
2. ユーザープロファイルの設定
3. タイムゾーンの設定

ユーザー管理の初期設定

sql
-- データベースで直接パスワードを変更する場合
-- (Web UI での変更を推奨)
UPDATE users SET passwd = MD5('new_secure_password') WHERE alias = 'Admin';

タイムゾーンと地域設定

PHP設定での時刻設定

ini
# /etc/php/8.2/apache2/php.ini
date.timezone = Asia/Tokyo

Zabbixサーバー設定での時刻同期

bash
# NTPクライアントの設定
apt install chrony

# Chrony設定例
cat > /etc/chrony/chrony.conf << EOF
pool 2.pool.ntp.org iburst
pool 1.asia.pool.ntp.org iburst
driftfile /var/lib/chrony/drift
makestep 1.0 3
rtcsync
EOF

# サービス開始
systemctl enable chrony
systemctl start chrony

# 時刻同期確認
chrony sources -v

Web UI での地域設定

Administration → General → GUI:
- Default time zone: (GMT+09:00) Asia/Tokyo
- Date format: Y-m-d
- Time format: H:i:s

基本的なセキュリティ設定

ネットワークセキュリティ

ファイアウォール設定の強化

bash
# UFW(Ubuntu Firewall)の設定例
ufw --force reset
ufw default deny incoming
ufw default allow outgoing

# SSH アクセス
ufw allow from 192.168.1.0/24 to any port 22

# Web UI アクセス
ufw allow from 192.168.1.0/24 to any port 80
ufw allow from 192.168.1.0/24 to any port 443

# Zabbix エージェント通信
ufw allow from 192.168.1.0/24 to any port 10050
ufw allow from 192.168.1.0/24 to any port 10051

# ファイアウォール有効化
ufw --force enable

SSL/TLS設定の強化

apache
# /etc/apache2/sites-available/zabbix-ssl.conf
<VirtualHost *:443>
    ServerName zabbix.yourdomain.com
    DocumentRoot /usr/share/zabbix
    
    # SSL設定
    SSLEngine on
    SSLCertificateFile /etc/ssl/certs/zabbix.crt
    SSLCertificateKeyFile /etc/ssl/private/zabbix.key
    
    # セキュリティヘッダー
    Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains"
    Header always set X-Content-Type-Options nosniff
    Header always set X-Frame-Options DENY
    Header always set X-XSS-Protection "1; mode=block"
    Header always set Referrer-Policy "strict-origin-when-cross-origin"
    
    # セキュリティ設定
    <Directory "/usr/share/zabbix">
        AllowOverride None
        Require all granted
        
        # PHPセキュリティ設定
        php_admin_value expose_php Off
        php_admin_value display_errors Off
        php_admin_value log_errors On
    </Directory>
    
    # 不要なディレクトリのアクセス拒否
    <Directory "/usr/share/zabbix/conf">
        Require all denied
    </Directory>
</VirtualHost>

認証設定の強化

Web UI セッション設定

php
// /usr/share/zabbix/conf/zabbix.conf.php 追加設定
// セッションタイムアウト(秒)
$ZBX_SESSION_TIMEOUT = 1800; // 30分

// セッションCookie設定
ini_set('session.cookie_httponly', 1);
ini_set('session.cookie_secure', 1);
ini_set('session.use_strict_mode', 1);

LDAP認証の設定

Administration → Authentication:
1. Authentication type: LDAP
2. LDAP settings:
   - Host: ldap.yourdomain.com
   - Port: 389 (or 636 for LDAPS)
   - Base DN: ou=users,dc=yourdomain,dc=com
   - Search attribute: uid
   - Bind DN: cn=zabbix,ou=services,dc=yourdomain,dc=com
   - Bind password: [LDAP bind password]

アクセス制御の設定

IPアドレス制限

apache
# Apache設定での IP制限例
<Directory "/usr/share/zabbix">
    <RequireAll>
        Require ip 192.168.1.0/24
        Require ip 10.0.0.0/8
        Require not ip 192.168.1.100
    </RequireAll>
</Directory>

ユーザーグループとロールの設定

Administration → User groups:
1. 読み取り専用オペレータ
   - GUI access: Internal
   - Users status: Enabled
   - Frontend access: Default

2. 上級オペレータ
   - GUI access: Internal
   - Debug mode: Enabled
   - Users status: Enabled

3. スーパー管理者
   - GUI access: Internal
   - Debug mode: Enabled
   - Users status: Enabled
   - Frontend access: Default

基本監視設定

Zabbixエージェントの設定

エージェント設定ファイル

ini
# /etc/zabbix/zabbix_agentd.conf
# パッシブチェック設定
Server=127.0.0.1,192.168.1.10
ListenPort=10050
ListenIP=0.0.0.0

# アクティブチェック設定
ServerActive=192.168.1.10:10051
Hostname=zabbix-server

# ログ設定
LogFile=/var/log/zabbix/zabbix_agentd.log
LogFileSize=10
DebugLevel=3

# セキュリティ設定
AllowRoot=0
User=zabbix

# パフォーマンス設定
StartAgents=5
RefreshActiveChecks=60
BufferSend=5
BufferSize=100
MaxLinesPerSecond=20

# タイムアウト設定
Timeout=3
UnsafeUserParameters=0

# ユーザーパラメータ例
UserParameter=mysql.ping,mysqladmin -uzabbix -p'password' ping 2>/dev/null | grep -c alive
UserParameter=mysql.uptime,mysqladmin -uzabbix -p'password' status | grep -oE 'Uptime: [0-9]+'

ホストの追加と基本監視

Zabbixサーバー自身の監視設定

Configuration → Hosts → Create host:
1. Host name: Zabbix server
2. Templates: 
   - Linux by Zabbix agent
   - Zabbix server health
3. Groups: Zabbix servers
4. Interfaces:
   - Agent: 127.0.0.1:10050
   - JMX: 127.0.0.1:12345 (必要に応じて)

基本テンプレートの確認

推奨テンプレート:
- Linux by Zabbix agent: OS基本監視
- Apache by HTTP: Webサーバー監視  
- MySQL by Zabbix agent: データベース監視
- Zabbix server health: Zabbixサーバー自身の監視

アクション設定

メール通知の設定

Administration → Media types → Email:
1. Name: Email
2. Type: Email
3. SMTP server: mail.yourdomain.com
4. SMTP server port: 587
5. SMTP security: STARTTLS
6. Authentication: Username and password
7. Username: [email protected]
8. Password: [メールパスワード]

基本アクションの作成

Configuration → Actions → Create action:
1. Name: Send email on problems
2. Conditions:
   - Trigger severity >= Warning
   - Host group = Linux servers
3. Operations:
   - Send message to users: Admin
   - Subject: Problem: {EVENT.NAME}
   - Message: 
     Problem started at {EVENT.TIME} on {EVENT.DATE}
     Problem name: {EVENT.NAME}
     Host: {HOST.NAME}
     Severity: {EVENT.SEVERITY}

運用設定

ログ管理設定

ログローテーション設定

bash
# /etc/logrotate.d/zabbix
/var/log/zabbix/*.log {
    weekly
    missingok
    rotate 52
    compress
    delaycompress
    notifempty
    create 0640 zabbix zabbix
    postrotate
        /bin/kill -SIGUSR1 `cat /var/run/zabbix/zabbix_server.pid 2> /dev/null` 2> /dev/null || true
        /bin/kill -SIGUSR1 `cat /var/run/zabbix/zabbix_agentd.pid 2> /dev/null` 2> /dev/null || true
    endscript
}

バックアップ戦略

データベースバックアップスクリプト

bash
#!/bin/bash
# /usr/local/bin/zabbix_backup.sh

BACKUP_DIR="/backup/zabbix"
DATE=$(date +%Y%m%d_%H%M%S)
DB_NAME="zabbix"
DB_USER="zabbix"
DB_PASS="password"

# ディレクトリ作成
mkdir -p ${BACKUP_DIR}

# データベースバックアップ
mysqldump -u${DB_USER} -p${DB_PASS} \
    --single-transaction \
    --routines \
    --triggers \
    ${DB_NAME} | gzip > ${BACKUP_DIR}/zabbix_db_${DATE}.sql.gz

# 設定ファイルバックアップ
tar czf ${BACKUP_DIR}/zabbix_config_${DATE}.tar.gz \
    /etc/zabbix/ \
    /usr/share/zabbix/conf/

# 古いバックアップの削除(7日以上古いもの)
find ${BACKUP_DIR} -name "*.gz" -mtime +7 -delete

echo "Backup completed: ${DATE}"

バックアップの自動実行設定

bash
# crontab -e
# 毎日午前3時にバックアップ実行
0 3 * * * /usr/local/bin/zabbix_backup.sh >> /var/log/zabbix_backup.log 2>&1

監視の確認

基本動作確認チェックリスト

markdown
## サービス確認
- [ ] Zabbixサーバーサービスが稼働中
- [ ] Zabbixエージェントサービスが稼働中
- [ ] Webサーバーが稼働中
- [ ] データベースサービスが稼働中

## 通信確認
- [ ] Web UI にアクセス可能
- [ ] エージェント通信が正常
- [ ] データベース接続が正常

## 監視機能確認
- [ ] ホストが正常に登録されている
- [ ] アイテムがデータを収集している
- [ ] トリガーが正常に動作している
- [ ] 通知が正常に送信される

## セキュリティ確認
- [ ] デフォルトパスワードが変更済み
- [ ] ファイアウォール設定が適切
- [ ] SSL/TLS が設定済み
- [ ] アクセス制限が設定済み

パフォーマンス監視

Zabbix内部メトリクスの監視

監視すべき内部メトリクス:
- zabbix[process,poller,avg,busy]
- zabbix[process,trapper,avg,busy]  
- zabbix[wcache,values,all]
- zabbix[vcache,buffer,pfree]
- zabbix[rcache,buffer,pfree]

まとめ

Zabbixの初期設定では以下のポイントが重要です:

  1. セキュリティファースト: デフォルト設定のまま運用しない
  2. 適切な監視設定: 必要十分な監視項目の設定
  3. 運用の自動化: バックアップとメンテナンスの自動化
  4. パフォーマンス最適化: データベースとシステムの調整
  5. 継続的な改善: 監視内容の定期的な見直し

これで第3部「インストールと初期設定」が完了しました。次の第4部では、実際の監視機能について詳しく学習していきます。


参考リンク

← 前へ: 3.2 インストール方法 | 目次に戻る