Cloud SQL のロギング

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

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

ログの表示

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

Console

  1. Google Cloud Console で、[Cloud Logging] ページに移動します。

    Cloud Logging に移動

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

gcloud

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

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

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

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

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

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

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

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

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

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

アプリケーション ログの表示

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

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

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

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

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

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

Cloud Run

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

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

トラブルシューティング

問題 トラブルシューティング
ロギングで Cloud SQL インスタンスの CPU とメモリが大量に使用されている。 ロギングを調整する必要があります。

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

監査ログが見つからない。 オペレーションが、ユーザー作成データを作成、変更、または読み取る認証済みのユーザー ドリブン API 呼び出しの場合、またはリソースの構成ファイルまたはメタデータにアクセスした場合にのみ、データアクセス ログに書き込まれます。
ログにオペレーション情報が見つからない。 オペレーションの詳細を確認したい場合があります。

たとえば、ユーザーが削除され、誰がその操作を行ったのかを確認できない場合があります。ログでは、オペレーションが開始したことは確認できますが、それ以上の情報は記録されません。このような詳細な個人情報(PII)を記録するには、監査ログを有効にする必要があります。

一部のログは、Cloud SQL for SQL Server インスタンスの error.log ログからフィルタリングされます。 フィルタリングされたログには、タイムスタンプのない AD ログが含まれます。また、Login failed for user 'x'. Reason: Token-based server access validation failed with an infrastructure error. Login lacks connect endpoint permission. [CLIENT: 127.0.0.1] も含まれます。これらのログは、混乱を招く可能性があるため、フィルタリングされています。
ログファイルが読みにくい。 ログを 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 text \
--project=PROJECT_ID \
--freshness="1d"| jq -rnc --stream 'fromstream(1|truncate_stream(inputs)) \
| .textPayload' \
> downloaded-log.txt