現代の企業システムにおいて、MySQLの可観測性は不可欠です。少数の重要なデータベースを運用している場合でも、大規模なシステムを運用している場合でも重要な機能です。適切なリアルタイム監視を行うことで、MTTD/MTTR(平均検知時間/平均復旧時間)を短縮、連鎖して発生する障害を回避、CPUやメモリ、I/O、バッファプールの効率化、セッション競合、トランザクション/レプリケーションの遅延、エラー率、クエリのレイテンシといったワークロードの状態を継続的に追跡できます。

この Grafana モニタリング テンプレートは、各ターゲットのperformance_schemainformation_schemaから値を抽出し、それらを専用のリポジトリ MySQL データベース (repo DB) に保存し、実用的な Grafana ダッシュボードで可視化することで、実用的な MySQL 可観測性をどのように追加できるか理解するのに役立ちます。また、すぐに利用できるビューに加えて、運用監視チームが独自のワークロード向けにアプリケーションに特化したカスタムされた可観測性を構築するために拡張できる基盤も提供します。

Fig-1. MySQLを監視するGrafanaダッシュボード

👉 全文はこちら:
https://github.com/tripplea-sg/mysql-heatwave-grafana-monitoring/tree/main/docs

🔍 監視が重要な理由とは

MySQLがHeatWaveで稼働しているかオンプレミス上で稼働しているかに関わらず、重要なのはシステムの挙動を明確に把握することです。クエリのパフォーマンス、リソースの消費状況、そして時間の経過に伴うシステムの挙動を理解する必要があります。これがなければ、トラブルシューティングは事後対応となり、パフォーマンスチューニングは勘に頼った作業になってしまいます。

適切に設計された監視ソリューションは、データベースのアクティビティを実用的な洞察に変換し、より迅速な意思決定とより安定した運用を可能にします。

🏗️ アーキテクチャ: 集約方メトリクスリポジトリ

Grafanaが各MySQLターゲットに直接接続するのではなく、まずカスタムコレクターによってメトリクスが収集され、MySQLリポジトリデータベースに保存されます。アーキテクチャは以下のとおりです。:

  • Grafana → 可視化のためにリポジトリデータベースに接続
  • MySQLターゲット (HeatWave / オンプレミス) → 監視対象
  • カスタムコレクター → メトリクスの抽出と送信
  • リポジトリMySQLサーバー → 全ての監視データを保存

つまり、Grafanaに必要なMySQLデータソースは1つ(リポジトリ)だけで済み、ターゲットと可視化環境が分離され、複数のシステムを横断した監視を簡単に拡張できることを意味しています。
オプションで、以下のデータソースも追加できます。
OCIメトリクスデータソース→ インフラストラクチャレベルのメトリクス用(HeatWaveのみ)

⚙️ インストール: 簡単かつ早い

👉 手順はこちら:
https://github.com/tripplea-sg/mysql-heatwave-grafana-monitoring/blob/main/docs/0-Installation.md

Fig-2. インストール手順(動画)

インストール手順はシンプルに設計されています。監視パッケージのインストール、Grafanaの設定、メトリックデータのリポジトリデータベースとしてのMySQLのインストール、ダッシュボードのデプロイまで、すべて6分以内に完了します。

sudo yum install -y https://github.com/tripplea-sg/mysql-heatwave-grafana-monitoring/raw/main/releases/mysql-monitor-3.1-1.el9.noarch.rpm

install_grafana

deploy_grafana_dashboard

sudo dnf downgrade grafana-12.4.1-1

インストールが完了すると、Grafanaが初期化され、組み込みコマンドを使用してダッシュボードがデプロイされます。その後、監視のための安全な読み取り専用アクセスを可能にするために、最小限のデータベース権限が付与されます。

📊 組み込みダッシュボード: すぐに効果を実感

👉 ダッシュボードの全容:
https://github.com/tripplea-sg/mysql-heatwave-grafana-monitoring/blob/main/docs/4-Walkthrough%20Your%20New%20Grafana%20Dashboard.md

こちらをご覧いただくとわかるように、このソリューションには事前に構築されたGrafanaダッシュボードが含まれており、すぐに監視を開始できます。これらのダッシュボードには以下の機能があります:

  • 明確なシステム概要
  • クエリとリソースのドリルダウン分析
  • 時系列での傾向を可視化
  • 環境を横断したフィルタリング

用意されたものですぐに利用することも可能ですが、ニーズの変化に合わせてカスタマイズすることも可能です。

⚡ このアプローチが効果的な理由

このアーキテクチャは、データベースの直接監視することで発生する一般的な制約を回避します。Grafanaを各MySQLインスタンスに接続せずに、以下を行います:

  • 一元化されたデータ収集
  • 簡単に行える視覚化
  • 緩やかに結合されたシステムの実現

これにより、複数のデータベース利用に対応できる拡張性が向上し、運用環境への負荷が軽減され、監視構成の管理が容易になります。

🛠️日々の業務をシンプルに

👉 コマンドリファレンス:
https://github.com/tripplea-sg/mysql-heatwave-grafana-monitoring/blob/main/docs/2-Start%2C%20Stop%2C%20Show%20status%20and%20logs.md

運用は、一連のコマンドで行います。

すべてのスタックを起動するコマンド:

sudo systemctl start mysqld
sudo systemctl start grafana-server
sudo systemctl start mysql-monitor.timer
sudo systemctl start mysql-uptime.service

すべてのスタックを停止するコマンド:

sudo systemctl stop mysql-uptime.service
sudo systemctl stop mysql-monitor.timer
sudo systemctl stop grafana-server
sudo systemctl stop mysqld

ステータスの監視、エラー検知のコマンド:

journalctl -u mysql-monitor.service -n 50 -f
journalctl -u mysql-uptime.service -n 50 -f 

これらのコマンドはコレクターサービスと監視サービスを管理し、データがリポジトリデータベースに継続的に保存されるように処理します。

🧩 Control Fleetによる環境を横断したスケーリング

👉 Control Fleetの詳細:
https://github.com/tripplea-sg/mysql-heatwave-grafana-monitoring/blob/main/docs/3-Working%20with%20Control%20Fleet.md

環境が拡大するにつれて、複数のデータベースを個別に監視するのは非効率的になります。Control Fleet を使用すると、複数の MySQLを一元管理できます。監視設定を一度定義しておくと、複数の環境に適用することができます。すべてのデータが一元的に保存されるため、数十、数百のターゲットに拡張することがはるかに容易に行えます。

⏱️ 効率的な監視のための高度なスケジュール設定

Control Fleetでは、データ収集のための高度なスケジュール設定も導入されています。すべてのメトリックを固定間隔で収集する代わりに、以下のことを制御できます:

  • グローバルに収集する収集メトリック、一部のMySQLインスタンスで収集する収集メトリック、および一部のMySQLインスタンスで避ける収集メトリックの指定
  • 収集スケジュールと実行頻度
  • より詳細な粒度を必要とするワークロードの指定

これにより、ピーク時の可視性を高め、オフピーク時のオーバーヘッドを削減し、ストレージとパフォーマンスを最適化できます。規模が大きくなると、この柔軟性が不可欠になります。

☁️ オプション: OCIメトリクスによる拡張

👉 OCIセットアップガイド:
https://github.com/tripplea-sg/mysql-heatwave-grafana-monitoring/blob/main/docs/1-Setup%20Oracle%20Cloud%20Infrastructure.md

Fig-3. OCIデータソースの追加 (HeatWaveのみ可能)

OCI 上の MySQL HeatWave では、オプションでOCI モニタリング メトリクスを統合することができます。この場合、Grafana は追加の OCI データ ソースを使用して、データベース メトリクスを補完するインフラストラクチャ メトリクス (CPU、ネットワークなど) を収集します。

これにより、フルスタックの監視ビューが可能になりますが、標準的なMySQL監視では必須ではありません。すべてのMySQL HeatWaveターゲットは自動的に検出されます。

🧩 カスタマイズ性と長期的な拡張性

👉 カスタマイズガイド:
https://github.com/tripplea-sg/mysql-heatwave-grafana-monitoring/blob/main/docs/6-Customising%20Dashboards.md

すべてのメトリクスはリポジトリデータベースに保存されるため、ダッシュボードは非常に柔軟に作成できます。動的なスキーマパターンを採用しているため、複数の監視対象があってもダッシュボードの表示は選択した内容に応じて自動的に変更されます。

${compartment}#${display_name}

また、monitor_toolsスキーマを使用して、既存のクエリの変更、新しいパネルの追加、カスタムメトリックの作成も可能です。これにより、環境の変化に合わせてダッシュボードを進化させることができます。

🧠 主なポイント

カスタマイズでき、拡張正が高いインフラストラクチャメトリクス向けのOCI統合オプション:

  • すべてのメトリクス用の中央リポジトリデータベースを使用
  • Grafana は1つのMySQLデータソース(リポジトリ)に接続
  • HeatWaveおよびオンプレミス環境の両方をサポート可能
  • Control Fleetを使用して容易にスケーリング可能
  • 効率化のための高度なスケジューリングをサポート
  • 完全にカスタマイズ可能で拡張性が高い
  • Optional OCI integration for infrastructure metricsインフラストラクチャメトリクス向けのOCI統合オプション

🚀 まとめ

This solution is more than just dashboards, it’s a scalable monitoring architecture. By separating Data collection, Storage, and Visualisation; it enables a flexible and efficient observability model for MySQL environments of any size. Whether you’re monitoring a single database or an entire fleetこのソリューションは単なるダッシュボードにとどまらず、スケーラブルな監視アーキテクチャです。データ収集、保存、可視化を分離することで、あらゆる規模のMySQL環境において、柔軟かつ効率的なオブザーバビリティモデルを実現します。単一のデータベースを監視する場合でも、データベース群全体を監視する場合でも以下のことが可能です:

インストール → 収集 → 保存 → 可視化 → 拡張