Skip to content

メトリックプラグイン - 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.0

mkrコマンドについては、以下をご参照ください。

監視できるメトリック

標準メトリック

MySQL Command

メトリック表示名メトリック名差分積み上げ表示説明
Insertcustom.mysql.cmd.Com_insertINSERTの実行回数
Insert Selectcustom.mysql.cmd.Com_insert_selectINSERT ... SELECTの実行回数
Selectcustom.mysql.cmd.Com_selectSELECTの実行回数 (クエリキャッシュを除く)
Updatecustom.mysql.cmd.Com_updateUPDATEの実行回数
Update Multicustom.mysql.cmd.Com_update_multi複数テーブル構文のUPDATEの実行回数
Deletecustom.mysql.cmd.Com_deleteDELETEの実行回数
Delete Multicustom.mysql.cmd.Com_delete_multi複数テーブル構文のDELETEの実行回数
Replacecustom.mysql.cmd.Com_replaceREPLACEの実行回数
Replace Selectcustom.mysql.cmd.Com_replace_selectREPLACE ... SELECTの実行回数
Loadcustom.mysql.cmd.Com_loadLOADの実行回数
Set Optioncustom.mysql.cmd.Com_set_optionSET OPTIONの実行回数
Query Cache Hitscustom.mysql.cmd.Qcache_hits-クエリキャッシュのヒット数
Questionscustom.mysql.cmd.Questions-サーバーによって実行されたステートメントの数
  • SHOW /*!50002 GLOBAL */ STATUSの結果から各変数の値をメトリックとしています。

MySQL Join/Scan

メトリック表示名メトリック名差分積み上げ表示説明
Select Full JOINcustom.mysql.join.Select_full_join-インデックスを使用せず、テーブルスキャンでJOINした回数
Select Full Range JOINcustom.mysql.join.Select_full_range_join-参照テーブル上で範囲検索を使用したJOINの回数
Select Rangecustom.mysql.join.Select_range-最初のテーブルの範囲が使用されたJOINの回数
Select Range Checkcustom.mysql.join.Select_range_check-インデックスキーなしのJOINの回数
Select SCANcustom.mysql.join.Select_scan-最初のテーブルでフルスキャンが実行されたJOINの回数
  • SHOW /*!50002 GLOBAL */ STATUSの結果から各変数の値をメトリックとしています。

MySQL Threads

メトリック表示名メトリック名差分積み上げ表示説明
Cache Sizecustom.mysql.threads.thread_cache_size--スレッドキャッシュサイズ
Connectedcustom.mysql.threads.Threads_connected--現在開いている接続数
Runningcustom.mysql.threads.Threads_running--稼働中のスレッド数
Createdcustom.mysql.threads.Threads_created-新規作成されたスレッド数
Cachedcustom.mysql.threads.Threads_cached--スレッドキャッシュ内のスレッド数
  • thread_cache_sizeSHOW VARIABLESの結果から変数の値をメトリックとしています。
  • SHOW /*!50002 GLOBAL */ STATUSの結果から各変数の値をメトリックとしています。

MySQL Connections

メトリック表示名メトリック名差分積み上げ表示説明
Max Connectionscustom.mysql.connections.max_connections--最大同時接続数
Max Used Connectionscustom.mysql.connections.Max_used_connections--稼働中に同時接続された最大数
Connectionscustom.mysql.connections.Connections-接続の試行数
Threads Connectedcustom.mysql.connections.Threads_connected--現在開いている接続数
Aborted Clientscustom.mysql.connections.Aborted_clients-クライアントが接続を適切に閉じることなく終了したため中止された接続数
Aborted Connectscustom.mysql.connections.Aborted_connects-MySQL Server への接続に失敗した試行数
  • max_connectionsSHOW VARIABLESの結果から変数の値をメトリックとしています。
  • SHOW /*!50002 GLOBAL */ STATUSの結果から各変数の値をメトリックとしています。

MySQL Slave status

メトリック表示名メトリック名差分積み上げ表示説明
Seconds Behind Mastercustom.mysql.seconds_behind_master.Seconds_Behind_Master--スレーブ SQL スレッドとスレーブ I/O スレッドの間の時間差 (秒単位)
  • SHOW SLAVE STATUSの結果をメトリックとしています。

MySQL Table Locks/Slow Queries

メトリック表示名メトリック名差分積み上げ表示説明
Table Locks Immediatecustom.mysql.table_locks.Table_locks_immediate-テーブルロックを即座に取得した回数
Table Locks Waitedcustom.mysql.table_locks.Table_locks_waited-テーブルロックがブロックされ取得に待機が必要だった回数
Slow Queriescustom.mysql.table_locks.Slow_queries-long_query_time 秒よりも時間を要したクエリ数
  • SHOW /*!50002 GLOBAL */ STATUSの結果から各変数の値をメトリックとしています。

MySQL Traffic

メトリック表示名メトリック名差分積み上げ表示説明
Sent Bytescustom.mysql.traffic.Bytes_sent-すべてのクライアントに送信されたバイト数
Received Bytescustom.mysql.traffic.Bytes_received-すべてのクライアントから受信したバイト数
  • SHOW /*!50002 GLOBAL */ STATUSの結果から各変数の値をメトリックとしています。

MySQL Capacity

メトリック表示名メトリック名差分積み上げ表示説明
Percentage Of Connectionscustom.mysql.capacity.PercentageOfConnections--接続数の割合
Percentage Of Buffer Poolcustom.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

メトリック表示名メトリック名差分積み上げ表示説明
Readcustom.mysql.innodb_rows.Innodb_rows_read-InnoDB テーブルから読み取られた行数
Insertedcustom.mysql.innodb_rows.Innodb_rows_inserted-InnoDB テーブルに挿入された行数
Updatedcustom.mysql.innodb_rows.Innodb_rows_updated-InnoDB テーブル内で更新された行数
Deletedcustom.mysql.innodb_rows.Innodb_rows_deleted-InnoDB テーブルから削除された行数
  • SHOW /*!50002 GLOBAL */ STATUSの結果から各変数の値をメトリックとしています。

MySQL innodb Row Lock Time

メトリック表示名メトリック名差分積み上げ表示説明
Lock Timecustom.mysql.innodb_row_lock_time.Innodb_row_lock_time-InnoDB テーブルの行ロックの取得に要した合計時間 (ミリ秒単位)
  • SHOW /*!50002 GLOBAL */ STATUSの結果から各変数の値をメトリックとしています。

MySQL innodb Row Lock Waits

メトリック表示名メトリック名差分積み上げ表示説明
Lock Waitscustom.mysql.innodb_row_lock_waits.Innodb_row_lock_waits-InnoDB テーブル上の操作が行ロックを待機した回数
  • SHOW /*!50002 GLOBAL */ STATUSの結果から各変数の値をメトリックとしています。

MySQL innodb Adaptive Hash Index

メトリック表示名メトリック名差分積み上げ表示説明
Hash Index Cells Totalcustom.mysql.innodb_adaptive_hash_index.hash_index_cells_total--Adaptive Hash Indexの総Cell量
Hash Index Cells Usedcustom.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 Aheadcustom.mysql.innodb_buffer_pool_read.read_ahead-InnoDB バッファープールに読み取られた1秒あたりのページ数
Evicted Without Accesscustom.mysql.innodb_buffer_pool_read.read_evicted-未使用により消去されたInnoDB バッファープールに読み取られた1秒あたりのページ数
Random Read Aheadcustom.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)

メトリック表示名メトリック名差分積み上げ表示説明
Createdcustom.mysql.innodb_buffer_pool_activity.pages_created-InnoDB テーブルの操作によって作成されるページ数
Readcustom.mysql.innodb_buffer_pool_activity.pages_read-InnoDB テーブルの操作によって読み取られるページ数
Writtencustom.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

メトリック表示名メトリック名差分積み上げ表示説明
Readscustom.mysql.innodb_buffer_pool_efficiency.Innodb_buffer_pool_reads-バッファープールが利用せず直接読み取りを行った数
Read Requestscustom.mysql.innodb_buffer_pool_efficiency.Innodb_buffer_pool_read_requests-論理読み取りリクエスト数
  • SHOW /*!50002 GLOBAL */ STATUSの結果から各変数の値をメトリックとしています。

MySQL innodb Buffer Pool (Pages)

メトリック表示名メトリック名差分積み上げ表示説明
Pool Sizecustom.mysql.innodb_buffer_pool.pool_size--InnoDB バッファープールの合計サイズ (ページ単位)
Usedcustom.mysql.innodb_buffer_pool.database_pages--データを含む InnoDB バッファープール内のページ数
Freecustom.mysql.innodb_buffer_pool.free_pages--InnoDB バッファープール内の空きページの数
Modifiedcustom.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

メトリック表示名メトリック名差分積み上げ表示説明
Uncheckpointedcustom.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 Waitcustom.mysql.innodb_current_lock_waits.innodb_lock_wait_secs--ロックが許可されるまで待機した時間(秒)
  • SHOW /*!50000 ENGINE*/ INNODB STATUSTRANSACTIONSから、ロックが許可されるまで待機時間をメトリックとしています。

MySQL innodb I/O

メトリック表示名メトリック名差分積み上げ表示説明
Log Writescustom.mysql.innodb_io.log_writes-ログ書き込みI/Oの実行回数
File Readscustom.mysql.innodb_io.file_reads-データ読み取りの合計数
File Writescustom.mysql.innodb_io.file_writes-データ書き込みの合計数
File fsyncscustom.mysql.innodb_io.file_fsyncs-fsync() の実行回数
  • log_writesSHOW /*!50000 ENGINE*/ INNODB STATUSLOGから、変数の値をメトリックとしています。
  • その他はSHOW /*!50002 GLOBAL */ STATUSの結果から以下の変数の値をメトリックとしています。
    • Innodb_data_reads
    • Innodb_data_writes
    • Innodb_data_fsyncs

MySQL innodb I/O Pending

メトリック表示名メトリック名差分積み上げ表示説明
Normal AIO Readscustom.mysql.innodb_io_pending.pending_normal_aio_reads--通常読み込みでの非同期I/O待ちの数
Normal AIO Writescustom.mysql.innodb_io_pending.pending_normal_aio_writes--通常書き込みでの非同期I/O待ちの数
InnoDB Buffer AIO Readscustom.mysql.innodb_io_pending.pending_ibuf_aio_reads--INSERTバッファーの非同期I/Oによる読み込み待ちの数
AIO Log IOscustom.mysql.innodb_io_pending.pending_aio_log_ios--INSERTバッファーのログI/O待ちの数
AIO Sync IOscustom.mysql.innodb_io_pending.pending_aio_sync_ios--INSERTバッファーの同期I/O待ちの数
Log Flushes (fsync)custom.mysql.innodb_io_pending.pending_log_flushes--ログのフラッシュ待ちの数
Buffer Pool Flushescustom.mysql.innodb_io_pending.pending_buf_pool_flushes--バッファープールのフラッシュ待ちの数
Log Writescustom.mysql.innodb_io_pending.pending_log_writes--ログ書き込み待ちの数
Checkpoint Writescustom.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/OLOGに関する項目をメトリックとしています。
  • MySQLのバージョンによって取得するメトリックが異なります。
    • pending_log_writeはMySQL5.7以降では出力されません。
    • pending_chkp_writesはMySQL8以降では出力されません。
    • log_pending_log_flushesはMySQL5.7以降、MySQL8未満のバージョンで出力されます。

MySQL innodb Insert Buffer

メトリック表示名メトリック名差分積み上げ表示説明
Insertscustom.mysql.innodb_insert_buffer.ibuf_inserts-バッファされた書き込み操作の回数
Mergescustom.mysql.innodb_insert_buffer.ibuf_merges-マージ要求された回数
Mergedcustom.mysql.innodb_insert_buffer.ibuf_merged-マージされた回数
  • SHOW /*!50000 ENGINE*/ INNODB STATUSの結果から、INSERT BUFFER AND ADAPTIVE HASH INDEXに関する項目をメトリックとしています。

MySQL innodb Insert Buffer Usage (Cells)

メトリック表示名メトリック名差分積み上げ表示説明
Cell Countcustom.mysql.innodb_insert_buffer_usage.ibuf_cell_count--INSERTバッファーのセル数
Usedcustom.mysql.innodb_insert_buffer_usage.ibuf_used_cells-利用中のセル数
Freecustom.mysql.innodb_insert_buffer_usage.ibuf_free_cells-空きセル数
  • SHOW /*!50000 ENGINE*/ INNODB STATUSの結果から、INSERT BUFFER AND ADAPTIVE HASH INDEXに関する項目をメトリックとしています。

MySQL innodb Lock Structures

メトリック表示名メトリック名差分積み上げ表示説明
Structurescustom.mysql.innodb_lock_structures.innodb_lock_structs--解放待ちのlock structの数
  • SHOW /*!50000 ENGINE*/ INNODB STATUSの以下からロック解放に関する項目をメトリックとしています。
    • TRANSACTIONS
    • LATEST DETECTED DEADLOCK
    • LATEST FOREIGN KEY ERROR

MySQL innodb Log

メトリック表示名メトリック名差分積み上げ表示説明
Writtencustom.mysql.innodb_log.log_bytes_written-ログに書き込みをしたサイズ
Flushedcustom.mysql.innodb_log.log_bytes_flushed-ログから書き戻しをしたサイズ
Unflushedcustom.mysql.innodb_log.unflushed_log--ログから書き出されていないサイズ
Buffer Sizecustom.mysql.innodb_log.innodb_log_buffer_size-ログバッファーサイズ
  • innodb_log_buffer_sizeSHOW VARIABLESの結果から変数の値をメトリックとしています。
  • その他はSHOW /*!50000 ENGINE*/ INNODB STATUSLOGからログ書き込みなどに関する項目をメトリックとしています。
    • unflushed_loglog_bytes_written - log_bytes_flushedで算出しています。

MySQL innodb Memory Allocation

メトリック表示名メトリック名差分積み上げ表示説明
Additional Pool Allocatedcustom.mysql.innodb_memory_allocation.additional_pool_alloc--additional poolのメモリ割り当て量
Total Memory Allocatedcustom.mysql.innodb_memory_allocation.total_mem_alloc--メモリの総割り当て量
  • SHOW /*!50000 ENGINE*/ INNODB STATUSBUFFER POOL AND MEMORYからメモリ割り当て量に関する項目をメトリックとしています。

MySQL innodb Semaphores

メトリック表示名メトリック名差分積み上げ表示説明
Spin Waitscustom.mysql.innodb_semaphores.spin_waits-排他ロックを要求した回数
Spin Roundscustom.mysql.innodb_semaphores.spin_rounds-排他ロックのが獲得できずスピンループした回数
OS Waitscustom.mysql.innodb_semaphores.os_waits-規定回数のスピンループでもロック獲得できずに待機となった回数
  • SHOW /*!50000 ENGINE*/ INNODB STATUSSEMAPHORESからセマフォのスピンや待機に関する項目をメトリックとしています。

MySQL innodb Tables In Use

メトリック表示名メトリック名差分積み上げ表示説明
Locked Tablescustom.mysql.innodb_tables_in_use.innodb_locked_tables--実行中のトランザクションによりロックされている延べテーブル数
Table in Usecustom.mysql.innodb_tables_in_use.innodb_tables_in_use--実行中のトランザクションにより使用されている延べテーブル数
  • SHOW /*!50000 ENGINE*/ INNODB STATUSTRANSACTIONSから実行中のトランザクションに関する項目をメトリックとしています。

MySQL innodb Transactions Active/Locked

メトリック表示名メトリック名差分積み上げ表示説明
Currentcustom.mysql.innodb_transactions_active_locked.current_transactions--実行中のトランザクション数
Activecustom.mysql.innodb_transactions_active_locked.active_transactions--実行中のアクティブなトランザクション数
Lockedcustom.mysql.innodb_transactions_active_locked.locked_transactions--LOCK WAITとなっているトランザクション数
Read Viewscustom.mysql.innodb_transactions_active_locked.read_views--Read Viewを開いているトランザクション数
  • SHOW /*!50000 ENGINE*/ INNODB STATUSTRANSACTIONSROW OPERATIONSから実行中のトランザクションに関する項目をメトリックとしています。

MySQL innodb Transactions

メトリック表示名メトリック名差分積み上げ表示説明
History Listcustom.mysql.innodb_transactions.history_list--UNDOページ数
InnoDB Transactionscustom.mysql.innodb_transactions.innodb_transactions-トランザクション数
  • SHOW /*!50000 ENGINE*/ INNODB STATUSTRANSACTIONSから実行中のトランザクションに関する項目をメトリックとしています。

拡張メトリック

拡張メトリックは--enable_extended=trueオプションで有効化できます。

MySQL query Cache

メトリック表示名メトリック名差分積み上げ表示説明
Qcache Queries In Cachecustom.mysql.query_cache.Qcache_queries_in_cache--クエリキャッシュ内に登録されたクエリの数
Qcache Hitscustom.mysql.query_cache.Qcache_hits-クエリキャッシュヒットの数
Qcache Insertscustom.mysql.query_cache.Qcache_inserts-クエリキャッシュに追加されるクエリの数
Qcache Not Cachedcustom.mysql.query_cache.Qcache_not_cached-非キャッシュクエリの数
Qcache Lowmem Prunescustom.mysql.query_cache.Qcache_lowmem_prunes-メモリ不足のためクエリキャッシュから削除されたクエリの数
  • SHOW /*!50002 GLOBAL */ STATUSの結果から各変数の値をメトリックとしています。
  • MySQL8.0.3以降では非対応となりました。

MySQL query Cache Memory

メトリック表示名メトリック名差分積み上げ表示説明
Query Cache Sizecustom.mysql.query_cache_memory.query_cache_size--クエリ結果をキャッシュするために割り当てられたメモリの量
Qcache Free Memorycustom.mysql.query_cache_memory.Qcache_free_memory--クエリキャッシュ用の空きメモリの量
Qcache Total Blockscustom.mysql.query_cache_memory.Qcache_total_blocks--クエリキャッシュ内のブロックの合計数
Qcache Free Blockscustom.mysql.query_cache_memory.Qcache_free_blocks--クエリキャッシュ内の空きメモリブロックの数
  • query_cache_sizeSHOW GLOBAL VARIABLES結果から値をメトリックとしています。
  • その他はSHOW /*!50002 GLOBAL */ STATUSの結果から各変数の値をメトリックとしています。
  • MySQL8.0.3以降では非対応となりました。

MySQL temporary Objects

メトリック表示名メトリック名差分積み上げ表示説明
Created Tmp Tablescustom.mysql.temporary_objects.Created_tmp_tables-ステートメントの実行中に作成された内部一時テーブルの数
Created Tmp Disk Tablescustom.mysql.temporary_objects.Created_tmp_disk_tables-ステートメントの実行中に作成されたディスク上の内部一時テーブルの数
Created Tmp Filescustom.mysql.temporary_objects.Created_tmp_files-mysqld が生成した一時ファイルの数
  • SHOW /*!50002 GLOBAL */ STATUSの結果から各変数の値をメトリックとしています。

MySQL files and Tables

メトリック表示名メトリック名差分積み上げ表示説明
Table Cachecustom.mysql.files_and_tables.table_cache--保持できるテーブルキャッシュの最大数
Open Tablescustom.mysql.files_and_tables.Open_tables--開いているテーブルの数
Open Filescustom.mysql.files_and_tables.Open_files--開いているファイルの数
Opened Tablescustom.mysql.files_and_tables.Opened_tables-サーバー起動以降に開かれたテーブルの総数
  • table_cacheSHOW VARIABLESの結果からtable_open_cacheの値をメトリックとしています。
  • その他はSHOW /*!50002 GLOBAL */ STATUSの結果から各変数の値をメトリックとしています。

MySQL processlist

メトリック表示名メトリック名差分積み上げ表示説明
State Closing Tablescustom.mysql.processlist.State_closing_tables-テーブルをクローズしている件数
State Copying To Tmp Tablecustom.mysql.processlist.State_copying_to_tmp_table-一時テーブルにコピーしている件数
State Endcustom.mysql.processlist.State_end-ALTER TABLE、CREATE VIEW、DELETE、INSERT、SELECT、UPDATE ステートメントのクリーンアップ前の件数
State Freeing Itemscustom.mysql.processlist.State_freeing_items-解放中の件数
State Initcustom.mysql.processlist.State_init-ALTER TABLE、DELETE、INSERT、SELECT、UPDATEステートメントの初期化前の件数
State Lockedcustom.mysql.processlist.State_locked-ロック獲得中の件数
State Logincustom.mysql.processlist.State_login-接続認証中の件数
State Preparingcustom.mysql.processlist.State_preparing-クエリのPrepare中の件数
State Reading From Netcustom.mysql.processlist.State_reading_from_net-パケット読み取り中の件数
State Sending Datacustom.mysql.processlist.State_sending_data-SELECT結果をクライアントに送信中の件数
State Sorting Resultcustom.mysql.processlist.State_sorting_result-非一時テーブルにソートを実行している件数
State Statisticscustom.mysql.processlist.State_statistics-クエリの実行計画中の件数
State Updatingcustom.mysql.processlist.State_updating-行を更新中の件数
State Writing To Netcustom.mysql.processlist.State_writing_to_net-パケット書き込み中の件数
State Nonecustom.mysql.processlist.State_none-Stateが空の件数
State Othercustom.mysql.processlist.State_other-未知のStateの件数
  • SHOW PROCESSLISTの結果から各変数の値をメトリックとしています。

MySQL sorts

メトリック表示名メトリック名差分積み上げ表示説明
Sort Rowscustom.mysql.sorts.Sort_rows-ソートされた行の数
Sort Rangecustom.mysql.sorts.Sort_range-範囲を使用して実行されたソートの数
Sort Merge Passescustom.mysql.sorts.Sort_merge_passes-ソートアルゴリズムが実行する必要があったマージパスの数
Sort Scancustom.mysql.sorts.Sort_scan-テーブルをスキャンすることで実行されたソートの数
  • SHOW /*!50002 GLOBAL */ STATUSの結果から各変数の値をメトリックとしています。

MySQL handlers

メトリック表示名メトリック名差分積み上げ表示説明
Handler Writecustom.mysql.handlers.Handler_writeテーブルへの行挿入リクエスト数
Handler Updatecustom.mysql.handlers.Handler_updateテーブルの行更新リクエスト数
Handler Deletecustom.mysql.handlers.Handler_deleteテーブルから行が削除された回数
Handler Read Firstcustom.mysql.handlers.Handler_read_firstインデックスの最初のエントリが読み取られた回数
Handler Read Keycustom.mysql.handlers.Handler_read_keyキーに基づいて行を読み取るリクエスト数
Handler Read Lastcustom.mysql.handlers.Handler_read_lastインデックスの最後のキーを読み取るリクエスト数(MySQL 5.6.1以降)
Handler Read Nextcustom.mysql.handlers.Handler_read_nextキー順で次の行の読み取りリクエスト数
Handler Read Prevcustom.mysql.handlers.Handler_read_prevキー順で前の行の読み取りリクエスト数
Handler Read Rndcustom.mysql.handlers.Handler_read_rnd固定された位置に基づいた行読み取りリクエスト数
Handler Read Rnd Nextcustom.mysql.handlers.Handler_read_rnd_nextデータファイル内で次の行の読み取りリクエスト数
  • SHOW /*!50002 GLOBAL */ STATUSの結果から各変数の値をメトリックとしています。

MySQL transaction handler

メトリック表示名メトリック名差分積み上げ表示説明
Handler Commitcustom.mysql.transaction_handler.Handler_commit-内部 COMMIT ステートメントの数
Handler Rollbackcustom.mysql.transaction_handler.Handler_rollback-ロールバック操作を実行するためのストレージエンジンのリクエスト数
Handler Savepointcustom.mysql.transaction_handler.Handler_savepoint-セーブポイントを配置するためのストレージエンジンへのリクエスト数
  • SHOW /*!50002 GLOBAL */ STATUSの結果から各変数の値をメトリックとしています。

MySQL MyISAM Indexes

メトリック表示名メトリック名差分積み上げ表示説明
Key Read Requestscustom.mysql.myisam_indexes.Key_read_requests-MyISAM キーキャッシュからキーブロックを読み取るリクエスト数
Key Readscustom.mysql.myisam_indexes.Key_reads-ディスクから MyISAM キーキャッシュへのキーブロックの物理的な読み取りの数
Key Write Requestscustom.mysql.myisam_indexes.Key_write_requests-MyISAM キーキャッシュにキーブロックを書き込むリクエスト数
Key Writescustom.mysql.myisam_indexes.Key_writes-MyISAM キーキャッシュからディスクへのキーブロックの物理的な書き込みの数
  • SHOW /*!50002 GLOBAL */ STATUSの結果から各変数の値をメトリックとしています。

MySQL MyISAM Key Cache

メトリック表示名メトリック名差分積み上げ表示説明
Key Buffer Sizecustom.mysql.myisam_key_cache.key_buffer_size--インデックスブロックに使用されるバッファーのサイズ
Key Buf Bytes Usedcustom.mysql.myisam_key_cache.key_buf_bytes_used--使用中のキーバッファーのサイズ
Key Buf Bytes Unflushedcustom.mysql.myisam_key_cache.key_buf_bytes_unflushed--ディスクにフラッシュされていないキーバッファーのサイズ
  • SHOW VARIABLES, SHOW /*!50002 GLOBAL */ STATUSの結果から各変数の値をメトリックとしています。
  • key_buf_bytes_usedkey_buffer_size - Key_blocks_unused * key_cache_block_sizeで算出しています。
    • key_cache_block_sizeの変数が利用可能な場合のみ
  • key_buf_bytes_unflushedKey_blocks_not_flushed * key_cache_block_sizeで算出しています。
    • Key_blocks_not_flushedの変数が利用可能な場合のみ

指定可能なオプション

プラグインに指定可能なオプションは以下の通りです。

オプション環境変数説明初期値
--host接続先ホスト名localhost
--port接続先ポート番号3306
--socketUNIX Socketのパス
--username接続ユーザー名root
--passwordMYSQL_PASSWORD接続パスワード
--tempfile一時ファイルの保存先パス
--disable_innodbInnoDBに関するメトリック取得をtrueを指定すると無効化false
--metric-key-prefixメトリックに付与するprefixmysql
--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

プラグインの実行に必要なユーザ権限

データベースへ接続するユーザに下記の権限が必要です。

  • PROCESS
  • SUPER
  • REPLICATION CLIENT

リポジトリ

https://github.com/mackerelio/mackerel-plugin-mysql

参考

プラグインが参照する各変数の詳細については、以下のリファレンスマニュアルをご確認ください。