MariaDB

MariaDB 統合では、InnoDB、バッファプール、その他のさまざまなオペレーションに関連するパフォーマンス指標を収集します。また、一般ログ、エラーログ、スロークエリ ログを収集して解析し、JSON ペイロードを生成します。エラーログは、エラーコードとサブシステムに対して解析されます。スロークエリ ログを解析して、クエリ時間や検査された行など、クエリのパフォーマンスを表す Key-Value ペアを生成します。

MariaDB の詳細については、mariadb.org をご覧ください。

前提条件

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

このレシーバは、MariaDB バージョン 10.1.X~10.7.X をサポートしています。

MariaDB インスタンスを構成する

MariaDB は、コミュニティによって開発された、MySQL リレーショナル データベース管理システム(RDBMS)の商用サポートされているフォークです。MariaDB のログと指標を収集するには、mysql レシーバを使用します。

mysql レシーバは、root ユーザーとして Unix ソケットと Unix 認証を使用し、デフォルトでローカルの MariaDB サーバーに接続します。

MariaDB 用に Ops エージェントを構成する

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

構成の例

次のコマンドは、MariaDB のログと指標を収集して取り込み、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
metrics:
  receivers:
    mysql:
      type: mysql
  service:
    pipelines:
      mysql:
        receivers:
          - mysql
EOF
sudo service google-cloud-ops-agent restart

TCP 接続でユーザー名とパスワードを使用して MariaDB インスタンスに接続するには、指標レシーバでユーザー名とパスワードを指定します。次に例を示します。

metrics:
  receivers:
    mysql:
      type: mysql
      endpoint: localhost:3306
      password: pwd
      username: usr
  service:
    pipelines:
      mysql:
        receivers:
          - mysql

ログの収集を構成する

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

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 の照合で除外するファイルシステム パスのパターンのリスト。
record_log_file_path false true に設定すると、ログレコードの取得元のファイルのパスが agent.googleapis.com/log_file_path ラベルの値として出力ログエントリに表示されます。ワイルドカードを使用する場合、レコードを取得したファイルのパスのみが記録されます。
wildcard_refresh_interval 60s include_paths のワイルドカード ファイルのパスの更新間隔。時間を指定します(例: 30s2m)。このプロパティは、ログファイルのローテーションがデフォルトの間隔よりも速く、ロギングのスループットが高い場合に有用です。


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

フィールド デフォルト 説明
type 値は、mysql_general にする必要があります。
include_paths [/var/lib/mysql/${HOSTNAME}.log] 読み込むログファイル。
exclude_paths [] include_paths の照合で除外するファイルシステム パスのパターンのリスト。
record_log_file_path false true に設定すると、ログレコードの取得元のファイルのパスが agent.googleapis.com/log_file_path ラベルの値として出力ログエントリに表示されます。ワイルドカードを使用する場合、レコードを取得したファイルのパスのみが記録されます。
wildcard_refresh_interval 60s include_paths のワイルドカード ファイルのパスの更新間隔。時間を指定します(例: 30s2m)。このプロパティは、ログファイルのローテーションがデフォルトの間隔よりも速く、ロギングのスループットが高い場合に有用です。


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

フィールド デフォルト 説明
type 値は、mysql_slow にする必要があります。
include_paths [/var/lib/mysql/${HOSTNAME}-slow.log] 読み込むログファイル。
exclude_paths [] include_paths の照合で除外するファイルシステム パスのパターンのリスト。
record_log_file_path false true に設定すると、ログレコードの取得元のファイルのパスが agent.googleapis.com/log_file_path ラベルの値として出力ログエントリに表示されます。ワイルドカードを使用する場合、レコードを取得したファイルのパスのみが記録されます。
wildcard_refresh_interval 60s include_paths のワイルドカード ファイルのパスの更新間隔。時間を指定します(例: 30s2m)。このプロパティは、ログファイルのローテーションがデフォルトの間隔よりも速く、ロギングのスループットが高い場合に有用です。

ログの内容

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

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

フィールド タイプ 説明
jsonPayload.level 文字列 ログエントリ レベル
jsonPayload.tid 数値 ログの生成元のスレッド ID
jsonPayload.errorCode 文字列 ログに関連付けられた MariaDB エラーコード
jsonPayload.subsystem 文字列 ログが発生した MariaDB サブシステム
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 のドキュメントをご覧ください。

指標の収集を構成する

MariaDB から指標を収集するには、MariaDB 指標を表示するレシーバを作成し、新しいレシーバ用のパイプラインを作成する必要があります。MariaDB 指標のレシーバを構成するには、次のフィールドを指定します。

フィールド デフォルト 説明
type 値は mysql を指定してください。
endpoint localhost:3306 MariaDB によって公開される URL。
collection_interval 60s time.Duration 値(例: 30s5m)。
username root サーバーへの接続に使用するユーザー名。
password サーバーへの接続に使用するパスワード。

モニタリング対象

次の表に、Ops エージェントが MariaDB インスタンスから収集する指標の一覧を示します。

指標タイプ
種類、タイプ
モニタリング対象リソース
ラベル
workload.googleapis.com/mysql.buffer_pool_operations
CUMULATIVEINT64
gce_instance
operation
workload.googleapis.com/mysql.buffer_pool_pages
GAUGEDOUBLE
gce_instance
kind
workload.googleapis.com/mysql.buffer_pool_size
GAUGEDOUBLE
gce_instance
kind
workload.googleapis.com/mysql.commands
CUMULATIVEINT64
gce_instance
command
workload.googleapis.com/mysql.double_writes
CUMULATIVEINT64
gce_instance
kind
workload.googleapis.com/mysql.handlers
CUMULATIVEINT64
gce_instance
kind
workload.googleapis.com/mysql.locks
CUMULATIVEINT64
gce_instance
kind
workload.googleapis.com/mysql.log_operations
CUMULATIVEINT64
gce_instance
operation
workload.googleapis.com/mysql.operations
CUMULATIVEINT64
gce_instance
operation
workload.googleapis.com/mysql.page_operations
CUMULATIVEINT64
gce_instance
operation
workload.googleapis.com/mysql.row_locks
CUMULATIVEINT64
gce_instance
kind
workload.googleapis.com/mysql.row_operations
CUMULATIVEINT64
gce_instance
operation
workload.googleapis.com/mysql.sorts
CUMULATIVEINT64
gce_instance
kind
workload.googleapis.com/mysql.threads
GAUGEDOUBLE
gce_instance
kind

構成を確認する

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

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

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")


指標が取り込まれていることを確認するには、Metrics Explorer に移動し、[MQL] タブで次のクエリを実行します。

fetch gce_instance
| metric 'workload.googleapis.com/mysql.commands'
| align rate(1m)
| every 1m

次のステップ

Ansible を使用して Ops エージェントをインストールし、サードパーティ アプリケーションを構成してサンプル ダッシュボードをインストールする方法については、Ops エージェントをインストールして、サードパーティ アプリケーションのトラブルシューティングを行うの動画をご覧ください。