PHP アプリケーションから Cloud Logging にログを書き込むには、PHP 用 Cloud Logging ライブラリを直接使用します。
始める前に
- Google Cloud アカウントにログインします。Google Cloud を初めて使用する場合は、アカウントを作成して、実際のシナリオでの Google プロダクトのパフォーマンスを評価してください。新規のお客様には、ワークロードの実行、テスト、デプロイができる無料クレジット $300 分を差し上げます。
-
Google Cloud Console の [プロジェクト セレクタ] ページで、Google Cloud プロジェクトを選択または作成します。
-
Cloud プロジェクトに対して課金が有効になっていることを確認します。詳しくは、プロジェクトで課金が有効になっているかどうかを確認する方法をご覧ください。
-
Cloud Logging API を有効にします。
-
Google Cloud Console の [プロジェクト セレクタ] ページで、Google Cloud プロジェクトを選択または作成します。
-
Cloud プロジェクトに対して課金が有効になっていることを確認します。詳しくは、プロジェクトで課金が有効になっているかどうかを確認する方法をご覧ください。
-
Cloud Logging API を有効にします。
PHP 用 Cloud Logging ライブラリの構成
PHP 用 Cloud Logging ライブラリは、PHP ウェブ フレームワーク用のシンプルな PSR-3 ロガー実装を提供します。
アプリケーションからログを書き込むには、PHP 用 Cloud Logging ライブラリを composer.json に追加します。
composer require google/cloud-logging
PSR-3 ロガーの作成
PSR-3 ロガーを作成するには、次のコードを使用します。
バッチ処理オプションの有効化
PSR-3 ロガーは、各ログを同期して送信します。つまり、ログを出力するたびにユーザー リクエストに RPC レイテンシが追加されます。特に、1 つのリクエストで複数のログを出力する場合は、追加されるレイテンシが大きくなります。これは好ましくありません。
次のコードは、複数のログを 1 回の RPC 呼び出しでバッチ処理する PSR-3 ロガーを作成します。
デフォルトでは、このロガーによって各ログが 1 つのプロセス内でバッチ処理されます。App Engine フレキシブル環境では、PHP 用 Cloud Logging ライブラリを構成して、さらに高いスループットと低いレイテンシを実現できます。詳細については、ロギング デーモンの構成をご覧ください。
PHP 用 Cloud Logging ライブラリの構成
PHP 用 Cloud Logging ライブラリの動作はカスタマイズできます。使用可能な構成オプションの一覧については、構成ドキュメントをご覧ください。
PSR-3 ロガーの使用
作成したロガーはアプリケーションで使用できます。
インストールの詳細については、PHP 用 Cloud Logging ライブラリのドキュメントをご覧ください。公開バグトラッカーを使用して問題を報告することもできます。
Cloud クライアント ライブラリを直接使用する
PHP 用 Cloud Logging Cloud クライアント ライブラリを直接使用する方法については、Cloud Logging クライアント ライブラリをご覧ください。
Google Cloud での実行
PHP 用 Cloud Logging ライブラリを使用するには、Google Cloud 上で IAMログ書き込みロールが必要です。ほとんどの Google Cloud 環境では、このロールがデフォルトで付与されています。
App Engine
App Engine では Cloud Logging が自動的に有効になり、アプリのデフォルトのサービス アカウントに、ログエントリを書き込む IAM 権限がデフォルトで付与されます。
詳細については、ログの書き込みと表示をご覧ください。
ただし、PSR-3 ロガーを使用してログにメタデータを自動的に追加することをおすすめします。これにより、アプリケーション ログとリクエストログが関連付けられます。
App Engine フレキシブル環境のデーモンの構成
App Engine フレキシブル環境では、外部デーモン プログラムの使用によってスループットを最大限に高めてアプリのレイテンシを最小限に抑えるように PHP 用 Cloud Logging ライブラリを構成できます。この機能を有効にするには、app.yaml
の runtime_config
セクションに次の行を追加します。
Google Kubernetes Engine(GKE)
GKE では、デフォルトでログ書き込みロールが付与されます。
必要に応じて、クラスタの作成時に次のコマンドを使用して 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 に完全アクセス権を許可] を選択します。どのサービス アカウントを選択する場合でも、Cloud Console の [IAM と管理] でログ書き込みロールが付与されていることを確認してください。
ローカルやその他の場所で実行する
自分のワークステーション、データセンターのコンピュータ、別のクラウド プロバイダの VM インスタンスでライブラリを実行するなど、Google Cloud の外部で PHP 用 Cloud Logging ライブラリを使用するには、Google Cloud プロジェクト ID と適切なサービス アカウント認証情報を PHP 用 Cloud Logging ライブラリに直接提供する必要があります。
サービス アカウントの認証情報は手動で作成して取得できます。[ロール] フィールドを指定する場合は、ログ書き込み役割を使用します。Identity and Access Management のロールの詳細については、アクセス制御ガイドをご覧ください。
ログを閲覧する
デプロイ後、ログ エクスプローラでログを表示できます。
ログ エクスプローラでは 1 つ以上のリソースを指定する必要がありますが、リソースの選択が明確でない場合があります。その場合は、次のヒントを参考にしてください。
アプリケーションを App Engine にデプロイしている場合や、App Engine 固有のライブラリを使用している場合は、リソースを GAE アプリケーションに設定します。
アプリケーションを Compute Engine にデプロイしている場合は、リソースを GCE VM インスタンスに設定します。
アプリケーションを Google Kubernetes Engine にデプロイしている場合は、クラスタのロギング構成に応じてログエントリのリソースタイプが異なります。レガシー Google Cloud のオペレーション スイートと Google Cloud のオペレーション スイート Kubernetes Monitoring ソリューションの詳細、およびこれらのオプションがリソースタイプに与える影響については、Google Cloud のオペレーション スイート Kubernetes Monitoring への移行をご覧ください。
アプリケーションが Cloud Logging API を直接使用している場合、リソースは API と構成に依存します。たとえば、アプリケーションでリソースを指定することも、デフォルトのリソースを使用することもできます。
ログ エクスプローラにログが表示されない場合に、すべてのログエントリを表示するには、高度なクエリモードに切り替えて空のクエリを使用します。
- 高度なクエリモードに切り替えるには、ログ エクスプローラの上部にあるメニュー(▾)をクリックし、[高度なフィルタに変換] を選択します。
- フィルタ ボックスに表示されているコンテンツをクリアします。
- [フィルタを送信] をクリックします。
個々のエントリを調べてリソースを特定します。
詳細については、ログの表示と高度なログクエリをご覧ください。