スマートスタイル TECH BLOG

データベース&クラウド技術情報

Percona Monitoring and Managementが収集するMySQLメトリクスの紹介

はじめに

Percona Monitoring and Management(以下PMM)では様々なメトリクスが収集されます。
どのようなメトリクスが収集されるのかを全ては把握せずに使用している方も多いのではないでしょうか。
今回は、PMMが収集するMySQLのメトリクスをいくつか紹介します。

前提

今回は、検証にPMM2.36.0及びMySQL8.0.33を使用しております。
バージョンが異なる場合や、MySQL以外の製品(MariaDBやPercona Server for MySQLなど)の場合、収集されるメトリクスが異なる場合があります。

用語説明

本記事で使用する用語について説明します。

  • エクスポーター(exporter)
    エクスポーターは、メトリクスを取得するアプリケーションと一緒に実行されるバイナリです。
    PMMにおいては、PMM Clientのコンポーネントの一部です。データベースなどから情報を収集します。MySQLの情報収集を行うのはmysqld_exporterです。

引用元 : Percona Monitoring and Management | Architecture

  • コレクター
    コレクターは、メトリクスのセットを表すエクスポーターの一部です。

  • メトリクス
    コレクターが収集したデータです。mysqld_exporterが収集したメトリクスの名前はmysql_というプレフィックスがつきます。
    PMMではこのメトリクスをMetricsQLでクエリしてグラフにしています。

例えば以下のMySQL Questionsグラフで使用されているメトリクスを確認します。

このグラフの式は以下の通りです。mysql_global_status_questionsメトリクスが使用されていることがわかります。

PMMが収集するメトリクス

PMMは、収集するメトリクスをコレクター単位で制御できます。
MySQLのメトリクスを収集するmysqld_exporterで、使用できる各コレクターの説明はmysqld_exporterのCollector Flagsで説明されています。

また、コレクターの無効化方法については過去の記事でも取り上げています。

collect.global_status

SHOW GLOBAL STATUSの結果(ステータス変数)を収集します。
収集されたメトリクスはmysql_global_status_{ステータス変数名}という名前になります。
PMMでは様々なグラフでこれらのメトリクスが使用されています。日々の監視や障害発生時の調査でも非常に重要になるメトリクスです。
グラフ化されていないメトリクスもExploreを使用することで確認できます。Exploreの使用方法は後述のメトリクスを確認するで説明しています。

collect.global_variables

SHOW GLOBAL VARIABLESの結果(システム変数)を収集します。収集されたメトリクスはmysql_global_variables_{システム変数名}という名前になります。

collect.info_schema.innodb_metrics

information_schema.innodb_metricsから情報を収集します。収集されたメトリクスはmysql_info_schema_innodb_metrics_{subsystem}_{name}という名前になります。
information_schema.innodb_metricsは様々なInnoDBパフォーマンス情報を確認できます。
例えば、ロック待ちによるタイムアウトの回数(mysql_info_schema_innodb_metrics_lock_lock_timeouts_total)やデッドロックの発生回数(mysql_info_schema_innodb_metrics_lock_lock_deadlocks_total)、ロールバックの回数(mysql_info_schema_innodb_metrics_transaction_trx_rollbacks_total)などがあります。

なお、収集時に実行されるクエリは以下となっていて、STATUSがenabledの項目のみを収集します。

各カウンタの有効・無効化の方法については公式ドキュメントをご参照ください。

収集できる情報の詳細は、以下のようにinformation_schema.innodb_metricsのCOMMENTをご確認ください。

collect.info_schema.tables

information_schema.tablesから情報を収集します。テーブルの行数などの情報が確認できる一方で、テーブル数が多い環境では収集時に負荷が大きくなる可能性があり、公式ドキュメントでも説明されています。

--disable-tablestatsを使用すると、この値を含めた一部のメトリクスが収集されなくなります。
サービス登録時にTable statistics collection disabled (always).というメッセージが出力されます。

無効にした場合MySQL Table DetailsダッシュボードやMySQL InnoDB Detailsの一部のグラフが利用できなくなります。
サーバーのリソースと監視の必要性を鑑みて--disable-tablestatsの使用を決定する必要があります。

collect.slave_status

SHOW SLAVE STATUSから情報を収集します。収集されたメトリクスはmysql_slave_status_<項目名>という名前になります。Slave_IO_RunningやSlave_SQL_Running、Seconds_Behind_Masterなどの情報が収集されます。

information_schemaから収集するその他のコレクター

コレクタ名 収集元テーブル メトリクス名のプレフィックス
info_schema.innodb_cmp innodb_cmp mysql_info_schema_innodbcmp
info_schema.innodb_cmpmem innodb_cmpmem mysql_info_schema_innodbcmpmem
info_schema.innodb_tablespaces innodb_tablespaces mysql_info_schema_innodbtablespace
info_schema.processlist processlist mysql_info_schema_threads

performance_schemaから収集するその他のコレクター

コレクタ名 収集元テーブル メトリクス名のプレフィックス
perf_schema.eventsstatements events_statements_summary_by_digest mysql_perf_schema_eventsstatements
perf_schema.eventswaits events_waits_summary_global_by_event_name mysql_perf_schema_eventswaits
perf_schema.file_events file_summary_by_event_name mysql_perf_schema_fileevents
perf_schema.file_instances file_summary_by_instance mysql_perf_schema_fileinstances
perf_schema.indexiowaits table_io_waits_summary_by_index_usage mysql_perf_schema_index_iowaits
perf_schema.tableiowaits table_io_waits_summary_by_table mysql_perf_schema_table_iowaits
perf_schema.tablelocks table_lock_waits_summary_by_table mysql_perf_schema_external_lockwaits
または
mysql_perf_schema_sql_lockwaits

メトリクスを確認する

収集されたメトリクスはPMMのExploreから確認ができます。Metricにメトリクス名を入力するとグラフが下に表示されます。

Metricは入力に対して、部分一致したメトリクスをサジェストしてくれるので、正式名称を覚えていなくても利用できます。

また、Label filtersにはラベル名と値がドロップダウンリストから選択できるようになっています。

まとめ

PMMがMySQLから収集しているメトリクスを紹介しました。普段は注視していないメトリクスも障害発生時やパフォーマンス改善などの際には役立つことが多くあります。様々なメトリクスを監視できるPMMについて、ぜひ導入を検討してみてください。

Return Top