MySQL監視インテグレーション

MySQL インテグレーションでは、ご利用のMySQLデータベースからインベントリとメトリックスを収集して当社のプラットフォームに送信します。このプラットフォームで、ご利用のデータベースサーバの健全性を確認し、メトリックデータを分析して、問題の原因を簡単に見つけることができます。

インテグレーションのインストールと、当社がどのようなデータを収集するかについてお読みください。

互換性と要件

当社のインテグレーションは、MySQLバージョン5.6以上と互換性があります。

インテグレーションをインストールする前に、以下の要件を満たしていることを確認してください。

MySQL v8.0以降では、次のメトリックはサポートされていません。cluster.slaveRunning, db.qCacheFreeMemoryBytes, db.qCacheHitRatio, db.qCacheNotCachedPerSecond.

インストールと有効化

MySQLインテグレーションをインストールするには、お使いの環境の指示に従います:

ECS

ECSで実行しているサービスを監視するをご覧ください。

Kubernetes

Kubernetesで実行しているサービスを監視するをご覧ください。

Linux
  1. ファイル名nri-mysqlを使用して、インテグレーションのインストールのための手順に従ってください。

  2. コマンドラインから、 レプリケーション権限付きのユーザーを作成します。

     sudo mysql -e "CREATE USER 'newrelic'@'localhost' IDENTIFIED BY 'YOUR_SELECTED_PASSWORD';"
    sudo mysql -e "GRANT REPLICATION CLIENT ON *.* TO 'newrelic'@'localhost' WITH MAX_USER_CONNECTIONS 5;" 
  3. ディレクトリをインテグレーションのフォルダに変更します。

    cd /etc/newrelic-infra/integrations.d
    
  4. サンプルの設定ファイルのコピー:

    sudo cp mysql-config.yml.sample mysql-config.yml
  5. 次のセクションで説明するように、設定ファイルmysql-config.ymlを編集します。
  6. Infrastructureエージェントを再起動します

追加の注:

設定

インテグレーションのYAML形式設定では、必要なログインクレデンシャルやデータの収集方法を設定できます。どのオプションを変更するかは、設定とプリファレンスにより異なります。

インストールの方法により、インテグレーションの設定方法はいくつかあります。

この設定は、メトリックスとすべての設定オプションを取得する単一のコマンド、statusを提供します。このコマンドは、以下の引数を受け取ります。

  • hostname:MySQLのホスト名。
  • port:MySQLサーバーがリッスンしているポート。
  • username:MySQLサーバーに接続しているユーザー。アクティベーション命令CREATE USERコマンドを使用した場合は、これをnewrelicに設定する必要があります。
  • password:上記で指定されたユーザーのパスワード。
  • extended_metrics拡張された一連のメトリックスをキャプチャします。デフォルトでは無効です。有効化するには、1に設定します。これによりスレーブメトリックスの取得も可能になります。
  • extended_innodb_metrics追加のinnodbのメトリックスをキャプチャします。デフォルトでは無効です。有効化するには、1に設定します。
  • extended_myisam_metrics追加のMyISAMメトリックスをキャプチャします。デフォルトでは無効です。有効化するには、1に設定します。
  • オプション:labelsフィールド。たとえば、envラベルはenvironmentインベントリデータを制御します。デフォルト値はproductionです。
  • オプション:metricsフィールド。インベントリの収集を無効化するには、1に設定します。

遠隔監視を起動する

remote_monitoringパラメーターにより、このインテグレーションの遠隔監視とマルチテナンシーが有効になります。

remote_monitoringを起動すると、一部の属性が変更されるほか、設定アラートに影響が及ぶ可能性があります。詳しくは、オンホストインテグレーションにおける遠隔監視を参照してください。

remote_monitoringを使用するには、Infrastructureエージェントのバージョン1.2.25以降が必要です。

環境変数パススルー

環境変数は構成設定の管理に使用された後、Infrastructureエージェントにパススルーされます。この機能の利用手順に関しては、Infrastructureエージェントを設定するを参照してください。

シークレット管理を使用して、New Relic Infrastructureのエージェントによりオンホストインテグレーションを設定し、インテグレーションの設定ファイルにプレーンテキストで書き込みを行わずに(パスワードのような)機密データを使用できます。詳細については、シークレット管理をご覧ください。

ホスト名

MySQLが起動しているホスト名もしくはIPを指定。

種類 文字列
デフォルト ローカルホスト

例:

HOSTNAME='MySQL DB'
ポート

MySQLサーバーがリッスンしているポート。

種類 整数
デフォルト 3306

例:

PORT=6379
ユーザー名:

MySQLサーバーに接続しているユーザー。

種類 文字列
デフォルト (なし)

例:

USERNAME='DBAdmin'
パスワード

所与のユーザー向けパスワード。

種類 文字列
デフォルト (なし)

例:

PASSWORD='Hh7$(uvRt'
データベース

監視するデータベースの名称。

種類 文字列
デフォルト (なし)

例:

DATABASE='My MySQL DB'
拡張メトリックス

拡張された一連のメトリックスをキャプチャします。これによりスレーブメトリックスの取得も可能になります。

種類 ブール値
デフォルト false

例:

EXTENDED_METRICS=true
EXTENDED_INNODB_METRICS

追加のinnodbのメトリックスをキャプチャします。

種類 ブール値
デフォルト false

例:

EXTENDED_INNODB_METRICS=true
EXTENDED_MY_ISAM_METRICS

追加のMyISAMメトリックスをキャプチャします。

種類 ブール値
デフォルト false

例:

EXTENDED_MY_ISAM_METRICS=true

オンホストインテグレーション設定の一般的な構成の詳細については、設定をご覧ください。

データの検索と使用

このサービスからのデータは、インテグレーションダッシュボードにレポートされます。

メトリックスは、MysqlSampleイベントタイプに関連付けられます。トラブルシューティング目的で、またはカスタムのチャートとダッシュボードを作成するために、このデータのクエリを行えます。

データの検索・使用方法の詳細については、 インテグレーションデータを理解するをご覧ください。

メトリックデータ

MySQLインテグレーションは以下のメトリックスを収集します。

デフォルトでキャプチャされるメトリックス

名前 説明
cluster.slaveRunning ブール値。このサーバーがレプリケーションマスターに接続されたレプリケーションスレーブで、I/OとSQLスレッドの両方が実行している場合は1、そうでない場合は0になります。有効にした場合に報告されるメトリックスについては、 レプリケーションスレーブメトリックスをご覧ください。
db.handlerRollbackPerSecond ストレージエンジンに対しロールバック操作の実行を要求する1秒あたりの回数。
db.innodb.bufferPoolPagesData データが入っているInnoDBバッファープールのページ数。
db.innodb.bufferPoolPagesFree InnoDBバッファプール内のフリーページ数。
db.innodb.bufferPoolPagesTotal InnoDBバッファプールの総ページ数。
db.innodb.dataReadBytesPerSecond InnoDBテーブルからデータが読み込まれる速度(バイト数/秒)。
db.innodb.dataWrittenBytesPerSecond InnoDBテーブルにデータが書き込まれる速度(バイト数/秒)。
db.innodb.logWaitsPerSecond ログバッファーが小さすぎたため、続行前にフラッシュされて待機が必要となった回数(待機回数/秒)。
db.innodb.rowLockCurrentWaits InnoDBテーブルの操作によって現在待機されている行ロック数。
db.innodb.rowLockTimeAvg InnoDBテーブルの行ロックを取得する平均時間(ミリ秒単位)。
db.innodb.rowLockWaitsPerSecond InnoDBテーブルの操作が、行ロックの待機を必要とした回数(秒単位)。
db.openedTablesPerSecond my_open()(mysysライブラリ関数)で開かれたファイル数(秒単位)。この関数を使わずにファイルを開くサーバー部分はカウントしません。
db.openFiles 開いているファイル数。このカウントには、サーバーが開いた通常のファイルが含まれます。ソケットやパイプなどの他のタイプのファイルは含まれません。
db.openTables 開いているテーブル数。
db.qCacheFreeMemoryBytes クエリキャッシュの空きメモリ量。
db.qCacheHitRatio キャッシュから取得されたクエリの割合。
db.qCacheNotCachedPerSecond 1秒あたりのキャッシュされていないクエリの数 (query_cache_type settingによりキャッシュ不可またはキャッシュされていない)。
db.qCacheUtilization 使用されているクエリキャッシュメモリの割合。
db.tablesLocksWaitedPerSecond テーブルロックの要求がすぐに許可されず、待機が必要だった回数(秒単位)。
net.abortedClientsPerSecond クライアントが正しく接続を終了せずに終了したために中止された接続数。
net.abortedConnectsPerSecond MySQLサーバーへの接続に失敗した回数(秒単位)。
net.bytesReceivedPerSecond すべてのクライアントから受信したスループット(秒単位)。
net.bytesSentPerSecond すべてのクライアントに送信されたスループット(秒単位)。
net.connectionErrorsMaxConnectionsPerSecond サーバーのmax_connections制限に達したために接続が拒否されたときの1秒あたりの速度。
net.connectionsPerSecond 1秒当たりの接続試行回数。
net.maxUsedConnections サーバーが起動してから同時に使用された最大接続数。
net.threadsConnected 現在開いている接続数。
net.threadsRunning スリープしていないスレッド数。
query.comDeletePerSecond 1秒あたりに実行されたDELETEステートメントの数。
query.comDeleteMultiPerSecond 1秒あたりに実行された複数テーブルの構文を使用するDELETEステートメントの数。
query.comInsertPerSecond 1秒あたりに実行されたINSERTステートメントの数。
query.comInsertSelectPerSecond 1秒あたりに実行されたINSERT SELECTステートメントの数。
query.comReplaceSelectPerSecond 1秒あたりに実行されたREPLACE SELECTステートメントの数。
query.comSelectPerSecond 1秒あたりに実行されたSELECTステートメントの数。
query.comUpdateMultiPerSecond 1秒あたりに実行された複数テーブルの構文を使用するUPDATEステートメントの数。
query.comUpdatePerSecond 1秒あたりに実行されたUPDATEステートメントの数。
query.preparedStmtCountPerSecond 1秒あたりのプリペアードステートメントの現在の数。(ステートメントの最大数は、システム変数max_prepared_stmt_countによって設定されます)。
query.queriesPerSecond 1秒あたりにサーバーが実行するステートメントの合計数。 ストアドプログラム内で実行されるステートメントを含む。
query.questionsPerSecond 1秒あたりにサーバーが実行するステートメントの数。クライアントが送信したステートメントのみに限る。
query.slowQueriesPerSecond long_query_time秒を超えた1秒あたりのクエリ数。このカウンタは、低速クエリログが有効かどうかにかかわらず増えていきます。

extended_metricsが有効化されている(設定ファイル1に設定されている)場合は、追加のメトリックスが取得されます:

名前 説明
db.createdTmpDiskTablesPerSecond ステートメントの実行中にサーバーによって作成されたディスク上の一時的な内部テーブルの数(秒単位)。
db.createdTmpFilesPerSecond mysqldが作成した一時ファイルの数(秒単位)。
db.createdTmpTablesPerSecond ステートメントの実行中にサーバーが作成した内部一時テーブルの数(秒単位)。
db.handlerDeletePerSecond 表から行が削除された回数(秒単位)。
db.handlerReadFirstPerSecond インデックスの最初のエントリが読み取られた回数(秒単位)。
db.handlerReadKeyPerSecond キーに基づいて行を読み取るリクエスト数(秒単位)。
db.handlerReadRndNextPerSecond データファイルの次の行を読み込むリクエスト数(秒単位)。
db.handlerReadRndPerSecond 固定位置に基づいて行を読み取るリクエスト数(秒単位)。
db.handlerUpdatePerSecond テーブル内の行を更新するリクエスト数(秒単位)。
db.handlerWritePerSecond テーブルに行を挿入するリクエスト数(秒単位)。
db.maxExecutionTimeExceededPerSecond 実行タイムアウトを超えたSELECTステートメントの数(秒単位)。
db.qCacheFreeBlocks クエリキャッシュ内の空きメモリブロックの数。
db.qCacheHitsPerSecond クエリキャッシュヒットの数(秒単位)。
db.qCacheInserts クエリキャッシュに追加されたクエリの数。
db.qCacheLowmemPrunesPerSecond メモリ不足のためにクエリキャッシュから削除されたクエリの数(秒単位)。
db.qCacheQueriesInCachePerSecond クエリキャッシュに登録されたクエリの数(秒単位)。
db.qCacheTotalBlocks クエリキャッシュ内のブロックの合計。
db.selectFullJoinPerSecond インデックスを使用しないために、テーブルスキャンを実行するジョインの数(秒単位)。
db.selectFullJoinRangePerSecond 参照テーブルで範囲検索を使用したジョインの数(秒単位)。
db.selectRangeCheckPerSecond 各行の後にキーの使用状況をチェックするキーのないジョインの数(秒単位)。
db.selectRangePerSecond 最初のテーブルの範囲を使用したジョインの数(秒単位)。
db.sortMergePassesPerSecond 並べ替えアルゴリズムが実行しなければならなかったマージパスの数(秒単位)。
db.sortRangePerSecond 範囲を使って行われた並べ替えの数(秒単位)。
db.sortRowsPerSecond ソートされた行数(秒単位)。
db.sortScanPerSecond テーブルをスキャンして行われた並べ替えの数(秒単位)。
db.tableOpenCacheHitsPerSecond オープンテーブルのキャッシュルックアップのヒット数(秒単位)。
db.tableOpenCacheMissesPerSecond オープンテーブルのキャッシュルックアップのミス数(秒単位)。
db.tableOpenCacheOverflowsPerSecond オープンテーブルのキャッシュのオーバーフロー数(秒単位)。
db.threadCacheMissRate キャッシュに十分なスレッドがないため、新しい接続を処理するために作成する必要があるスレッドの割合。
db.threadsCached スレッドキャッシュ内のスレッド数。
db.threadsCreatedPerSecond 接続処理のために作成されたスレッドの数。

extended_innodb_metricsが有効化されている(設定ファイル1設定されている)場合は、追加のメトリックスが取得されます:

名前 説明
db.innodb.bufferPoolPagesDirty InnoDBバッファプール内の現在のダーティページ数。
db.innodb.bufferPoolPagesFlushedPerSecond InnoDBバッファプールからページをフラッシュするリクエスト数(秒単位)。
db.innodb.bufferPoolReadAheadEvictedPerSecond 先読みバックグラウンドスレッドによってInnoDBバッファプールに読み込まれ、その後、クエリによるアクセスなしに削除されたページ数(秒単位)。
db.innodb.bufferPoolReadAheadPerSecond 先読みバックグラウンドスレッドによってInnoDBバッファプールに読み込まれたページ数(秒単位)。
db.innodb.bufferPoolReadAheadRndPerSecond InnoDBによって開始された「ランダム」先読みの数(秒単位)。これは、クエリがテーブルの大部分をランダムにスキャンする場合に発生します。
db.innodb.bufferPoolReadRequestsPerSecond 論理的な読み取りリクエスト数(秒単位)。
db.innodb.bufferPoolReadsPerSecond InnoDBがバッファプールから満たすことができず、ディスクから直接読み込まなければならなかった論理読み込みの数(秒単位)。
db.innodb.bufferPoolWaitFreePerSecond バッファプール内で使用可能なクリーンページがなかったために、InnoDBへの読み書きが待機しなければならなかった回数(秒単位)。
db.innodb.bufferPoolWriteRequestsPerSecond InnoDBバッファプールへの書き込み回数(秒単位)。
db.innodb.dataFsyncsPerSecond fsync()操作の回数(秒単位)。
db.innodb.dataPendingFsyncs 現在、保留中の fsync() 操作数。
db.innodb.dataPendingReads 現在、保留中の読み取り数。
db.innodb.dataPendingWrites 現在、保留中の書き込み数。
db.innodb.dataReadsPerSecond データ読み取りの回数(OSファイル読み取り)(秒単位)。
db.innodb.dataWritesPerSecond データ書き込み回数(秒単位)。
db.innodb.logWriteRequestsPerSecond InnoDB redoログの書き込みリクエスト数(秒単位)。
db.innodb.logWritesPerSecond InnoDB redoログファイルへの物理的な書き込み回数(秒単位)。
db.innodb.numOpenFiles InnoDBが現在保持しているファイルの数。
db.innodb.osLogFsyncsPerSecond InnoDB redoログファイルに対して行われたfsync()の書き込み回数(秒単位)。
db.innodb.osLogPendingFsyncs InnoDB redoログファイルに対する保留中のfsync()操作の回数。
db.innodb.osLogPendingWrites InnoDB redoログファイルへの保留中の書き込み数(秒単位)。
db.innodb.osLogWrittenBytesPerSecond
rate
InnoDB redoログファイルに書き込まれたバイト数(秒単位)。
db.innodb.pagesCreatedPerSecond InnoDB テーブルの操作によって作成されたページ数(秒単位)。
db.innodb.pagesReadPerSecond InnoDBテーブルの操作によってInnoDBバッファプールから読み込まれたページ数(秒単位)。
db.innodb.pagesWrittenPerSecond InnoDBテーブルの操作によって書き込まれたページ数(秒単位)。
db.innodb.rowsDeletedPerSecond InnoDBテーブルから削除された行数(秒単位)。
db.innodb.rowsInsertedPerSecond InnoDB テーブルに挿入された行数(秒単位)。
db.innodb.rowsReadPerSecond InnoDBテーブルから読み込まれた行数(秒単位)。
db.innodb.rowsUpdatedPerSecond InnoDBテーブルで更新された行数(秒単位)。

extended_myisam_metrics設定ファイルで有効化されている場合は、追加のメトリックスが取得されます:

名前 説明
db.myisam.keyBlocksNotFlushed 変更されたものの、まだディスクにフラッシュされていないMyISAMキーキャッシュ内のキーブロック数。
db.myisam.keyCacheUtilization 使用中のキーキャッシュの割合。
db.myisam.keyReadRequestsPerSecond MyISAMキーキャッシュからのキーブロックの読み取りリクエスト数(秒単位)。
db.myisam.keyReadsPerSecond ディスクからMyISAMキーキャッシュへのキーブロックの物理読み込み回数(秒単位)。
db.myisam.keyWriteRequestsPerSecond MyISAMキーキャッシュにキーブロックを書き込むリクエスト数(秒単位)。
db.myisam.keyWritesPerSecond MyISAMキーキャッシュからディスクへのキーブロックの物理書き込み回数(秒単位)。

設定ファイルで拡張メトリックスフラグが有効化されており、cluster.slaveRunningメトリックス1を返す場合に取得される追加メトリックス:

名前 説明
db.relayLogSpace すべての既存リレーログファイルに対する合計バイト数。
cluster.lastIOErrno I/Oスレッドを停止させた最も最近のエラーのエラー番号。
cluster.lastIOError I/Oスレッドを停止させた最も最近のエラーのエラーメッセージ。
cluster.lastSQLErrno SQLスレッドを停止させた最も最近のエラーのエラー番号。
cluster.lastSQLError SQLスレッドを停止させた最も最近のエラーのエラーメッセージ。
cluster.slaveIORunning ブール値:0または1。I/Oスレッドが開始され、マスターへの接続に成功したかどうかのステータス。
cluster.slaveSQLRunning ブール値:0または1。SQLスレッドが開始されているかどうかのステータス。
cluster.secondsBehindMaster スレーブがマスターのバイナリログに記録されたときの、スレーブのドックタイムとクエリのタイムスタンプの差(秒)。スレーブがマスターに正しく接続されてない場合、このメトリックは報告されません。
cluster.masterLogFile I/Oスレッドが現在読み込んでいるマスターバイナリログファイルの名前。
cluster.readMasterLogPos 現在のマスターバイナリログファイルにおいて、I/Oスレッドがどの位置まで読み込んだか。
cluster.relayMasterLogFile SQLスレッドにより実行された、最も最近のイベントを含むマスターバイナリログファイルの名前。
cluster.execMasterLogPos SQLスレッドが読み込んで実行した現在のマスターバイナリログファイル内の位置であり、処理すべき次のトランザクションまたはイベントの開始点を表す。

インベントリ

MySQLインテグレーションは、SHOW GLOBAL VARIABLESによって返されたMySQLノードの設定パラメーターを取得します。このデータは、Inventoryページconfig/mysqlソースで取得できます。

システムメタデータ

MySQLインテグレーションは、お使いのMySQLシステムについて以下のメタデータ 属性 を収集します。

名前 説明
software.edition

software.editionはMySQLのversion_commentの値を取得します。

software.version MySQLサーバのバージョン。
cluster.nodeType 監視されているMySQLノードの役割に応じてmasterまたはslave

ソースコード

MySQL インテグレーションはオープンソース ソフトウェアです。つまり、ソースコードを参照して改善を送信したり、独自のフォークを作成して構築したりできます。

その他のヘルプ

さらに支援が必要な場合は、これらのサポートと学習リソースを確認してください: