このトピックでは、Alibaba Cloud Managed Service for Prometheus を使用して MySQL データベースを監視する方法について説明します。
前提条件
監視対象の MySQL データベースに関する情報(アドレス、ポート番号、MySQL データベースへの接続に使用するユーザー名とパスワードなど)が入手可能です。
MySQL コンポーネントを有効にする
左側のナビゲーションペインで、統合センターをクリックします。
統合センターページのデータベースセクションで、MySQL をクリックします。
MySQL パネルの 統合の開始タブで、パラメータを設定し、OK をクリックします。データベースを監視するための Prometheus インスタンスが作成されます。
パラメータ
説明
環境タイプの選択
データベースがデプロイされている環境を選択します。有効な値:
Kubernetes 環境
ECS (VPC)
クラウドサービス
クラスターの選択
データベースがデプロイされている ACK クラスターを選択します。このパラメータは、データベースが Container Service for Kubernetes (ACK) クラスターにデプロイされている場合に利用可能です。
VPC の選択
データベースがデプロイされている ECS インスタンスを選択します。このパラメータは、データベースが Elastic Compute Service (ECS) インスタンスにデプロイされている場合に利用可能です。
ストレージのリージョンの選択
このパラメータは、データベースが ApsaraDB RDS にデプロイされている場合に利用可能です。
Mysql アドレス
MySQL データベースのアドレス。
説明MySQL データベースは、ACK クラスター、ECS インスタンス、または ApsaraDB RDS にデプロイできます。
Mysql サービスポート
MySQL データベースのポート番号。例:3306。
Mysql ユーザー名とMysql パスワード
MySQL データベースのユーザー名とパスワード。
重要データ漏洩のリスクを防ぐため、管理者アカウントを使用しないことをお勧めします。 mysqld_exporter 用の MySQL アカウントを作成し、そのアカウントに最小限の権限を付与します。詳細については、Managed Service for Prometheus 用の MySQL ユーザーの作成を参照してください。
MySQL データベースのアラートを設定する
Managed Service for Prometheus コンソールにログオンします。
左側のナビゲーションペインで、インスタンスをクリックします。
上部のナビゲーションバーで、リージョンを選択します。次に、Prometheus インスタンスの名前をクリックします。
左側のナビゲーションペインで、アラートルールをクリックして、データベースのアラートルールを表示します。
Managed Service for Prometheusは、主要なMySQLメトリックについて複数のデフォルトのアラートルールを提供します。ビジネス要件に基づいてアラートルールを作成することもできます。詳細については、Prometheusインスタンスのアラートルールを作成するを参照してください。
説明主要な MySQL メトリクスの詳細については、「主要なメトリクス」セクションを参照してください。
Managed Service for Prometheus が主要な MySQL メトリクスにプリセットしているアラートルールについて詳しくは、「データベースのアラート設定」セクションをご覧ください。
ダッシュボードを表示する
ダッシュボードで、サービスの可用性、データベースクエリ、ネットワークトラフィック、接続、メモリ使用量などの監視データを表示できます。
Managed Service for Prometheus コンソールにログオンします。
左側のナビゲーションペインで、統合管理をクリックします。
統合管理ページの統合環境タブで、データベースがデプロイされている環境の名前をクリックします。
コンポーネント管理タブのアドオンタイプセクションで、MySQL をクリックします。次に、ダッシュボードをクリックして、すべてのダッシュボードを表示します。
ダッシュボードの名前をクリックします。
可用性、1 秒あたりのクエリ数 (QPS)、およびデータベース接続
データベースクエリ
トラフィックとメモリ使用量
ファイル監視データ
主要なメトリクス
タイプ | メトリクス | 説明 |
可用性 | mysql_up | MySQL データベースが使用可能かどうかを示します。 |
mysql_global_status_uptime | MySQL データベースの実行時間を示します。このメトリクスに対してアラートルールを作成して、実行時間が 30 分未満かどうかを確認できます。 | |
データベース接続 | mysql_global_status_connection_errors_total | 主要なデータベースエラーの 1 つである接続エラーを示します。このメトリクスを使用して、特定のエラーに関する情報と接続エラーの数を表示できます。 |
mysql_global_status_threads_connected | MySQL データベースへの接続が確立されているスレッドの数を示します。 | |
mysql_global_status_threads_running | MySQL データベースへの接続要求が送信されたが、まだ成功していないスレッドの数を示します。 | |
mysql_global_status_max_used_connections | MySQL データベースへの最大接続数を示します。 | |
mysql_global_variables_max_connections | MySQL データベースへの接続の上限を示します。接続数が上限に達すると、接続を確立するための要求は拒否されます。 | |
mysql_global_status_aborted_connects | 失敗した接続試行を示します。 | |
mysql_global_status_aborted_clients | タイムアウトした接続を示します。 | |
クエリ | mysql_global_status_slow_queries | MySQL データベースのスロークエリを示します。 |
mysql_global_status_queries | MySQL データベースの QPS を示します。 | |
ネットワークトラフィック | mysql_global_status_bytes_received | 受信トラフィックを示します。 |
mysql_global_status_bytes_sent | 送信トラフィックを示します。 | |
ファイル監視データ | mysql_global_status_opened_files | 開かれているファイルを示します。 |
mysql_global_status_open_files | MySQL データベースで開かれているファイルを示します。 | |
mysql_global_variables_open_files_limit | 開くことができるファイルを示します。 | |
mysql_global_status_innodb_num_open_files | InnoDB によって開かれているファイルを示します。 |
データベースのアラートを設定する
セルフマネージド Prometheus システムを使用して MySQL データベースを監視するのは複雑です。MySQL エクスポーターをインストールし、データベースへの接続に関する情報を入力し、サービスディスカバリを設定し、ダッシュボードを構築する必要があります。Managed Service for Prometheus は、組み込みの MySQL エクスポーター、すぐに使用できるダッシュボード、および視覚化されたコンソールでのアラートを提供します。これにより、サービスのデプロイが簡素化され、ワークロードが軽減されます。
Managed Service for Prometheus は、MySQL データベース用のデフォルトのアラートルールを提供し、ダッシュボードとアラートシステムを効率的に構築するのに役立ちます。次のアラートルールがプリセットされています。
可用性:メトリック値が 0 の場合、MySQL データベースは使用できません。メトリック値が 1 の場合、MySQL データベースは想定どおりに実行されています。
${instance}
変数を、監視する MySQL データベースに置き換えることができます。mysql_up{${instance}} != 1
スロークエリ:このメトリクスを使用して、データベースで改善できる SQL ステートメントを特定できます。
rate(mysql_global_status_slow_queries{${instance}}[5m]) > 0
接続エラー:接続エラーは、主要なデータベースエラーの 1 つです。アラートがトリガーされると、エラータイプや QPS などのエラーの詳細を含む通知を受信できます。
rate(mysql_global_status_connection_errors_total{${instance}}[5m]) > 0
接続の使用率:ほとんどの接続エラーは、接続数が不十分であることが原因です。このメトリクスに基づいて接続エラーのトラブルシューティングを行うことができます。
100 * mysql_global_status_threads_connected{${instance}} / mysql_global_variables_max_connections{${instance}} > 90
接続の使用率が上限に達すると、MySQL データベースは接続要求を拒否します。この問題を解決するには、上限を引き上げます。接続の上限を引き上げる前に、次のコマンドを実行して、開くことができるファイルの上限を確認する必要があります。
mysql_global_variables_open_files_limit - mysql_global_variables_innodb_open_files
Innodb ログ待機時間:ログ書き込みがアンドゥログのフラッシュを待機する必要がある時間を指定できます。
rate(mysql_global_status_innodb_log_waits{${instance}}[5m])