Python 用 Cloud Logging の設定

Python アプリケーションから Cloud Logging にログを書き込むには、標準の Python ロギング ハンドラを使用するか、Python 用 Cloud Logging API クライアント ライブラリを直接使用します。標準の Python ロギング ハンドラを使用する場合は、Cloud Logging ハンドラを Python ルートハンドラに接続する必要があります。このドキュメントでは、そのアプローチについて説明します。

始める前に

  1. Google Cloud アカウントにログインします。Google Cloud を初めて使用する場合は、アカウントを作成して、実際のシナリオでの Google プロダクトのパフォーマンスを評価してください。新規のお客様には、ワークロードの実行、テスト、デプロイができる無料クレジット $300 分を差し上げます。
  2. Google Cloud Console の [プロジェクト セレクタ] ページで、Google Cloud プロジェクトを選択または作成します。

    プロジェクト セレクタに移動

  3. Google Cloud プロジェクトで課金が有効になっていることを確認します

  4. Cloud Logging API を有効にします。

    API を有効にする

  5. Google Cloud Console の [プロジェクト セレクタ] ページで、Google Cloud プロジェクトを選択または作成します。

    プロジェクト セレクタに移動

  6. Google Cloud プロジェクトで課金が有効になっていることを確認します

  7. Cloud Logging API を有効にします。

    API を有効にする

  8. Python 開発用に環境を準備します。

    Python 設定ガイドに移動

ライブラリをインストールする

Python 用 Cloud Logging ライブラリをインストールするには、Python 用クライアント ライブラリをインストールするをご覧ください。このライブラリによって、標準の Python ルートハンドラに Cloud Logging ハンドラを接続できます。このライブラリを使用して、API リクエストを Cloud Logging に送信することもできます。

インストールの詳細については、Python 用 Cloud Logging ライブラリのドキュメントをご覧ください。公開バグトラッカーを使用して問題を報告することもできます。

標準の Python ロギング ハンドラでログを書き込む

標準の Python ルートハンドラで書き込まれたすべてのログエントリを Cloud Logging に送信するには、次のようにします。

  1. setup_logging メソッドを呼び出して、Cloud Logging ハンドラを Python ルートロガーに接続します。

    # Imports the Cloud Logging client library
    import google.cloud.logging
    
    # Instantiates a client
    client = google.cloud.logging.Client()
    
    # Retrieves a Cloud Logging handler based on the environment
    # you're running in and integrates the handler with the
    # Python logging module. By default this captures all logs
    # at INFO level and higher
    client.setup_logging()

    ロギング ハンドラを構成する方法については、ロギング標準ライブラリとの統合をご覧ください。

  2. Python ルートロガーを使用してログデータを書き込みます。

    # Imports Python standard library logging
    import logging
    
    # The data to log
    text = "Hello, world!"
    
    # Emits the data using the standard logging module
    logging.warning(text)

    デフォルトでは、アプリケーションによって書き込まれた、重大度が INFO 以上のあらゆるログは、Cloud Logging に送信されます。

    App Engine または Google Kubernetes Engine から Logging にメッセージを記録している場合、ハンドラがこれらを、環境で対応するリソースタイプに送信します。それ以外の場合、ログは Global リソースタイプの python ログの下に一覧表示されます。

Cloud Logging クライアント ライブラリを使用してログを書き込む

Python 用 Cloud Logging クライアント ライブラリを直接使用する方法については、Cloud Logging クライアント ライブラリをご覧ください。

Google Cloud での実行

Python 用 Cloud Logging ライブラリを使用してログを書き込むアプリでは、基盤となるリソースのサービス アカウントにログ書き込み(roles/logging.logWriter IAMのロールが必要です。ほとんどの Google Cloud 環境では、このロールを持つようにデフォルトのサービス アカウントが自動的に構成されます。

App Engine

App Engine では Cloud Logging が自動的に有効になり、アプリのデフォルトのサービス アカウントにログエントリを書き込む IAM 権限がデフォルトで付与されます。

詳細については、ログの書き込みと表示をご覧ください。

Google Kubernetes Engine(GKE)

GKE は、デフォルトのサービス アカウントにログ書き込み(roles/logging.logWriter IAM ロールを自動的に付与します。このデフォルトのサービス アカウントで Workload Identity を使用して、ワークロードが特定の Google Cloud API にアクセスできるようにする場合、追加の構成は必要ありません。ただし、カスタム IAM サービス アカウントで Workload Identity を使用する場合は、カスタム サービス アカウントにログ書き込みロール(roles/logging.logWriter)があることを確認してください。

必要に応じて、クラスタの作成時に次のコマンドを使用して logging.write アクセス スコープを追加することもできます。

gcloud container clusters create example-cluster-name \
    --scopes https://www.googleapis.com/auth/logging.write

Compute Engine

Compute Engine VM インスタンスを使用する場合は、各インスタンスに cloud-platform アクセス スコープを追加します。Google Cloud Console から新しいインスタンスを作成する場合は、[インスタンスの作成] パネルの [ID と API へのアクセス] のセクションで作成します。Compute Engine のデフォルト サービス アカウントまたは別のサービス アカウントを使用し、[ID と API へのアクセス] セクションの [すべての Cloud API に完全アクセス権を許可] を選択します。どのサービス アカウントを選択する場合でも、Google Cloud コンソールの [IAM と管理] でログ書き込みロールが付与されていることを確認してください。

ローカルやその他の場所で実行する

自分のワークステーション、データセンターのコンピュータ、別のクラウド プロバイダの VM インスタンスでライブラリを実行するなど、Google Cloud の外部で Python 用 Cloud Logging ライブラリを使用するには、Google Cloud プロジェクト ID と適切なサービス アカウント認証情報を Python 用 Cloud Logging ライブラリに直接提供する必要があります。

既存のサービス アカウントの場合は、次の操作を行います。

  1. サービス アカウントに IAM のログ書き込み(roles/logging.logWriter IAM。ロールを付与します。IAM ロールの詳細については、アクセス制御をご覧ください。

  2. アプリケーションのデフォルト認証情報を設定します

サービス アカウントをお持ちでない場合は、サービス アカウントを作成します。このプロセスについては、サービス アカウントの作成をご覧ください。

認証に使用できる方法に関する一般的な情報については、用語: サービス アカウントをご覧ください。

ログを閲覧する

Google Cloud コンソールのナビゲーション パネルで、[ロギング] を選択してから、[ログ エクスプローラ] を選択します。

[ログ エクスプローラ] に移動

ログ エクスプローラでは 1 つ以上のリソースを指定する必要がありますが、リソースの選択が明確でない場合があります。その場合は、次のヒントを参考にしてください。

  • アプリケーションを App Engine にデプロイしている場合や、App Engine 固有のライブラリを使用している場合は、リソースを GAE アプリケーションに設定します。

  • アプリケーションを Compute Engine にデプロイしている場合は、リソースを GCE VM インスタンスに設定します。

  • アプリケーションを Google Kubernetes Engine にデプロイしている場合は、クラスタのロギング構成に応じてログエントリのリソースタイプが異なります。レガシー Google Cloud Observability と Google Cloud Observability Kubernetes Monitoring ソリューションに関する詳細な論議、およびどのようにこれらのオプションがリソースタイプに影響を与えるかについては、Google Cloud Observability Kubernetes Monitoring をご覧ください。

  • アプリケーションが Cloud Logging API を直接使用している場合、リソースは API と構成に依存します。たとえば、アプリケーションでリソースを指定することも、デフォルトのリソースを使用することもできます。

  • ログ エクスプローラにログが表示されない場合に、すべてのログエントリを表示するには、高度なクエリモードに切り替えて空のクエリを使用します。

    1. 高度なクエリモードに切り替えるには、ログ エクスプローラの上部にあるメニュー(▾)をクリックし、[高度なフィルタに変換] を選択します。
    2. フィルタ ボックスに表示されているコンテンツをクリアします。
    3. [フィルタを送信] をクリックします。

    個々のエントリを調べてリソースを特定します。

詳細については、ログ エクスプローラの使用をご覧ください。