Zabbix で MySQL 監視を 100% 完成させる方法

関連記事 :

(ベアメタル / Kubernetes Pod 環境フル対応、Agent2 プラグイン基盤)

Zabbix での MySQL 監視は、以前のように UserParameter スクリプトを載せる方式ではない。
Zabbix Agent2 + MySQL プラグインさえあれば、InnoDB、スロークエリ、レプリケーション、バッファ関連の指標を収集できる。

しかし、実際の運用環境は次の 2 つに分かれる。

① MySQL がベアメタル(物理 / VM)サーバで稼働
② MySQL が Kubernetes Pod 内で動作し、Service External IP によって公開されている

両環境はネットワーク構造が完全に異なるため、Agent2 の設定方式も異なる。
本記事は、それらの違いを Zabbix 7.4 基準で完全に整理した実務ガイドである。


1. 対応バージョン

Zabbix

Zabbix Server/Proxy 7.4 以上
※ Zabbix 公式サイトの説明では 5.0 以上も利用可能とされている。

MySQL エンジン

  • MySQL 5.7 / 8.0 / 9.4
  • Percona 8.4
  • MariaDB 10.6 / 11.8

2. MySQL 監視アカウント作成(共通)

環境に関係なく、次の権限だけ準備すればよい。

CREATE USER 'zbx_monitor'@'%' IDENTIFIED BY '<password>';

GRANT REPLICATION CLIENT, PROCESS, SHOW DATABASES, SHOW VIEW
ON *.* TO 'zbx_monitor'@'%';

MariaDB 10.5.9 以上では追加権限が必要:

GRANT SLAVE MONITOR ON *.* TO 'zbx_monitor'@'%';

3. Agent2 プラグイン設定ファイルの正確なパス

Agent2 側で MySQL プラグインがすでにインストール・有効化されている必要があり、
正常にインストールされていれば以下のパスに配置される。


4. テンプレートマクロ方式 vs Agent2 セッション方式

両方式とも動作するが、性質が異なる。


✔ テンプレートマクロ方式

{$MYSQL.DSN}       = tcp://192.168.117.5:3306
{$MYSQL.USER}      = zbx_monitor
{$MYSQL.PASSWORD}  = <password>

長所:

  • プラグイン設定ファイルを修正する必要がなく、UI だけで設定可能。

短所:

  • Zabbix UI にパスワードが表示される。

✔ Agent2 セッション方式(推奨)

対象ホストに Zabbix Agent2 をインストール後、
/etc/zabbix/zabbix_agent2.d/plugins.d/mysql.conf
にて以下のように値を設定し、Zabbix Agent2 を再起動する。

[デフォルト値]

Plugins.Mysql.Sessions.*.Uri=
Plugins.Mysql.Sessions.*.User=
Plugins.Mysql.Sessions.*.Password=

[修正値]

Plugins.Mysql.Sessions.example_mysql.Uri=tcp://192.168.117.5:3306
Plugins.Mysql.Sessions.example_mysql.User=zbx_monitor
Plugins.Mysql.Sessions.example_mysql.Password=<password>

テンプレートマクロ(Zabbix Web UI 側):

{$MYSQL.DSN} = example_mysql

長所:

  • パスワードは Agent2 ホスト内部にのみ存在
  • 複数インスタンス管理に最適
  • セキュリティ・拡張性が最高
  • Zabbix が公式に推奨する方式

Tip. プラグイン設定方式


✔(A方式)Default のみを使う単一 MySQL 監視

MySQL が 1 つだけの場合に利用。

/etc/zabbix/zabbix_agent2.d/plugins.d/mysql.conf

Plugins.Mysql.Default.Uri=tcp://192.168.117.5:3306
Plugins.Mysql.Default.User=zbx_monitor
Plugins.Mysql.Default.Password=<password>

Zabbix Web のテンプレートマクロは空欄でもそのままでもよい。

長所:

  • 設定が簡単
  • セッション名不要
  • 単一 MySQL 環境に最適

✔(B方式)Sessions 構造を使うマルチインスタンス監視

複数 MySQL、または複数 DSN を使う場合は Sessions が正解。
(1 つのみでも問題なく使用可能)

/etc/zabbix/zabbix_agent2.d/plugins.d/mysql.conf

Plugins.Mysql.Sessions.example_mysql.Uri=tcp://192.168.117.5:3306
Plugins.Mysql.Sessions.example_mysql.User=zbx_monitor
Plugins.Mysql.Sessions.example_mysql.Password=<password>

5. Kubernetes Pod MySQL 監視構成

Agent2 は Host で動作し、
MySQL は Pod 内で動作する環境の構成:

Pod の ClusterIP は外部からアクセス不可のため、
必ず Service(NodePort または LoadBalancer)経由で接続する必要がある。

最も実務的な方法は次のとおり。

LoadBalancer External IP 基盤の監視


● K8s 構造

Agent2(Host) → Service External IP → MySQL Pod

● External IP 例

192.168.117.90:3306

● mysql.conf

Plugins.Mysql.Sessions.K8s.Uri=tcp://192.168.117.90:3306
Plugins.Mysql.Sessions.K8s.User=zbx_monitor
Plugins.Mysql.Sessions.K8s.Password=<password>

Zabbix Web UI のテンプレートマクロ:

{$MYSQL.DSN} = K8s

6. 指標 : 主な収集アイテム

  • InnoDB バッファ / エンジン統計
  • Thread / Connection
  • Slow Query
  • Temp Table 作成率
  • Buffer Pool Hit Ratio
  • クエリ処理量

7. トラブルシューティングチェックリスト


1) ベアメタル(Bare Metal)環境

  • MySQL 設定(my.cnf)確認:
    bind-address が 127.0.0.1 の場合、外部接続不可 → 0.0.0.0 に変更
  • Unix Socket 権限:
    Zabbix Agent 実行ユーザ(zabbix)が /var/run/mysqld/mysqld.sock を読み書きできるか確認
  • Firewall:
    OS firewall(firewalld, ufw)またはクラウド Security Group が 3306 を遮断していないか
  • SELinux:
    SELinux が Enforcing の場合、Agent が socket / port へのアクセスを拒否する可能性
    SELinux 無効化推奨

2) Kubernetes 環境

  • Kube-proxy モード:
    IPVS モードで稀にセッションタイムアウトによる接続断が起こることがある
  • NetworkPolicy:
    External IP(Zabbix 側)からの Ingress トラフィックが許可されているか確認
  • Service External IP の変更:
    LoadBalancer 再作成やノード再起動で External IP が変わったのに、
    Zabbix ホスト設定が旧 IP のままになっていないか
  • Pod Readiness Probe:
    Pod が Running でも Readiness Probe 失敗時は Service Endpoints に含まれず接続不可

8. 結論

Zabbix 7.4 環境での MySQL 監視は、次の一文に集約される。

「Agent2 が MySQL に接続できる DSN を正しく設定すれば、残りはすべて自動で解決される。」

  • プラグインパス:/etc/zabbix/zabbix_agent2.d/plugins.d/
  • UserParameter は 6.0 以降不要
  • K8S Pod → External IP / NodePort 経由で TCP 監視
  • セッション方式が最も安定・安全・拡張性が高い
  • テンプレートは “MySQL by Zabbix agent 2” だけで十分

ベアメタルでも Pod でも重要なのはただ 1 つ。
DSN を正確に構成すれば、Zabbix は環境に依存しない強力な MySQL 監視プラットフォームとなる。

🛠 마지막 수정일: 2025.12.03

💡 お困りですか?
Zabbix、Kubernetes、各種オープンソースインフラの構築・運用・最適化・障害解析が必要であれば、いつでもご連絡ください。

📧 メール: jikimy75@gmail.com
💼 サービス: 導入支援 | 性能チューニング | 障害解析コンサルティング