— history・trends 分割ベースのチューニング
このドキュメントは、Zabbix 7.4環境でMySQLパーティション構造を適用し、Zabbixパッケージのインストールおよびスキーマロードまでの手順をまとめた実務向けガイドである。
1) 前提および範囲
- OS:Ubuntu 22.04
- Zabbix:7.4(運用でEOLに敏感な場合は7.0 LTS推奨)
- DB:MySQL 8.x
- Web:Apache + zabbix-frontend-php
- 目的:インストールとスキーマインポートまで。パーティション構築は次編から扱う。
運用環境でセキュリティ認証(コンプライアンス)を受ける必要がある場合、サポート期間が短いリリースは避けること。EOLに敏感な組織では7.0 LTSで固定するのが安全。
2) Zabbixリポジトリの追加
リポジトリ追加
# wget https://repo.zabbix.com/zabbix/7.4/release/ubuntu/pool/main/z/zabbix-release/zabbix-release_latest_7.4+ubuntu22.04_all.deb
# dpkg -i zabbix-release_latest_7.4+ubuntu22.04_all.deb
# apt update
チェックポイント
/etc/apt/sources.list.d/zabbix.listが生成されていることを確認apt update時にzabbix.com関連のインデックスが取得されることを確認
3) Zabbixサーバー/フロントエンド/エージェントのインストール
サーバー/フロントエンド/エージェントのインストール
# apt install -y zabbix-server-mysql zabbix-frontend-php zabbix-apache-conf zabbix-sql-scripts zabbix-agent2
Zabbix Agent2プラグイン(必要なものだけ選択してインストール)
# apt install -y zabbix-agent2-plugin-mongodb zabbix-agent2-plugin-mssql zabbix-agent2-plugin-postgresql
チェックポイント
/etc/zabbix/配下に設定ファイルが生成されていること(特にzabbix_server.conf)- Apacheのモジュール/設定が同時にインストールされ、
/etc/apache2/conf-enabled/zabbix.confがリンクされていることを確認
4) MySQLのインストール
# apt install -y mysql-server
チェックポイント
systemctl status mysql→active (running)- Ubuntu 22.04のデフォルト設定では
auth_socket認証が有効な場合がある
→ OSログインユーザーがrootでなければMySQLに接続できない点に注意
5) DB初期化(DB/ユーザー/権限/関数設定)
# MySQLに接続
mysql -uroot -p
# (パスワード入力): 初期rootパスワードは設定されていないため、そのままEnter
DB作成とユーザー設定
mysql> create database zabbix character set utf8mb4 collate utf8mb4_bin;
mysql> create user zabbix@localhost identified by 'password'; -- 実際のパスワードに変更
mysql> grant all privileges on zabbix.* to zabbix@localhost;
mysql> GRANT FILE ON *.* TO 'zabbix'@'localhost';
=> パーティショニングのための権限付与
# 注意: パーティション自動化スクリプトは TCP(127.0.0.1)で接続するため、同じ権限を持つ 'zabbix'@'127.0.0.1' アカウントも必ず作成しておくこと。
関数信頼設定(一時的)
mysql> set global log_bin_trust_function_creators = 1;
mysql> quit
説明log_bin_trust_function_creators=1 を一時的に有効化する。
理由:Zabbixスキーマには get_host_agent() などの STORED FUNCTION が含まれている。
バイナリログが有効な環境では、SUPER権限を持たないユーザーによるFUNCTION作成はブロックされるため、スキーマインポート時に必要となる。
6) Zabbixスキーマのインポート
スキーマインポート
# zcat /usr/share/zabbix/sql-scripts/mysql/server.sql.gz | mysql --default-character-set=utf8mb4 -uzabbix -p zabbix
チェックポイント
- エラーなしで終了すること
mysql -uzabbix -p zabbix -e "show tables;"でhistory・trendsなどの主要テーブルが作成されていることを確認
7) 関数信頼設定の戻し
# mysql -uroot -p
# (パスワード入力)
mysql> set global log_bin_trust_function_creators = 0;
mysql> quit
説明(セキュリティ)
FUNCTION作成の信頼オプションは一時的にのみ使用する。
スキーマ作成後はすぐに元に戻すこと。
8) ZabbixサーバーのDB接続設定
# vi /etc/zabbix/zabbix_server.conf
以下の項目にDB情報を設定
DBName=zabbix (デフォルト)
DBUser=zabbix (デフォルト)
DBPassword=実際のパスワードを入力
9) サービス起動
# systemctl restart zabbix-server zabbix-agent2 apache2
# systemctl enable zabbix-server zabbix-agent2 apache2
チェックポイント
systemctl status zabbix-server→active (running)- Web UIアクセス:
http://<サーバーIP>/zabbix
補足
タイムゾーンは、Web(UI)表示用(例: KSTなど)とDBパーティション境界(UTC epoch)で分離されている。
パーティション計算は常にUTC基準で行う。UIではローカルタイムゾーンとして表示されるだけである。
(詳細なパーティション/自動化は第3~4編で解説)
10) 次回予告
- 第2編:ディスク分離(AppArmor・権限・innodb_directories)+ General Tablespace作成
- 第3編:file-per-tableへの切り替え+パーティション初期構成(History=日単位/epoch、Trends=月単位)
- 第4編:自動化スクリプト+cron+保持期間(
DAYS_KEEP/MONTHS_KEEP) - 第5編:Housekeeper無効化+Zabbixキャッシュ/プロセス+MySQL InnoDBチューニング
トラブルシューティングチェックポイント
- スキーマインポート失敗時:
log_bin_trust_function_creators状態を確認し、再実行 - 認証エラー時:DBユーザー/パスワード、
mysql_native_passwordvsauth_socket設定を確認 - サービス起動失敗時:
/var/log/zabbix/zabbix_server.logおよび/var/log/apache2/error.logを確認
🛠 마지막 수정일: 2025.12.11
💡 お困りですか?
Zabbix、Kubernetes、各種オープンソースインフラの構築・運用・最適化・障害解析が必要であれば、いつでもご連絡ください。
📧 メール: jikimy75@gmail.com
💼 サービス: 導入支援 | 性能チューニング | 障害解析コンサルティング
답글 남기기
댓글을 달기 위해서는 로그인해야합니다.