Python 用 Stackdriver Logging の設定

Python アプリケーションから Stackdriver Logging にログを書き込むには、Stackdriver Logging クライアント ライブラリに含まれる Python ロギング ハンドラを使用するか、クライアント ライブラリを使用して API に直接アクセスします。

始める前に

  1. Google アカウントにログインします。

    Google アカウントをまだお持ちでない場合は、新しいアカウントを登録します。

  2. GCP Console のプロジェクト セレクタのページで、GCP プロジェクトを選択または作成します。

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

  3. Google Cloud Platform プロジェクトに対して課金が有効になっていることを確認します。 プロジェクトに対して課金が有効になっていることを確認する方法を学習する

  4. Stackdriver Logging API必要な を有効にします。

    を有効にする

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

    Python 設定ガイドに移動

ライブラリのインストール

Python 用 Stackdriver Logging クライアント ライブラリをインストールするには、クライアント ライブラリのインストールをご覧ください。

このライブラリには、Python の標準ロギング モジュールを Stackdriver に接続するロギング ハンドラが含まれています。また、Stackdriver Logging に手動でアクセスするための API クライアント ライブラリも含まれています。

ライブラリを Python ロギングに接続する

Stackdriver Logging ハンドラを Python ルートロガーに接続して、Stackdriver にすべてのログエントリを送信するには、setup_logging ヘルパー メソッドを使用します。

# Imports the Google Cloud client library
import google.cloud.logging

# Instantiates a client
client = google.cloud.logging.Client()

# Connects the logger to the root logging handler; by default this captures
# all logs at INFO level and higher
client.setup_logging()

Python ルートロガーの使用

ハンドラに接続すると、デフォルトでは、アプリケーションで出力された INFO レベル以上のログが Stackdriver Logging に送信されます。

# Imports Python standard library logging
import logging

# The data to log
text = 'Hello, world!'

# Emits the data using the standard logging module
logging.warn(text)

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

ロギング ハンドラの構成

Stackdriver Logging ハンドラを接続して Python ロガーのみを選択したり、ロギング ハンドラを構成したりするには、API ライブラリのドキュメントをご覧ください。

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

Cloud クライアント ライブラリを直接使用する

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

Google Cloud Platform での実行

Python 用 Stackdriver Logging ライブラリを使用するには、GCP で Cloud IAM ログ書き込み役割が必要です。ほとんどの GCP 環境で、この役割はデフォルトで付与されています。

App Engine

App Engine では、デフォルトでログ書き込み役割が付与されます。

Python 用 Stackdriver Logging ライブラリは、明示的に認証情報を提示しなくても使用できます。

App Engine のアプリケーションでは、Stackdriver Logging が自動的に有効になります。特別な設定は必要ありません。

Google Kubernetes Engine

Google Kubernetes Engine では、クラスタの作成時に 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 Platform Console で新しいインスタンスを作成する場合は、[インスタンスの作成] パネルの [ID と API へのアクセス] セクションで行うことができます。Compute Engine のデフォルト サービス アカウントまたは別のサービス アカウントを使用し、[ID と API へのアクセス] セクションの [すべての Cloud API に完全アクセス権を許可] を選択します。どのサービス アカウントを選択する場合でも、GCP Console の [IAM と管理] でログ書き込み役割が付与されていることを確認してください。

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

GCP の外部で Python 用 Stackdriver Logging ライブラリを使用するには、GCP プロジェクト ID と該当するサービス アカウント認証情報を Python 用 Stackdriver Logging ライブラリに直接指定する必要があります。これは、個人用のワークステーション、データセンターのコンピュータ、他のクラウド プロバイダの VM インスタンスにおけるエージェントの実行に適用されます。詳細については、サービス アカウントの認証情報を手動で取得して指定するをご覧ください。

ログの表示

デプロイ後、GCP Console のログビューアでログを表示できます。

ログビューアに移動

ログビューアでは 1 つ以上のリソースを指定する必要がありますが、どのリソースを選択すべきかを判断するのが難しい場合もあります。その場合は、次のヒントを参考にしてください。

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

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

  • アプリケーションを Google Kubernetes Engine にデプロイしている場合は、クラスタのロギング構成に応じてログエントリのリソースタイプが異なります。従来の Stackdriver と Stackdriver Kubernetes Monitoring ソリューションの詳細とこれらのオプションがリソースタイプに与える影響については、Stackdriver Kubernetes Monitoring への移行をご覧ください。

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

  • ログビューアにログが表示されていない場合、すべてのログエントリを表示するには、高度なフィルタモードに切り替えて空のフィルタを使用します。

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

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

詳細については、ログの表示高度なログフィルタをご覧ください。