メトリックプラグイン - mackerel-plugin-mysql
mackerel-plugin-mysqlはクエリの実行回数など、MySQLに関する各種メトリックを監視できます。
MySQLのバージョンによりプラグインのインストール方法が異なります。あらかじめプラグインのインストール方法をご確認の上でご利用ください。
プラグインのインストール方法
MySQL 5.7以降、MySQL 8.0以降をご利用の場合
通常通り、公式プラグインのインストール手順に沿ってご対応ください。
上記より古いバージョンをご利用の場合
mkrコマンドを使用して、次の手順でインストールしてください。
sudo mkr plugin install mackerelio/mackerel-plugin-mysql@v1.0.0mkrコマンドについては、以下をご参照ください。
監視できるメトリック
標準メトリック
MySQL Command
| メトリック表示名 | メトリック名 | 差分 | 積み上げ表示 | 説明 |
|---|---|---|---|---|
| Insert | custom.mysql.cmd.Com_insert | ◯ | ◯ | INSERTの実行回数 |
| Insert Select | custom.mysql.cmd.Com_insert_select | ◯ | ◯ | INSERT ... SELECTの実行回数 |
| Select | custom.mysql.cmd.Com_select | ◯ | ◯ | SELECTの実行回数 (クエリキャッシュを除く) |
| Update | custom.mysql.cmd.Com_update | ◯ | ◯ | UPDATEの実行回数 |
| Update Multi | custom.mysql.cmd.Com_update_multi | ◯ | ◯ | 複数テーブル構文のUPDATEの実行回数 |
| Delete | custom.mysql.cmd.Com_delete | ◯ | ◯ | DELETEの実行回数 |
| Delete Multi | custom.mysql.cmd.Com_delete_multi | ◯ | ◯ | 複数テーブル構文のDELETEの実行回数 |
| Replace | custom.mysql.cmd.Com_replace | ◯ | ◯ | REPLACEの実行回数 |
| Replace Select | custom.mysql.cmd.Com_replace_select | ◯ | ◯ | REPLACE ... SELECTの実行回数 |
| Load | custom.mysql.cmd.Com_load | ◯ | ◯ | LOADの実行回数 |
| Set Option | custom.mysql.cmd.Com_set_option | ◯ | ◯ | SET OPTIONの実行回数 |
| Query Cache Hits | custom.mysql.cmd.Qcache_hits | ◯ | - | クエリキャッシュのヒット数 |
| Questions | custom.mysql.cmd.Questions | ◯ | - | サーバーによって実行されたステートメントの数 |
SHOW /*!50002 GLOBAL */ STATUSの結果から各変数の値をメトリックとしています。
MySQL Join/Scan
| メトリック表示名 | メトリック名 | 差分 | 積み上げ表示 | 説明 |
|---|---|---|---|---|
| Select Full JOIN | custom.mysql.join.Select_full_join | ◯ | - | インデックスを使用せず、テーブルスキャンでJOINした回数 |
| Select Full Range JOIN | custom.mysql.join.Select_full_range_join | ◯ | - | 参照テーブル上で範囲検索を使用したJOINの回数 |
| Select Range | custom.mysql.join.Select_range | ◯ | - | 最初のテーブルの範囲が使用されたJOINの回数 |
| Select Range Check | custom.mysql.join.Select_range_check | ◯ | - | インデックスキーなしのJOINの回数 |
| Select SCAN | custom.mysql.join.Select_scan | ◯ | - | 最初のテーブルでフルスキャンが実行されたJOINの回数 |
SHOW /*!50002 GLOBAL */ STATUSの結果から各変数の値をメトリックとしています。
MySQL Threads
| メトリック表示名 | メトリック名 | 差分 | 積み上げ表示 | 説明 |
|---|---|---|---|---|
| Cache Size | custom.mysql.threads.thread_cache_size | - | - | スレッドキャッシュサイズ |
| Connected | custom.mysql.threads.Threads_connected | - | - | 現在開いている接続数 |
| Running | custom.mysql.threads.Threads_running | - | - | 稼働中のスレッド数 |
| Created | custom.mysql.threads.Threads_created | ◯ | - | 新規作成されたスレッド数 |
| Cached | custom.mysql.threads.Threads_cached | - | - | スレッドキャッシュ内のスレッド数 |
thread_cache_sizeはSHOW VARIABLESの結果から変数の値をメトリックとしています。SHOW /*!50002 GLOBAL */ STATUSの結果から各変数の値をメトリックとしています。
MySQL Connections
| メトリック表示名 | メトリック名 | 差分 | 積み上げ表示 | 説明 |
|---|---|---|---|---|
| Max Connections | custom.mysql.connections.max_connections | - | - | 最大同時接続数 |
| Max Used Connections | custom.mysql.connections.Max_used_connections | - | - | 稼働中に同時接続された最大数 |
| Connections | custom.mysql.connections.Connections | ◯ | - | 接続の試行数 |
| Threads Connected | custom.mysql.connections.Threads_connected | - | - | 現在開いている接続数 |
| Aborted Clients | custom.mysql.connections.Aborted_clients | ◯ | - | クライアントが接続を適切に閉じることなく終了したため中止された接続数 |
| Aborted Connects | custom.mysql.connections.Aborted_connects | ◯ | - | MySQL Server への接続に失敗した試行数 |
max_connectionsはSHOW VARIABLESの結果から変数の値をメトリックとしています。SHOW /*!50002 GLOBAL */ STATUSの結果から各変数の値をメトリックとしています。
MySQL Slave status
| メトリック表示名 | メトリック名 | 差分 | 積み上げ表示 | 説明 |
|---|---|---|---|---|
| Seconds Behind Master | custom.mysql.seconds_behind_master.Seconds_Behind_Master | - | - | スレーブ SQL スレッドとスレーブ I/O スレッドの間の時間差 (秒単位) |
SHOW SLAVE STATUSの結果をメトリックとしています。
MySQL Table Locks/Slow Queries
| メトリック表示名 | メトリック名 | 差分 | 積み上げ表示 | 説明 |
|---|---|---|---|---|
| Table Locks Immediate | custom.mysql.table_locks.Table_locks_immediate | ◯ | - | テーブルロックを即座に取得した回数 |
| Table Locks Waited | custom.mysql.table_locks.Table_locks_waited | ◯ | - | テーブルロックがブロックされ取得に待機が必要だった回数 |
| Slow Queries | custom.mysql.table_locks.Slow_queries | ◯ | - | long_query_time 秒よりも時間を要したクエリ数 |
SHOW /*!50002 GLOBAL */ STATUSの結果から各変数の値をメトリックとしています。
MySQL Traffic
| メトリック表示名 | メトリック名 | 差分 | 積み上げ表示 | 説明 |
|---|---|---|---|---|
| Sent Bytes | custom.mysql.traffic.Bytes_sent | ◯ | - | すべてのクライアントに送信されたバイト数 |
| Received Bytes | custom.mysql.traffic.Bytes_received | ◯ | - | すべてのクライアントから受信したバイト数 |
SHOW /*!50002 GLOBAL */ STATUSの結果から各変数の値をメトリックとしています。
MySQL Capacity
| メトリック表示名 | メトリック名 | 差分 | 積み上げ表示 | 説明 |
|---|---|---|---|---|
| Percentage Of Connections | custom.mysql.capacity.PercentageOfConnections | - | - | 接続数の割合 |
| Percentage Of Buffer Pool | custom.mysql.capacity.PercentageOfBufferPool | - | - | バッファープールの割合 |
SHOW VARIABLES,SHOW /*!50002 GLOBAL */ STATUSの結果から算出した値をメトリックとしています。- 接続数の割合は
Threads_connected / max_connectionsで算出しています。 - バッファープールの割合は
database_pages / Innodb_buffer_pool_pages_totalで算出しています。
- 接続数の割合は
- プラグインのオプションに
--disable_innodb=trueが指定されている場合、バッファープールの割合は出力されません。
InnoDBに関するメトリック
InnoDBに関するメトリックはデフォルトで有効ですが、--disable_innodb=trueオプションを付与することで無効化できます。
MySQL innodb Rows
| メトリック表示名 | メトリック名 | 差分 | 積み上げ表示 | 説明 |
|---|---|---|---|---|
| Read | custom.mysql.innodb_rows.Innodb_rows_read | ◯ | - | InnoDB テーブルから読み取られた行数 |
| Inserted | custom.mysql.innodb_rows.Innodb_rows_inserted | ◯ | - | InnoDB テーブルに挿入された行数 |
| Updated | custom.mysql.innodb_rows.Innodb_rows_updated | ◯ | - | InnoDB テーブル内で更新された行数 |
| Deleted | custom.mysql.innodb_rows.Innodb_rows_deleted | ◯ | - | InnoDB テーブルから削除された行数 |
SHOW /*!50002 GLOBAL */ STATUSの結果から各変数の値をメトリックとしています。
MySQL innodb Row Lock Time
| メトリック表示名 | メトリック名 | 差分 | 積み上げ表示 | 説明 |
|---|---|---|---|---|
| Lock Time | custom.mysql.innodb_row_lock_time.Innodb_row_lock_time | ◯ | - | InnoDB テーブルの行ロックの取得に要した合計時間 (ミリ秒単位) |
SHOW /*!50002 GLOBAL */ STATUSの結果から各変数の値をメトリックとしています。
MySQL innodb Row Lock Waits
| メトリック表示名 | メトリック名 | 差分 | 積み上げ表示 | 説明 |
|---|---|---|---|---|
| Lock Waits | custom.mysql.innodb_row_lock_waits.Innodb_row_lock_waits | ◯ | - | InnoDB テーブル上の操作が行ロックを待機した回数 |
SHOW /*!50002 GLOBAL */ STATUSの結果から各変数の値をメトリックとしています。
MySQL innodb Adaptive Hash Index
| メトリック表示名 | メトリック名 | 差分 | 積み上げ表示 | 説明 |
|---|---|---|---|---|
| Hash Index Cells Total | custom.mysql.innodb_adaptive_hash_index.hash_index_cells_total | - | - | Adaptive Hash Indexの総Cell量 |
| Hash Index Cells Used | custom.mysql.innodb_adaptive_hash_index.hash_index_cells_used | - | - | Adaptive Hash Indexの使用量 |
SHOW /*!50000 ENGINE*/ INNODB STATUSの結果から、INSERT BUFFER AND ADAPTIVE HASH INDEXの項目をメトリックとしています。hash_index_cells_usedはMySQL 5.1.28以降では使用できなくなりました。プラグインのバージョンによって次のように取り扱いが変わります。- mackerel-plugin-mysql v1.2.1以降はメトリックが出力されません。
- mackerel-plugin-mysql v1.2.0以前では常に
0となります。
MySQL innodb Buffer Pool Read (/sec)
| メトリック表示名 | メトリック名 | 差分 | 積み上げ表示 | 説明 |
|---|---|---|---|---|
| Pages Read Ahead | custom.mysql.innodb_buffer_pool_read.read_ahead | ◯ | - | InnoDB バッファープールに読み取られた1秒あたりのページ数 |
| Evicted Without Access | custom.mysql.innodb_buffer_pool_read.read_evicted | ◯ | - | 未使用により消去されたInnoDB バッファープールに読み取られた1秒あたりのページ数 |
| Random Read Ahead | custom.mysql.innodb_buffer_pool_read.read_random_ahead | ◯ | - | InnoDBによってランダムに読み取りされた1秒あたりの数(※MySQL5.7以降) |
SHOW /*!50002 GLOBAL */ STATUSの結果から以下の変数の値をメトリックとしています。- Innodb_buffer_pool_read_ahead
- Innodb_buffer_pool_read_ahead_evicted
- Innodb_buffer_pool_read_ahead_rnd
MySQL innodb Buffer Pool Activity (Pages)
| メトリック表示名 | メトリック名 | 差分 | 積み上げ表示 | 説明 |
|---|---|---|---|---|
| Created | custom.mysql.innodb_buffer_pool_activity.pages_created | ◯ | - | InnoDB テーブルの操作によって作成されるページ数 |
| Read | custom.mysql.innodb_buffer_pool_activity.pages_read | ◯ | - | InnoDB テーブルの操作によって読み取られるページ数 |
| Written | custom.mysql.innodb_buffer_pool_activity.pages_written | ◯ | - | InnoDB テーブルの操作によって書き込まれるページ数 |
SHOW /*!50002 GLOBAL */ STATUSの結果から以下の変数の値をメトリックとしています。- Innodb_pages_created
- Innodb_pages_read
- Innodb_pages_written
MySQL innodb Buffer Pool Efficiency
| メトリック表示名 | メトリック名 | 差分 | 積み上げ表示 | 説明 |
|---|---|---|---|---|
| Reads | custom.mysql.innodb_buffer_pool_efficiency.Innodb_buffer_pool_reads | ◯ | - | バッファープールが利用せず直接読み取りを行った数 |
| Read Requests | custom.mysql.innodb_buffer_pool_efficiency.Innodb_buffer_pool_read_requests | ◯ | - | 論理読み取りリクエスト数 |
SHOW /*!50002 GLOBAL */ STATUSの結果から各変数の値をメトリックとしています。
MySQL innodb Buffer Pool (Pages)
| メトリック表示名 | メトリック名 | 差分 | 積み上げ表示 | 説明 |
|---|---|---|---|---|
| Pool Size | custom.mysql.innodb_buffer_pool.pool_size | - | - | InnoDB バッファープールの合計サイズ (ページ単位) |
| Used | custom.mysql.innodb_buffer_pool.database_pages | - | - | データを含む InnoDB バッファープール内のページ数 |
| Free | custom.mysql.innodb_buffer_pool.free_pages | - | - | InnoDB バッファープール内の空きページの数 |
| Modified | custom.mysql.innodb_buffer_pool.modified_pages | - | - | InnoDB バッファープール内のダーティーページの現在の数 |
SHOW /*!50002 GLOBAL */ STATUSの結果から以下の変数の値をメトリックとしています。- Innodb_buffer_pool_pages_total
- Innodb_buffer_pool_pages_data
- Innodb_buffer_pool_pages_free
- Innodb_buffer_pool_pages_dirty
MySQL innodb Checkpoint Age
| メトリック表示名 | メトリック名 | 差分 | 積み上げ表示 | 説明 |
|---|---|---|---|---|
| Uncheckpointed | custom.mysql.innodb_checkpoint_age.uncheckpointed_bytes | - | - | チェックポイントで書き込みされていないサイズ(byte) |
SHOW /*!50000 ENGINE*/ INNODB STATUSの結果から、log_bytes_written - last_checkpointで算出しています。
MySQL innodb Current Lock Waits (secs)
| メトリック表示名 | メトリック名 | 差分 | 積み上げ表示 | 説明 |
|---|---|---|---|---|
| Innodb Lock Wait | custom.mysql.innodb_current_lock_waits.innodb_lock_wait_secs | - | - | ロックが許可されるまで待機した時間(秒) |
SHOW /*!50000 ENGINE*/ INNODB STATUSのTRANSACTIONSから、ロックが許可されるまで待機時間をメトリックとしています。
MySQL innodb I/O
| メトリック表示名 | メトリック名 | 差分 | 積み上げ表示 | 説明 |
|---|---|---|---|---|
| Log Writes | custom.mysql.innodb_io.log_writes | ◯ | - | ログ書き込みI/Oの実行回数 |
| File Reads | custom.mysql.innodb_io.file_reads | ◯ | - | データ読み取りの合計数 |
| File Writes | custom.mysql.innodb_io.file_writes | ◯ | - | データ書き込みの合計数 |
| File fsyncs | custom.mysql.innodb_io.file_fsyncs | ◯ | - | fsync() の実行回数 |
log_writesはSHOW /*!50000 ENGINE*/ INNODB STATUSのLOGから、変数の値をメトリックとしています。- その他は
SHOW /*!50002 GLOBAL */ STATUSの結果から以下の変数の値をメトリックとしています。- Innodb_data_reads
- Innodb_data_writes
- Innodb_data_fsyncs
MySQL innodb I/O Pending
| メトリック表示名 | メトリック名 | 差分 | 積み上げ表示 | 説明 |
|---|---|---|---|---|
| Normal AIO Reads | custom.mysql.innodb_io_pending.pending_normal_aio_reads | - | - | 通常読み込みでの非同期I/O待ちの数 |
| Normal AIO Writes | custom.mysql.innodb_io_pending.pending_normal_aio_writes | - | - | 通常書き込みでの非同期I/O待ちの数 |
| InnoDB Buffer AIO Reads | custom.mysql.innodb_io_pending.pending_ibuf_aio_reads | - | - | INSERTバッファーの非同期I/Oによる読み込み待ちの数 |
| AIO Log IOs | custom.mysql.innodb_io_pending.pending_aio_log_ios | - | - | INSERTバッファーのログI/O待ちの数 |
| AIO Sync IOs | custom.mysql.innodb_io_pending.pending_aio_sync_ios | - | - | INSERTバッファーの同期I/O待ちの数 |
| Log Flushes (fsync) | custom.mysql.innodb_io_pending.pending_log_flushes | - | - | ログのフラッシュ待ちの数 |
| Buffer Pool Flushes | custom.mysql.innodb_io_pending.pending_buf_pool_flushes | - | - | バッファープールのフラッシュ待ちの数 |
| Log Writes | custom.mysql.innodb_io_pending.pending_log_writes | - | - | ログ書き込み待ちの数 |
| Checkpoint Writes | custom.mysql.innodb_io_pending.pending_chkp_writes | - | - | チェックポイントの書き込み待ちの数 |
| Log Flushes (log) | custom.mysql.innodb_io_pending.log_pending_log_flushes | - | - | ログ書き込み待ちの数 |
SHOW /*!50000 ENGINE*/ INNODB STATUSの結果から、FILE I/OとLOGに関する項目をメトリックとしています。- MySQLのバージョンによって取得するメトリックが異なります。
pending_log_writeはMySQL5.7以降では出力されません。pending_chkp_writesはMySQL8以降では出力されません。log_pending_log_flushesはMySQL5.7以降、MySQL8未満のバージョンで出力されます。
MySQL innodb Insert Buffer
| メトリック表示名 | メトリック名 | 差分 | 積み上げ表示 | 説明 |
|---|---|---|---|---|
| Inserts | custom.mysql.innodb_insert_buffer.ibuf_inserts | ◯ | - | バッファされた書き込み操作の回数 |
| Merges | custom.mysql.innodb_insert_buffer.ibuf_merges | ◯ | - | マージ要求された回数 |
| Merged | custom.mysql.innodb_insert_buffer.ibuf_merged | ◯ | - | マージされた回数 |
SHOW /*!50000 ENGINE*/ INNODB STATUSの結果から、INSERT BUFFER AND ADAPTIVE HASH INDEXに関する項目をメトリックとしています。
MySQL innodb Insert Buffer Usage (Cells)
| メトリック表示名 | メトリック名 | 差分 | 積み上げ表示 | 説明 |
|---|---|---|---|---|
| Cell Count | custom.mysql.innodb_insert_buffer_usage.ibuf_cell_count | - | - | INSERTバッファーのセル数 |
| Used | custom.mysql.innodb_insert_buffer_usage.ibuf_used_cells | - | ◯ | 利用中のセル数 |
| Free | custom.mysql.innodb_insert_buffer_usage.ibuf_free_cells | - | ◯ | 空きセル数 |
SHOW /*!50000 ENGINE*/ INNODB STATUSの結果から、INSERT BUFFER AND ADAPTIVE HASH INDEXに関する項目をメトリックとしています。
MySQL innodb Lock Structures
| メトリック表示名 | メトリック名 | 差分 | 積み上げ表示 | 説明 |
|---|---|---|---|---|
| Structures | custom.mysql.innodb_lock_structures.innodb_lock_structs | - | - | 解放待ちのlock structの数 |
SHOW /*!50000 ENGINE*/ INNODB STATUSの以下からロック解放に関する項目をメトリックとしています。TRANSACTIONSLATEST DETECTED DEADLOCKLATEST FOREIGN KEY ERROR
MySQL innodb Log
| メトリック表示名 | メトリック名 | 差分 | 積み上げ表示 | 説明 |
|---|---|---|---|---|
| Written | custom.mysql.innodb_log.log_bytes_written | ◯ | - | ログに書き込みをしたサイズ |
| Flushed | custom.mysql.innodb_log.log_bytes_flushed | ◯ | - | ログから書き戻しをしたサイズ |
| Unflushed | custom.mysql.innodb_log.unflushed_log | - | - | ログから書き出されていないサイズ |
| Buffer Size | custom.mysql.innodb_log.innodb_log_buffer_size | - | ◯ | ログバッファーサイズ |
innodb_log_buffer_sizeはSHOW VARIABLESの結果から変数の値をメトリックとしています。- その他は
SHOW /*!50000 ENGINE*/ INNODB STATUSのLOGからログ書き込みなどに関する項目をメトリックとしています。unflushed_logはlog_bytes_written - log_bytes_flushedで算出しています。
MySQL innodb Memory Allocation
| メトリック表示名 | メトリック名 | 差分 | 積み上げ表示 | 説明 |
|---|---|---|---|---|
| Additional Pool Allocated | custom.mysql.innodb_memory_allocation.additional_pool_alloc | - | - | additional poolのメモリ割り当て量 |
| Total Memory Allocated | custom.mysql.innodb_memory_allocation.total_mem_alloc | - | - | メモリの総割り当て量 |
SHOW /*!50000 ENGINE*/ INNODB STATUSのBUFFER POOL AND MEMORYからメモリ割り当て量に関する項目をメトリックとしています。
MySQL innodb Semaphores
| メトリック表示名 | メトリック名 | 差分 | 積み上げ表示 | 説明 |
|---|---|---|---|---|
| Spin Waits | custom.mysql.innodb_semaphores.spin_waits | ◯ | - | 排他ロックを要求した回数 |
| Spin Rounds | custom.mysql.innodb_semaphores.spin_rounds | ◯ | - | 排他ロックのが獲得できずスピンループした回数 |
| OS Waits | custom.mysql.innodb_semaphores.os_waits | ◯ | - | 規定回数のスピンループでもロック獲得できずに待機となった回数 |
SHOW /*!50000 ENGINE*/ INNODB STATUSのSEMAPHORESからセマフォのスピンや待機に関する項目をメトリックとしています。
MySQL innodb Tables In Use
| メトリック表示名 | メトリック名 | 差分 | 積み上げ表示 | 説明 |
|---|---|---|---|---|
| Locked Tables | custom.mysql.innodb_tables_in_use.innodb_locked_tables | - | - | 実行中のトランザクションによりロックされている延べテーブル数 |
| Table in Use | custom.mysql.innodb_tables_in_use.innodb_tables_in_use | - | - | 実行中のトランザクションにより使用されている延べテーブル数 |
SHOW /*!50000 ENGINE*/ INNODB STATUSのTRANSACTIONSから実行中のトランザクションに関する項目をメトリックとしています。
MySQL innodb Transactions Active/Locked
| メトリック表示名 | メトリック名 | 差分 | 積み上げ表示 | 説明 |
|---|---|---|---|---|
| Current | custom.mysql.innodb_transactions_active_locked.current_transactions | - | - | 実行中のトランザクション数 |
| Active | custom.mysql.innodb_transactions_active_locked.active_transactions | - | - | 実行中のアクティブなトランザクション数 |
| Locked | custom.mysql.innodb_transactions_active_locked.locked_transactions | - | - | LOCK WAITとなっているトランザクション数 |
| Read Views | custom.mysql.innodb_transactions_active_locked.read_views | - | - | Read Viewを開いているトランザクション数 |
SHOW /*!50000 ENGINE*/ INNODB STATUSのTRANSACTIONSとROW OPERATIONSから実行中のトランザクションに関する項目をメトリックとしています。
MySQL innodb Transactions
| メトリック表示名 | メトリック名 | 差分 | 積み上げ表示 | 説明 |
|---|---|---|---|---|
| History List | custom.mysql.innodb_transactions.history_list | - | - | UNDOページ数 |
| InnoDB Transactions | custom.mysql.innodb_transactions.innodb_transactions | ◯ | - | トランザクション数 |
SHOW /*!50000 ENGINE*/ INNODB STATUSのTRANSACTIONSから実行中のトランザクションに関する項目をメトリックとしています。
拡張メトリック
拡張メトリックは--enable_extended=trueオプションで有効化できます。
MySQL query Cache
| メトリック表示名 | メトリック名 | 差分 | 積み上げ表示 | 説明 |
|---|---|---|---|---|
| Qcache Queries In Cache | custom.mysql.query_cache.Qcache_queries_in_cache | - | - | クエリキャッシュ内に登録されたクエリの数 |
| Qcache Hits | custom.mysql.query_cache.Qcache_hits | ◯ | - | クエリキャッシュヒットの数 |
| Qcache Inserts | custom.mysql.query_cache.Qcache_inserts | ◯ | - | クエリキャッシュに追加されるクエリの数 |
| Qcache Not Cached | custom.mysql.query_cache.Qcache_not_cached | ◯ | - | 非キャッシュクエリの数 |
| Qcache Lowmem Prunes | custom.mysql.query_cache.Qcache_lowmem_prunes | ◯ | - | メモリ不足のためクエリキャッシュから削除されたクエリの数 |
SHOW /*!50002 GLOBAL */ STATUSの結果から各変数の値をメトリックとしています。- MySQL8.0.3以降では非対応となりました。
MySQL query Cache Memory
| メトリック表示名 | メトリック名 | 差分 | 積み上げ表示 | 説明 |
|---|---|---|---|---|
| Query Cache Size | custom.mysql.query_cache_memory.query_cache_size | - | - | クエリ結果をキャッシュするために割り当てられたメモリの量 |
| Qcache Free Memory | custom.mysql.query_cache_memory.Qcache_free_memory | - | - | クエリキャッシュ用の空きメモリの量 |
| Qcache Total Blocks | custom.mysql.query_cache_memory.Qcache_total_blocks | - | - | クエリキャッシュ内のブロックの合計数 |
| Qcache Free Blocks | custom.mysql.query_cache_memory.Qcache_free_blocks | - | - | クエリキャッシュ内の空きメモリブロックの数 |
query_cache_sizeはSHOW GLOBAL VARIABLES結果から値をメトリックとしています。- その他は
SHOW /*!50002 GLOBAL */ STATUSの結果から各変数の値をメトリックとしています。 - MySQL8.0.3以降では非対応となりました。
MySQL temporary Objects
| メトリック表示名 | メトリック名 | 差分 | 積み上げ表示 | 説明 |
|---|---|---|---|---|
| Created Tmp Tables | custom.mysql.temporary_objects.Created_tmp_tables | ◯ | - | ステートメントの実行中に作成された内部一時テーブルの数 |
| Created Tmp Disk Tables | custom.mysql.temporary_objects.Created_tmp_disk_tables | ◯ | - | ステートメントの実行中に作成されたディスク上の内部一時テーブルの数 |
| Created Tmp Files | custom.mysql.temporary_objects.Created_tmp_files | ◯ | - | mysqld が生成した一時ファイルの数 |
SHOW /*!50002 GLOBAL */ STATUSの結果から各変数の値をメトリックとしています。
MySQL files and Tables
| メトリック表示名 | メトリック名 | 差分 | 積み上げ表示 | 説明 |
|---|---|---|---|---|
| Table Cache | custom.mysql.files_and_tables.table_cache | - | - | 保持できるテーブルキャッシュの最大数 |
| Open Tables | custom.mysql.files_and_tables.Open_tables | - | - | 開いているテーブルの数 |
| Open Files | custom.mysql.files_and_tables.Open_files | - | - | 開いているファイルの数 |
| Opened Tables | custom.mysql.files_and_tables.Opened_tables | ◯ | - | サーバー起動以降に開かれたテーブルの総数 |
table_cacheはSHOW VARIABLESの結果からtable_open_cacheの値をメトリックとしています。- その他は
SHOW /*!50002 GLOBAL */ STATUSの結果から各変数の値をメトリックとしています。
MySQL processlist
| メトリック表示名 | メトリック名 | 差分 | 積み上げ表示 | 説明 |
|---|---|---|---|---|
| State Closing Tables | custom.mysql.processlist.State_closing_tables | - | ◯ | テーブルをクローズしている件数 |
| State Copying To Tmp Table | custom.mysql.processlist.State_copying_to_tmp_table | - | ◯ | 一時テーブルにコピーしている件数 |
| State End | custom.mysql.processlist.State_end | - | ◯ | ALTER TABLE、CREATE VIEW、DELETE、INSERT、SELECT、UPDATE ステートメントのクリーンアップ前の件数 |
| State Freeing Items | custom.mysql.processlist.State_freeing_items | - | ◯ | 解放中の件数 |
| State Init | custom.mysql.processlist.State_init | - | ◯ | ALTER TABLE、DELETE、INSERT、SELECT、UPDATEステートメントの初期化前の件数 |
| State Locked | custom.mysql.processlist.State_locked | - | ◯ | ロック獲得中の件数 |
| State Login | custom.mysql.processlist.State_login | - | ◯ | 接続認証中の件数 |
| State Preparing | custom.mysql.processlist.State_preparing | - | ◯ | クエリのPrepare中の件数 |
| State Reading From Net | custom.mysql.processlist.State_reading_from_net | - | ◯ | パケット読み取り中の件数 |
| State Sending Data | custom.mysql.processlist.State_sending_data | - | ◯ | SELECT結果をクライアントに送信中の件数 |
| State Sorting Result | custom.mysql.processlist.State_sorting_result | - | ◯ | 非一時テーブルにソートを実行している件数 |
| State Statistics | custom.mysql.processlist.State_statistics | - | ◯ | クエリの実行計画中の件数 |
| State Updating | custom.mysql.processlist.State_updating | - | ◯ | 行を更新中の件数 |
| State Writing To Net | custom.mysql.processlist.State_writing_to_net | - | ◯ | パケット書き込み中の件数 |
| State None | custom.mysql.processlist.State_none | - | ◯ | Stateが空の件数 |
| State Other | custom.mysql.processlist.State_other | - | ◯ | 未知のStateの件数 |
SHOW PROCESSLISTの結果から各変数の値をメトリックとしています。
MySQL sorts
| メトリック表示名 | メトリック名 | 差分 | 積み上げ表示 | 説明 |
|---|---|---|---|---|
| Sort Rows | custom.mysql.sorts.Sort_rows | ◯ | - | ソートされた行の数 |
| Sort Range | custom.mysql.sorts.Sort_range | ◯ | - | 範囲を使用して実行されたソートの数 |
| Sort Merge Passes | custom.mysql.sorts.Sort_merge_passes | ◯ | - | ソートアルゴリズムが実行する必要があったマージパスの数 |
| Sort Scan | custom.mysql.sorts.Sort_scan | ◯ | - | テーブルをスキャンすることで実行されたソートの数 |
SHOW /*!50002 GLOBAL */ STATUSの結果から各変数の値をメトリックとしています。
MySQL handlers
| メトリック表示名 | メトリック名 | 差分 | 積み上げ表示 | 説明 |
|---|---|---|---|---|
| Handler Write | custom.mysql.handlers.Handler_write | ◯ | ◯ | テーブルへの行挿入リクエスト数 |
| Handler Update | custom.mysql.handlers.Handler_update | ◯ | ◯ | テーブルの行更新リクエスト数 |
| Handler Delete | custom.mysql.handlers.Handler_delete | ◯ | ◯ | テーブルから行が削除された回数 |
| Handler Read First | custom.mysql.handlers.Handler_read_first | ◯ | ◯ | インデックスの最初のエントリが読み取られた回数 |
| Handler Read Key | custom.mysql.handlers.Handler_read_key | ◯ | ◯ | キーに基づいて行を読み取るリクエスト数 |
| Handler Read Last | custom.mysql.handlers.Handler_read_last | ◯ | ◯ | インデックスの最後のキーを読み取るリクエスト数(MySQL 5.6.1以降) |
| Handler Read Next | custom.mysql.handlers.Handler_read_next | ◯ | ◯ | キー順で次の行の読み取りリクエスト数 |
| Handler Read Prev | custom.mysql.handlers.Handler_read_prev | ◯ | ◯ | キー順で前の行の読み取りリクエスト数 |
| Handler Read Rnd | custom.mysql.handlers.Handler_read_rnd | ◯ | ◯ | 固定された位置に基づいた行読み取りリクエスト数 |
| Handler Read Rnd Next | custom.mysql.handlers.Handler_read_rnd_next | ◯ | ◯ | データファイル内で次の行の読み取りリクエスト数 |
SHOW /*!50002 GLOBAL */ STATUSの結果から各変数の値をメトリックとしています。
MySQL transaction handler
| メトリック表示名 | メトリック名 | 差分 | 積み上げ表示 | 説明 |
|---|---|---|---|---|
| Handler Commit | custom.mysql.transaction_handler.Handler_commit | ◯ | - | 内部 COMMIT ステートメントの数 |
| Handler Rollback | custom.mysql.transaction_handler.Handler_rollback | ◯ | - | ロールバック操作を実行するためのストレージエンジンのリクエスト数 |
| Handler Savepoint | custom.mysql.transaction_handler.Handler_savepoint | ◯ | - | セーブポイントを配置するためのストレージエンジンへのリクエスト数 |
SHOW /*!50002 GLOBAL */ STATUSの結果から各変数の値をメトリックとしています。
MySQL MyISAM Indexes
| メトリック表示名 | メトリック名 | 差分 | 積み上げ表示 | 説明 |
|---|---|---|---|---|
| Key Read Requests | custom.mysql.myisam_indexes.Key_read_requests | ◯ | - | MyISAM キーキャッシュからキーブロックを読み取るリクエスト数 |
| Key Reads | custom.mysql.myisam_indexes.Key_reads | ◯ | - | ディスクから MyISAM キーキャッシュへのキーブロックの物理的な読み取りの数 |
| Key Write Requests | custom.mysql.myisam_indexes.Key_write_requests | ◯ | - | MyISAM キーキャッシュにキーブロックを書き込むリクエスト数 |
| Key Writes | custom.mysql.myisam_indexes.Key_writes | ◯ | - | MyISAM キーキャッシュからディスクへのキーブロックの物理的な書き込みの数 |
SHOW /*!50002 GLOBAL */ STATUSの結果から各変数の値をメトリックとしています。
MySQL MyISAM Key Cache
| メトリック表示名 | メトリック名 | 差分 | 積み上げ表示 | 説明 |
|---|---|---|---|---|
| Key Buffer Size | custom.mysql.myisam_key_cache.key_buffer_size | - | - | インデックスブロックに使用されるバッファーのサイズ |
| Key Buf Bytes Used | custom.mysql.myisam_key_cache.key_buf_bytes_used | - | - | 使用中のキーバッファーのサイズ |
| Key Buf Bytes Unflushed | custom.mysql.myisam_key_cache.key_buf_bytes_unflushed | - | - | ディスクにフラッシュされていないキーバッファーのサイズ |
SHOW VARIABLES,SHOW /*!50002 GLOBAL */ STATUSの結果から各変数の値をメトリックとしています。key_buf_bytes_usedはkey_buffer_size - Key_blocks_unused * key_cache_block_sizeで算出しています。key_cache_block_sizeの変数が利用可能な場合のみ
key_buf_bytes_unflushedはKey_blocks_not_flushed * key_cache_block_sizeで算出しています。Key_blocks_not_flushedの変数が利用可能な場合のみ
指定可能なオプション
プラグインに指定可能なオプションは以下の通りです。
| オプション | 環境変数 | 説明 | 初期値 |
|---|---|---|---|
| --host | 接続先ホスト名 | localhost | |
| --port | 接続先ポート番号 | 3306 | |
| --socket | UNIX Socketのパス | ||
| --username | 接続ユーザー名 | root | |
| --password | MYSQL_PASSWORD | 接続パスワード | |
| --tempfile | 一時ファイルの保存先パス | ||
| --disable_innodb | InnoDBに関するメトリック取得をtrueを指定すると無効化 | false | |
| --metric-key-prefix | メトリックに付与するprefix | mysql | |
| --enable_extended | 拡張メトリックの取得をtrueで有効化 | false | |
| --debug | デバッグモードをtrueで有効化 | false |
エージェントへの設定例
ローカルホスト上で3306番ポートで動作しているMySQLを監視するには次のように設定します。
toml
[plugin.metrics.mysql]
command = ["mackerel-plugin-mysql", "--host", "localhost", "--port", "3306"]上記設定の場合、次のように実行して動作確認できます。
mackerel-plugin-mysql --mysql localhost --port 3306プラグインの実行に必要なユーザ権限
データベースへ接続するユーザに下記の権限が必要です。
PROCESSSUPERREPLICATION CLIENT
リポジトリ
https://github.com/mackerelio/mackerel-plugin-mysql
参考
プラグインが参照する各変数の詳細については、以下のリファレンスマニュアルをご確認ください。
- MySQL :: MySQL 5.7 Reference Manual :: 5.1.7 Server System Variables
- MySQL :: MySQL 5.7 Reference Manual :: 5.1.9 Server Status Variables
- MySQL :: MySQL 5.7 Reference Manual :: 8.14.3 General Thread States
- MySQL :: MySQL 5.7 Reference Manual :: 13.7.5.29 SHOW PROCESSLIST Statement
- MySQL :: MySQL 5.7 Reference Manual :: 13.7.5.35 SHOW STATUS Statement
- MySQL :: MySQL 5.7 Reference Manual :: 14.5.3 Adaptive Hash Index
- MySQL :: MySQL 5.7 Reference Manual :: 14.18.3 InnoDB Standard Monitor and Lock Monitor Output