インスタンスのログを表示する

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

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

ログを表示する

エンドユーザーによって直接実行される SQL クエリなど、データベース インスタンスで実行された SQL クエリは、general_log フラグを有効にしてlog_output フラグを FILE に設定することで、一般的なログファイルで表示できます。

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

コンソール

  1. Google Cloud コンソールで、[Cloud Logging] ページに移動します。

    Cloud Logging に移動

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

gcloud

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

gcloud logging read "resource.type=cloudsql_database" \
--project=PROJECT-ID \
--limit=10 \
--format=json

インスタンスのオペレーション ログを表示する

[オペレーション] パネルではインスタンスのログを見ることができます。[オペレーション] パネルには、インスタンスで実行されたすべてのオペレーションについてログに記録された、次の情報が表示されます。

  • オペレーションの完了時刻(ローカル タイムゾーンで表されます)。
  • オペレーションのタイプ。
  • オペレーションのステータス。
  • オペレーションの結果を説明するメッセージ。

オペレーションが失敗した場合は、メッセージを使用して問題をトラブルシューティングできます。

インスタンスのオペレーション ログを表示するには:

  1. Google Cloud コンソールで Cloud SQL の [インスタンス] ページに移動します。

    Cloud SQL の [インスタンス] に移動

  2. インスタンスの [概要] ページを開くには、インスタンス名をクリックします。
  3. [オペレーション] をクリックして、オペレーション ログの表示パネルに切り替えます。
注: オペレーション ログには、MySQL クライアントなどの外部管理ツールを使用して実行されたオペレーションは含まれません。Google Cloud Console、gcloud コマンドライン ツール、または Cloud SQL Admin API を使用して実行されたユーザー管理およびパスワード変更操作のみがオペレーション ログに表示されます。

アプリケーション ログを表示する

Cloud SQL に接続するアプリケーションは、ログをさまざまな場所に保存します。

App Engine(フレキシブル環境)

[コンピューティング] > [App Engine] > [サービス] で、次の操作を行います。

  • サービスのリストでサービスを探します。
  • [ツール] プルダウンをクリックします。
  • [ログ] を選択します。

Google Cloud コンソールの [オペレーション] > [ロギング] > [ログ エクスプローラ] セクションで、次のクエリを使用します。

resource.type="gae_app"
resource.labels.module_id="default"

Cloud Run

Google Cloud コンソールの Cloud Run の [ログ エクスプローラ] セクションでログを表示します。Cloud Run は、Cloud SQL Auth Proxy からのエラー メッセージのみを報告します。次のようなクエリを使用します。

resource.type="cloud_run_revision"
resource.labels.service_name="$SERVICE_NAME"
resource.labels.revision_name="$REVISION_NAME"

Cloud SQL Auth Proxy

[オペレーション] > [ロギング] > [ログ エクスプローラ] で、次のクエリを使用します。

log_id("appengine.googleapis.com/cloud-sql-proxy")

トラブルシューティング

問題 トラブルシューティング
監査ログが見つからない。 オペレーションが、ユーザー作成データを作成、変更、または読み取る認証済みのユーザー ドリブン 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;
    
ログファイルが読みにくい。 ログを json またはテキストで表示することもできます。gcloud logging read コマンドを Linux の後処理コマンドと一緒に使用して、ログをダウンロードできます。

ログを JSON 形式でダウンロードするには:


gcloud logging read \
"resource.type=cloudsql_database \
AND logName=projects/PROJECT_ID \
/logs/cloudsql.googleapis.com%2FLOG_NAME" \
--format json \
--project=PROJECT_ID \
--freshness="1d" \
> downloaded-log.json
    

ログをテキスト形式でダウンロードするには:


gcloud logging read \
"resource.type=cloudsql_database \
AND logName=projects/PROJECT_ID \
/logs/cloudsql.googleapis.com%2FLOG_NAME" \
--format json \
--project=PROJECT_ID \
--freshness="1d"| jq -rnc --stream 'fromstream(1|truncate_stream(inputs)) \
| .textPayload' \
--order=asc
> downloaded-log.txt