このトピックでは、Managed Service for Prometheus を使用して MySQL データベースをモニタリングする方法について説明します。
前提条件
MySQL インスタンスの接続詳細 (アドレス、ポート、ユーザー名、パスワードなど) を準備してください。
MySQL モニタリングの有効化
-
左側のナビゲーションペインで、アクセスセンターをクリックします。
-
アクセスセンター ページの データベース セクションで MySQL をクリックします。
-
MySQL パネルの 接続を開始 タブで統合を設定し、OK をクリックします。
パラメーター
説明
[環境タイプの選択]
次のいずれかの環境タイプを選択します。
-
Kubernetes Environment
-
ECS (VPC)
-
Cloud Services
クラスターの選択
ターゲットクラスターを選択します。
[ECS (VPC) の選択]
ターゲット ECS インスタンスを選択します。
[データストレージリージョンの選択]
環境タイプの選択 を [クラウドサービス] に設定した場合、データストレージ用のリージョンを選択する必要があります。
[MySQL アドレス]
MySQL インスタンスの接続アドレスです。
説明Managed Service for Prometheus は、Container Service for Kubernetes (ACK)、Elastic Compute Service (ECS)、または ApsaraDB RDS にデプロイされた MySQL インスタンスをサポートします。
[MySQL サービスポート]
MySQL インスタンスのポート番号です。例:3306。
[MySQL ユーザー名]と [MySQL パスワード]
MySQL アカウントのユーザー名とパスワードです。
重要データ漏洩やその他のセキュリティリスクを防ぐため、管理者アカウントを使用しないことを推奨します。代わりに、mysqld_exporter 専用の MySQL アカウントを作成し、必要最小限の権限のみを付与してください。詳細については、「Managed Service for Prometheus 用の MySQL ユーザーの作成」をご参照ください。
-
MySQL のアラート設定
にログインします。 Prometheusコンソールのマネージドサービス。
左側のナビゲーションウィンドウで、[インスタンス] をクリックします。
-
[Instances] ページで、ページ上部でターゲットリージョンを選択し、ターゲットインスタンスの名前をクリックします。
-
左側のナビゲーションペインで、アラートルール をクリックして MySQL 用の Prometheus アラートルールを表示します。
Managed Service for Prometheus は、主要な MySQL メトリックに対して複数のデフォルトの Prometheus アラートルールを提供します。必要に応じて新しいアラートルールを追加することもできます。詳細については、「Prometheus アラートルールの作成」をご参照ください。
説明-
主要な MySQL メトリックの詳細は、「主要メトリック」セクションを参照してください。
-
Managed Service for Prometheus が主要な MySQL メトリックに提供するプリセットのアラートルールの詳細は、「メトリックとアラートシステムの構築」セクションを参照してください。
-
MySQL ダッシュボードの表示
モニタリングダッシュボードには、可用性、データベースクエリ、ネットワークトラフィック、接続、メモリのメトリックが表示されます。手順は次のとおりです。
にログインします。 Prometheusコンソールのマネージドサービス。
-
左側のナビゲーションペインで、データインポート管理 をクリックします。
-
データインポート管理 ページで、アクセス済みの環境 タブをクリックします。対象の環境を選択し、リストでその名前をクリックして詳細ページを開きます。
[Integrated Environments] タブには、[Kubernetes Environment]、[ECS Environment]、[Cloud Service Region Environment] の 3 つのカテゴリがあります。適切なカテゴリを選択してください。
-
[コンポーネント管理] タブの [アドオンタイプ] セクションで、[MySQL] をクリックし、次に [ダッシュボード] をクリックすると、すべてのダッシュボード名が表示されます。
-
ダッシュボード名をクリックして、対応する Grafana ダッシュボードを表示します。
-
可用性、QPS、データベース接続

-
データベースクエリ

-
ネットワークトラフィックとメモリ使用量

-
ファイルモニタリングデータ

-
主要メトリック
|
タイプ |
メトリック |
説明 |
|
可用性 |
mysql_up |
MySQL インスタンスが稼働しているかどうかを示します。値が 1 の場合はインスタンスが利用可能であることを、0 の場合はダウンしていることを示します。 |
|
mysql_global_status_uptime |
データベースインスタンスの稼働時間です。このメトリックを使用して、インスタンスの稼働時間が 30 分未満の場合にトリガーされるアラートを作成できます。これは、最近再起動された可能性を示します。 |
|
|
データベース接続 |
mysql_global_status_connection_errors_total |
接続エラーは、データベースエラーの主要な指標の1つです。このメトリックは、接続エラーの総数を追跡します。 |
|
mysql_global_status_threads_connected |
MySQL インスタンスへの現在開いている接続の数です。 |
|
|
mysql_global_status_threads_running |
リクエストをアクティブに処理しているスレッドの数です。 |
|
|
mysql_global_status_max_used_connections |
サーバーの起動以降、同時に使用された接続の最大数です。 |
|
|
mysql_global_variables_max_connections |
許可される同時クライアント接続の最大数です。この制限に達すると、新しい接続リクエストは拒否されます。 |
|
|
mysql_global_status_aborted_connects |
MySQL サーバーへの接続試行が失敗した回数です。 |
|
|
mysql_global_status_aborted_clients |
クライアントが接続を正常にクローズせずに終了したことによって切断された接続の数です。 |
|
|
クエリ |
mysql_global_status_slow_queries |
|
|
mysql_global_status_queries |
サーバーによって実行されたステートメントの総数です。これを使用して、1 秒あたりのクエリ数 (QPS) を計算できます。 |
|
|
ネットワークトラフィック |
mysql_global_status_bytes_received |
受信ネットワークトラフィック (バイト単位)。 |
|
mysql_global_status_bytes_sent |
送信ネットワークトラフィック (バイト単位)。 |
|
|
ファイル |
mysql_global_status_opened_files |
開かれたファイルの総数です。 |
|
mysql_global_status_open_files |
現在開いているファイルの数です。 |
|
|
mysql_global_variables_open_files_limit |
MySQL サーバーで利用可能なファイルディスクリプタの最大数です。 |
|
|
mysql_global_status_innodb_num_open_files |
InnoDB ストレージエンジンによって現在開かれているファイルの数です。 |
メトリックとアラートシステムの構築
MySQL モニタリングのために自己管理型の Prometheus システムをセットアップするのは、複雑なプロセスです。このプロセスでは、エクスポーターのデプロイ、MySQL インスタンスの接続詳細の指定、サービスディスカバリの設定、ダッシュボードの構築が必要です。Managed Service for Prometheus は、ワンクリックセットアップで MySQL エクスポーターを統合することにより、これを簡素化します。また、すぐに使用できるモニタリングダッシュボードとアラートルールをビジュアルコンソール経由で提供し、設定のワークロードを大幅に削減します。
Managed Service for Prometheus には、一般的な MySQL メトリック用のプリセットのアラートルールテンプレートが含まれており、モニタリングおよびアラートシステムを迅速に構築できます。次のプリセットルールが利用できます。
-
[MySQL の可用性]:このメトリックの値が 0 の場合、データベースは正常に稼働していません。値が 1 の場合は、正常な稼働を示します。
${instance}を使用して、アラート対象の特定のインスタンスを指定できます。mysql_up{${instance}} != 1 -
[MySQL のスロークエリ]:このメトリックは、データベースに最適化が必要な SQL ステートメントがあるかどうかを特定できます。
rate(mysql_global_status_slow_queries{${instance}}[5m]) > 0 -
[MySQL 接続エラー]:接続エラーは、データベースエラーの主要なタイプです。Managed Service for Prometheus が提供するアラートルールを使用すると、接続エラーが発生した際にアラートを受け取ることができます。
rate(mysql_global_status_connection_errors_total{${instance}}[5m]) > 0 -
[MySQL 接続使用率]:接続使用率が高いと、接続エラーが発生する可能性があります。このアラートは、使用率をモニタリングしてこれらの問題のトラブルシューティングに役立ちます。
100 * mysql_global_status_threads_connected{${instance}} / mysql_global_variables_max_connections{${instance}} > 90使用率が特定のしきい値に達すると、MySQL インスタンスは新しい接続を拒否し始めます。この問題は、接続制限を増やすことで解決できます。接続制限を増やす前に、次の PromQL 式を使用して、使用可能なファイルディスクリプタの数を確認してください。
mysql_global_variables_open_files_limit - mysql_global_status_innodb_num_open_files -
[MySQL InnoDB ログ待機時間]:ログ書き込みの遅延を監視します。アラートのしきい値を設定できます。
rate(mysql_global_status_innodb_log_waits{${instance}}[5m])