PHP 用 Stackdriver Logging の設定

PHP アプリケーションから Stackdriver Logging にログを書き込むには、PHP 用 Stackdriver Logging ライブラリを直接使用します。

始める前に

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

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

  2. GCP プロジェクトを選択または作成します。

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

  3. Google Cloud Platform プロジェクトに対して課金が有効になっていることを確認します。 詳しくは、課金を有効にする方法をご覧ください。

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

    APIを有効にする

PHP 用 Stackdriver Logging ライブラリのインストール

PHP 用 Stackdriver Logging ライブラリは、PHP ウェブ フレームワーク用のシンプルな PSR-3 ロガー実装を提供します。

アプリケーションからログを書き込むには、PHP 用 Stackdriver Logging ライブラリを composer.json に追加します。

composer require google/cloud-logging

PSR-3 ロガーの作成

PSR-3 ロガーを作成するには、次のコードを使用します。

$logging = new LoggingClient([
    'projectId' => $projectId
]);
$logger = $logging->psrLogger('app');

バッチ処理オプションの有効化

PSR-3 ロガーは、各ログを同期して送信します。つまり、ログを出力するたびにユーザー リクエストに RPC レイテンシが追加されます。特に、1 回のリクエストで複数のログを出力する場合は、追加されるレイテンシが大きくなります。これは好ましくありません。

次のコードは、複数のログを 1 回の RPC 呼び出しでバッチ処理する PSR-3 ロガーを作成します。

$logger = LoggingClient::psrBatchLogger('app');

デフォルトでは、このロガーによって各ログが 1 つのプロセス内でバッチ処理されます。App Engine フレキシブル環境では、PHP 用 Stackdriver Logging ライブラリを構成して、さらに高いスループットと低いレイテンシを実現できます。詳細については、ロギング デーモンの構成をご覧ください。

PHP 用 Stackdriver Logging ライブラリの構成

PHP 用 Stackdriver Logging ライブラリの動作はカスタマイズできます。使用可能な構成オプションの一覧については、構成ドキュメントをご覧ください。

PSR-3 ロガーの使用

作成したロガーはアプリケーションで使用できます。

$logger->info('Hello World');
$logger->error('Oh no');

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

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

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

Google Cloud Platform での実行

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

App Engine

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

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

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

ただし、PSR-3 ロガーを使用してログにメタデータを自動的に追加することをおすすめします。これにより、アプリケーション ログとリクエストログが関連付けられます。

App Engine フレキシブル環境のデーモンの構成

App Engine フレキシブル環境では、外部デーモン プログラムの使用によってスループットを最大限に高めてアプリのレイテンシを最小限に抑えるように PHP 用 Stackdriver Logging ライブラリを構成できます。この機能を有効にするには、app.yamlruntime_config セクションに次の行を追加します。

enable_stackdriver_integration: true

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 の外部で PHP 用 Stackdriver Logging ライブラリを使用するには、GCP プロジェクト ID と該当するサービス アカウント認証情報を PHP 用 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. [フィルタを送信] をクリックします。

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

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

このページは役立ちましたか?評価をお願いいたします。

フィードバックを送信...

ご不明な点がありましたら、Google のサポートページをご覧ください。