Cloud SQL のロギング

このページでは、Cloud Logging を取得して使用し、Cloud SQL インスタンスのログを表示してクエリを実行する方法について説明します。

Cloud SQL は Cloud Logging を使用します。詳細については、Cloud logging のドキュメントをご覧ください。また、Cloud SQL のサンプルクエリもご覧ください。

ログの表示

Cloud SQL インスタンスのログエントリのログを表示するには:

Console

  1. ログビューアに移動
  2. ページの上部で既存の Cloud SQL プロジェクトを選択します。
  3. クエリビルダーに以下のクエリを追加します。
    • リソース: [Cloud SQL データベース] を選択します。ダイアログで、Cloud SQL インスタンスを選択します。
    • ログ名: Cloud SQL セクションまでスクロールし、インスタンスに適したログファイルを選択します。例:
      • cloudsql.googlapis.com/mysql-general.log
      • cloudsql.googleapis.com/mysql.err
    • 重大度: ログレベルを選択します。
    • 時間範囲: プリセットを選択するか、カスタム範囲を作成します。

gcloud

gcloud logging コマンドを使用して、ログエントリを表示します。次の例では、PROJECT_ID を置き換えます。 limit フラグは、返されるエントリの最大数を示すオプションのパラメータです。

gcloud logging read "projects/[PROJECT_ID]/logs/cloudsql.googleapis.com/mysql-general.log" --limit=10

トラブルシューティング

テーブル内のリンクをクリックすると、詳細が表示されます。

この問題については... 次のような問題が考えられます... 次のことを試します...
ロギングで大量の CPU とメモリを使用している。 ロギングを調整する必要があります。 ロギング リソースの使用量を調整してみてください。
監査ログが見つからない。 ユーザー認証。 ユーザーロールと権限を確認します
ログにオペレーション情報が見つからない。 監査ログは有効になっていません。 監査ロギングを有効にします
ロギングで大量のディスク容量を使用している。 REDO ログ、バイナリログ、一般ログがディスク容量を使用しています。 これらのコマンドを実行して、ディスク使用量の詳細を取得します。

ロギングで大量の CPU とメモリを使用している

ロギングで大量の CPU とメモリを使用しています。

次のような問題が考えられます

ロギングの使用量を調整する必要があります。

次の方法をお試しください

log_statement フラグを「なし」、logging_collector フラグを「オフ」に設定できます。ロギングがまだ行われている場合は、他のログ関連のフラグを調整できます。インスタンスを編集して、これらのフラグを変更できます。


監査ロギング

Cloud SQL の監査ロギングを有効にしたが、Cloud Logging で監査ログが見つからない

次のような問題が考えられます

オペレーションが、ユーザー作成データを作成、変更、または読み取る認証済みのユーザー ドリブン API 呼び出しの場合、またはリソースの構成ファイルまたはメタデータにアクセスした場合にのみ、データアクセス ログに書き込まれます。

次の方法をお試しください

オペレーションを実行するユーザーのロールと権限を確認します。


オペレーションの情報がログに見つからない

オペレーションの詳細を確認する場合。たとえば、ユーザーが削除されたものの、誰が行ったかを確認できない場合。ログには開始されたオペレーションが表示されますが、それ以上の情報は提供されません。

次のような問題が考えられます

このような詳細な個人情報(PII)を記録するには、監査ロギングを有効にする必要があります。

次の方法をお試しください

プロジェクトで監査ロギングを有効にします。


ロギングで大量のディスク容量を使用している

ログファイルが使用しているディスク容量を確認する必要があります。

次のような問題が考えられます

ディスク容量を使用するログファイルには、REDO ログ、一般ログ、バイナリログの 3 種類があります。

次の方法をお試しください。

各タイプのログファイルの詳細については、次のコマンドを実行します。

SHOW VARIABLES LIKE 'innodb_log_file%';

SELECT ROUND(SUM(LENGTH(argument)/POW(1024,2),2) AS GB from mysql.general_log;

SHOW BINARY LOGS;