Node.js アプリケーションでは、一般的な Winston と Bunyan のロギング ライブラリのプラグインが維持されます。Winston は汎用のライブラリで、さまざまなログ フォーマッタとトランスポートを実装します。構造化 JSON ログに特化した Bunyan は、Bunyan コマンドラインへのパイピングによってログの形式設定をサポートします。
Node.js 用 Logging クライアント ライブラリを直接使用することも、好みのロギング ライブラリと独自の統合を作成することもできます。たとえば、Pino log フレームワークの例を使用できます。
Compute Engine 仮想マシン(VM)インスタンスで Winston または Bunyan を使用するために、Logging エージェントをインストールする必要はありません。
始める前に
- 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.
- Node.js 開発用の環境を準備します。
ロギングを構成する
このセクションでは、Winston と Bunyan のロギング ライブラリのプラグインをインストールして構成する方法について説明します。Bunyan については、Node.js Express アプリケーションで Bunyan を使用する方法に関する情報が提供されています。
他のライブラリやフレームワークも使用できます。たとえば、Pino log フレームワークを使用できます。OpenTelemetry を使用して指標とトレースデータを収集し、Pino ログ フレームワークを使用してログデータを収集するサンプルコードについては、Node.js でトレースと指標を生成するをご覧ください。Pino を使用する場合は、Pino の重大度と Cloud Logging で使用される重大度との間のマッピングを実装する必要があります。コードの例については、Pino のログレベルのマッピングをご覧ください。
Winston プラグインをインストールして構成する
Cloud Logging には、Winston 向けの Node.js 用 Logging ライブラリのプラグインが用意されています。この Winston 向けの Logging プラグインによって、Logging を使用する際により簡単で高レベルのレイヤが提供されます。
Winston プラグインをインストールして構成する手順は次のとおりです。
Logging Winston プラグインをインストールするには、npm を使用します。
npm install --save @google-cloud/logging-winston winston
プラグインをインポートして Winston の構成にそれを追加します。
プラグインを構成します。
Winston プラグインの動作をカスタマイズするには、Cloud Logging API の Node.js 用 Cloud クライアント ライブラリによってサポートされる構成オプションと同じオプションを使用します。これらのオプションは、プラグインのコンストラクタに渡される
options
オブジェクトで渡すことができます。
Bunyan プラグインをインストールして構成する
Cloud Logging には、Bunyan 向けの Node.js 用 Logging ライブラリのプラグインが用意されています。この Bunyan 向けの Logging プラグインによって、Logging を使用する際により簡単で高レベルのレイヤが提供されます。
Bunyan プラグインをインストールして構成する手順は次のとおりです。
Logging Bunyan プラグインをインストールするには、npm を使用します。
npm install --save bunyan @google-cloud/logging-bunyan
プラグインをインポートして Bunyan の構成にそれを追加します。
プラグインを構成します。
Bunyan プラグインの動作をカスタマイズするには、Cloud Logging API の Node.js 用 Cloud クライアント ライブラリによってサポートされる構成オプションと同じオプションを使用します。これらのオプションは、プラグインのコンストラクタに渡される
options
オブジェクトで渡すことができます。
Bunyan と Express を使用する
Node.js Express アプリケーションで Logging を使用して Bunyan をセットアップし、使用できます。
インストールの詳細については、Node.js 用 Cloud Logging ライブラリのドキュメントをご覧ください。公開バグトラッカーを使用して問題を報告することもできます。
Cloud Logging クライアント ライブラリを使用してログを書き込む
Cloud Logging の Node.js 用 Cloud クライアント ライブラリを直接使用する方法については、Logging クライアント ライブラリをご覧ください。
Google Cloud での実行
Node.js 用 Cloud Logging ライブラリを使用してログを書き込むアプリでは、基盤となるリソースのサービス アカウントにログ書き込み(roles/logging.logWriter
) IAMのロールが必要です。ほとんどの Google Cloud 環境では、このロールを持つようにデフォルトのサービス アカウントが自動的に構成されます。
App Engine
App Engine では Cloud Logging が自動的に有効になり、アプリのデフォルトのサービス アカウントにログエントリを書き込む IAM 権限がデフォルトで付与されます。
アプリからログエントリを書き込むには、このページの説明に沿って、Bunyan または Winston を使用することをおすすめします。
詳細については、ログの書き込みと表示をご覧ください。
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 と管理] でログ書き込みロールが付与されていることを確認してください。
Cloud Functions
Cloud Functions では、デフォルトでログ書き込み役割が付与されます。
Node.js 用 Cloud Logging ライブラリは、明示的に認証情報を提示しなくても使用できます。
Cloud Functions は、自動的に Cloud Logging を使用するように構成されています。
ローカルやその他の場所で実行する
自分のワークステーション、データセンターのコンピュータ、別のクラウド プロバイダの VM インスタンスでライブラリを実行するなど、Google Cloud の外部で Node.js 用 Cloud Logging ライブラリを使用するには、Google Cloud プロジェクト ID と適切なサービス アカウント認証情報を Node.js 用 Cloud Logging ライブラリに直接提供する必要があります。
既存のサービス アカウントの場合は、次の操作を行います。
サービス アカウントに IAM のログ書き込み(
roles/logging.logWriter
) IAM。ロールを付与します。IAM ロールの詳細については、アクセス制御をご覧ください。
サービス アカウントをお持ちでない場合は、サービス アカウントを作成します。このプロセスについては、サービス アカウントの作成をご覧ください。
認証に使用できる方法に関する一般的な情報については、用語: サービス アカウントをご覧ください。
Winston を使用します。Bunyan を使用します。
ログを確認する
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 と構成に依存します。たとえば、アプリケーションでリソースを指定することも、デフォルトのリソースを使用することもできます。
ログ エクスプローラにログが表示されない場合に、すべてのログエントリを表示するには、高度なクエリモードに切り替えて空のクエリを使用します。
- 高度なクエリモードに切り替えるには、ログ エクスプローラの上部にあるメニュー(▾)をクリックし、[高度なフィルタに変換] を選択します。
- フィルタ ボックスに表示されているコンテンツをクリアします。
- [フィルタを送信] をクリックします。
個々のエントリを調べてリソースを特定します。
詳細については、ログ エクスプローラの使用をご覧ください。