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

トラブルシューティング

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

この問題については... 次のような問題が考えられます... 次のことを試します...
ロギングで大量の CPU とメモリを使用している。 ロギングを調整する必要があります。 ロギング リソースの使用量を調整してみてください。
監査ログが見つからない。 ユーザー認証。 ユーザーロールと権限を確認します
ログにオペレーション情報が見つからない。 監査ログは有効になっていません。 監査ロギングを有効にします
ログファイルが読みにくい。 ログを json またはテキストで表示しています。 gcloud logging コマンドを使用します

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

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

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

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

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

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


監査ロギング

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

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

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

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

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


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

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

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

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

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

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


ログファイルが読みにくい

Logs Explorer でログを読み取れません。

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

ログが JSON 形式またはテキスト形式でローカルにダウンロードされています。

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

ログは、Linux 後処理コマンドとともに gcloud logging read コマンドを使用してダウンロードできます。

JSON でダウンロードするには:

gcloud logging read "resource.type=cloudsql_database AND logName=projects/PROJECT-ID/logs/cloudsql.googleapis.com%2FLOGFILE-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%2FLOGFILE-NAME" --format json --project=PROJECT-ID--freshness="1d"| jq -rnc --stream 'fromstream(1|truncate_stream(inputs)) | .textPayload' > downloaded-log.txt