MySQL

MySQL は、多くのデータベースにマルチユーザー アクセスを提供するサーバーとして動作する、リレーショナル データベース管理システムです。詳細については、mysql.com をご覧ください。

前提条件

MySQL テレメトリーを収集するには、バージョン 2.5.0 以降の Ops エージェントをインストールする必要があります。

MySQL 用の Ops エージェントを構成する

Ops エージェントの構成のガイドに従って、MySQL インスタンスから指標を収集するために必要な要素を追加して、エージェントを再起動します。

構成の例

次のコマンドは、MySQL のログを収集して取り込み、Linux で Ops エージェントを再起動するための構成ファイルを作成します。

sudo tee /etc/google-cloud-ops-agent/config.yaml > /dev/null << EOF
logging:
  receivers:
    mysql_error:
      type: mysql_error
    mysql_general:
      type: mysql_general
    mysql_slow:
      type: mysql_slow
  service:
    pipelines:
      mysql:
        receivers:
          - mysql_error
          - mysql_general
          - mysql_slow
EOF
sudo service google-cloud-ops-agent restart

ログの収集を構成する

MySQL からログを取り込むには、MySQL が生成するログのレシーバを作成し、新しいレシーバのパイプラインを作成する必要があります。

mysql_error ログのレシーバを構成するには、次のフィールドを指定します。

項目 デフォルト 説明
type 値は、mysql_error にする必要があります。
include_paths [/var/log/mysqld.log, /var/log/mysql/mysqld.log, /var/log/mysql/error.log] 各ファイルのテーリングで読み込むファイルシステムのパスのリスト。パスには、/var/log/mysql/*.log のように、ワイルドカード(*)を使用できます。
exclude_paths [] include_paths の照合で除外するファイルシステムのパスパターンのリスト。


mysql_general ログのレシーバを構成するには、次のフィールドを指定します。

項目 デフォルト 説明
type 値は mysql_general にする必要があります。
include_paths [/var/lib/mysql/${HOSTNAME}.log] 読み込むログファイル。
exclude_paths [] include_paths の照合で除外するファイルシステムのパスパターンのリスト。


mysql_slow ログのレシーバを構成するには、次のフィールドを指定します。

項目 デフォルト 説明
type 値は mysql_slow にする必要があります。
include_paths [/var/lib/mysql/${HOSTNAME}-slow.log] 読み込むログファイル。
exclude_paths [] include_paths の照合で除外するファイルシステム パスのパターンのリスト。

ログの内容

mysql_error ログ、mysql_general ログ、mysql_slow ログの logName は、構成で指定されたレシーバ ID から取得されます。

MySQL のバージョンによっては、mysql_error ログの LogEntry 内に次のフィールドが含まれる場合があります。

項目 タイプ 説明
jsonPayload.level 文字列 ログエントリ レベル
jsonPayload.tid 数値 ログが発生したスレッド ID
jsonPayload.errorCode 文字列 ログに関連付けられた MySQL エラーコード
jsonPayload.subsystem 文字列 ログが発生した MySQL サブシステム
jsonPayload.message 文字列 ログメッセージ
severity 文字列(LogSeverity ログエントリ レベル(翻訳済み)
timestamp 文字列(Timestamp リクエストを受信した時刻

空白または欠落しているフィールドはログエントリに記録されません。


mysql_general ログでは、LogEntry に次のフィールドが含まれます。

項目 タイプ 説明
jsonPayload.tid 数値 ログが発生したスレッド ID
jsonPayload.command 文字列 ログに記録されるデータベース アクションのタイプ
jsonPayload.message 文字列 データベース アクションのログ
timestamp 文字列(Timestamp エントリがログに記録された時刻


mysql_slow ログでは、LogEntry に次のフィールドが含まれます。

項目 タイプ 説明
jsonPayload.user 文字列 クエリを実行したユーザー
jsonPayload.database 文字列 クエリが実行されたデータベース
jsonPayload.host 文字列 データベース インスタンスのホスト
jsonPayload.ipAddress 文字列 データベース インスタンスのアドレス
jsonPayload.tid 数値 クエリがログに記録されたスレッド ID
jsonPayload.queryTime 数値 ステートメントの実行時間(秒)
jsonPayload.lockTime 数値 ロックを取得する時間(秒)
jsonPayload.rowsSent 数値 クライアントに送信された行数
jsonPayload.rowsExamined 数値 サーバーレイヤによって調査された行数
jsonPayload.errorNumber 数値 ステートメントのエラー番号、またはエラーが発生していない場合は 0
jsonPayload.killed 数値 ステートメントが終了した場合は、理由を示すエラー番号。またはステートメントが正常に終了した場合は 0
jsonPayload.bytesReceived 数値 すべてのクライアントから受信したバイト数
jsonPayload.bytesSent 数値 すべてのクライアントに送信されたバイト数
jsonPayload.readFirst 数値 インデックス内の最初のエントリが読み取られた回数
jsonPayload.readLast 数値 インデックスの最後のキーを読み取るリクエストの数
jsonPayload.readKey 数値 キーに基づいて行を読み取るリクエストの数
jsonPayload.readNext 数値 キー順で次の行を読み取るリクエストの数
jsonPayload.readPrev 数値 キー順で前の行を読み取るリクエストの数
jsonPayload.readRnd 数値 固定位置に基づく行の読み取りリクエストの数
jsonPayload.readRndNext 数値 データファイルの次の行を読み取るリクエストの数
jsonPayload.sortMergePasses 数値 並べ替えアルゴリズムで行う必要があったマージパスの数
jsonPayload.sortRangeCount 数値 範囲を使用して行われた並べ替えの数
jsonPayload.sortRows 数値 並べ替えた行数
jsonPayload.sortScanCount 数値 テーブルをスキャンして行われた並べ替えの数
jsonPayload.createdTmpDiskTables 数値 サーバーによって作成された、ディスク上の内部一時テーブルの数
jsonPayload.createdTmpTables 数値 サーバーによって作成された内部一時テーブルの数
jsonPayload.startTime 文字列 ステートメント実行の開始時間
jsonPayload.endTime 文字列 ステートメント実行の終了時間
jsonPayload.message 文字列 クエリの全文
timestamp 文字列(Timestamp エントリがログに記録された時刻

  これらのフィールドは、log_slow_extra システム変数が 'ON' に設定されている場合にのみ提供されます。この変数は MySQL 8.0.14 以降で使用できます。

これらのフィールドの詳細については、MySQL のドキュメントをご覧ください。

構成を確認する

ログ エクスプローラを使用して、MySQL レシーバーが正しく構成されていることを確認できます。Ops エージェントがログの収集を開始するまでに 1~2 分を要する場合があります。

ログが取り込まれていることを確認するには、ログ エクスプローラに移動し、次のクエリを実行して MySQL のログを表示します。

resource.type="gce_instance"
logName=("projects/PROJECT_ID/logs/mysql_error" OR "projects/PROJECT_ID/logs/mysql_general" OR "projects/PROJECT_ID/logs/mysql_slow")