Python アプリケーションから Cloud Logging にログを書き込むには、標準の Python ロギング ハンドラを使用するか、Python 用の Cloud Logging API クライアント ライブラリを直接使用します。標準の Python ロギング ハンドラを使用する場合は、Cloud Logging ハンドラを Python ルートハンドラに接続する必要があります。このドキュメントでは、そのアプローチについて説明します。
始める前に
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Cloud Logging API.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Cloud Logging API.
- Python 開発用に環境を準備します。
ライブラリをインストールする
Python 用 Cloud Logging ライブラリをインストールするには、Python 用のクライアント ライブラリをインストールするをご覧ください。このライブラリによって、標準の Python ルートハンドラに Cloud Logging ハンドラを接続できます。このライブラリを使用して、Cloud Logging に API リクエストを送信することもできます。
インストールの詳細については、Python 用 Cloud Logging ライブラリのドキュメントをご覧ください。公開バグトラッカーを使用して問題を報告することもできます。
標準の Python ロギング ハンドラを使用してログを書き込む
標準の Python ルートハンドラで書き込まれたすべてのログエントリを Cloud Logging に送信するには、次の操作を行います。
setup_logging
メソッドを呼び出して、Cloud Logging ハンドラを Python ルートロガーにアタッチします。ロギング ハンドラを構成する方法については、ロギング標準ライブラリとの統合をご覧ください。
Python ルートロガーを使用してログデータを書き込みます。
デフォルトでは、アプリケーションによって書き込まれた、重大度が
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 ライブラリに直接提供する必要があります。
既存のサービス アカウントの場合は、次の操作を行います。
サービス アカウントに IAM のログ書き込み(
roles/logging.logWriter
) IAM。ロールを付与します。IAM ロールの詳細については、アクセス制御をご覧ください。
サービス アカウントをお持ちでない場合は、サービス アカウントを作成します。このプロセスについては、サービス アカウントの作成をご覧ください。
認証に使用できる方法に関する一般的な情報については、用語: サービス アカウントをご覧ください。
ログを確認する
Google Cloud コンソールで、[ログ エクスプローラ] ページに移動します。
検索バーを使用してこのページを検索する場合は、小見出しが [Logging] である結果を選択します。
ログ エクスプローラでは 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 と構成に依存します。たとえば、アプリケーションでリソースを指定することも、デフォルトのリソースを使用することもできます。
ログ エクスプローラにログが表示されない場合に、すべてのログエントリを表示するには、高度なクエリモードに切り替えて空のクエリを使用します。
- 高度なクエリモードに切り替えるには、ログ エクスプローラの上部にあるメニュー(▾)をクリックし、[高度なフィルタに変換] を選択します。
- フィルタ ボックスに表示されているコンテンツをクリアします。
- [フィルタを送信] をクリックします。
個々のエントリを調べてリソースを特定します。
詳細については、ログ エクスプローラの使用をご覧ください。