Node.js 用の Error Reporting の設定

は、

Node.js 用の Stackdriver Error Reporting ライブラリを使用して、Node.js アプリケーションから Stackdriver Error Reporting にエラーレポートを送信できます。

Error Reporting は、Cloud FunctionsApp EngineCompute EngineGoogle Kubernetes Engine などの一部の Google Cloud Platform プロダクトに統合されています。Error Reporting は、それらのプロダクトで実行中のアプリケーションによって Stackdriver Logging に記録されたエラーを表示します。詳細については、Google Cloud Platform での実行をご覧ください。

Stackdriver Logging を使用してエラーデータを Error Reporting に送信することもできます。データのフォーマット要件については、Stackdriver Logging でのエラー メッセージのフォーマットをご覧ください。

始める前に

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

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

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

    [リソースの管理] ページに移動

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

    課金を有効にする方法について

  4. Error Reporting API を有効にします。

    APIを有効にする

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

    Node.js 設定ガイドに移動

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

Node.js 用の Stackdriver Error Reporting ライブラリを使用すると、ほとんどの場所で動作している Node.js アプリケーションから報告されるエラーをモニタリングして表示できます。

  1. npm を使用してパッケージをインストールします。

    npm install --save @google-cloud/error-reporting
  2. エラーの報告を開始するために、ライブラリをインポートしてクライアントをインスタンス化します。

    // Imports the Google Cloud client library
    const ErrorReporting = require('@google-cloud/error-reporting')
      .ErrorReporting;
    
    // On Node 6+ the following syntax can be used instead:
    // const {ErrorReporting} = require('@google-cloud/error-reporting');
    
    // With ES6 style imports via TypeScript or Babel, the following
    // syntax can be used instead:
    // import {ErrorReporting} from '@google-cloud/error-reporting';
    
    // Instantiates a client
    const errors = new ErrorReporting();
    
    // Reports a simple error
    errors.report('Something broke!');

インストールの詳細については、Node.js 用の Stackdriver Error Reporting ライブラリのドキュメントをご覧ください。問題追跡ツールを使用して問題を報告することもできます。

クライアント ライブラリの構成

Node.js 用の Stackdriver Error Reporting ライブラリの動作をカスタマイズできます。構造可能なオプションのリストについては、ライブラリの構成をご覧ください。これらのオプションは、ライブラリのコンストラクタに渡される options オブジェクトで渡すことができます。

エラーの報告

次の例に示すように、report メソッドを呼び出すと、手動でエラーを報告できます。

// Imports the Google Cloud client library
const ErrorReporting = require('@google-cloud/error-reporting')
  .ErrorReporting;

// On Node 6+ the following syntax can be used instead:
// const {ErrorReporting} = require('@google-cloud/error-reporting');

// With ES6 style imports via TypeScript or Babel, the following
// syntax can be used instead:
// import {ErrorReporting} from '@google-cloud/error-reporting';

// Instantiates a client
const errors = new ErrorReporting();

// Use the error message builder to customize all fields ...
const errorEvent = errors.event();

// Add error information
errorEvent.setMessage('My error message');
errorEvent.setUser('root@nexus');

// Report the error event
errors.report(errorEvent, () => {
  console.log('Done reporting error event!');
});

// Report an Error object
errors.report(new Error('My error message'), () => {
  console.log('Done reporting Error object!');
});

// Report an error by provided just a string
errors.report('My error message', () => {
  console.log('Done reporting error string!');
});

Express.js を使用したエラーの報告

Node.js 用の Stackdriver Error Reporting ライブラリを使用すると、Express.js などの一般的な Node.js ウェブ フレームワークに Stackdriver Error Reporting を統合できます。

const express = require('express');

// Imports the Google Cloud client library
const ErrorReporting = require('@google-cloud/error-reporting')
  .ErrorReporting;

// On Node 6+ the following syntax can be used instead:
// const {ErrorReporting} = require('@google-cloud/error-reporting');

// With ES6 style imports via TypeScript or Babel, the following
// syntax can be used instead:
// import {ErrorReporting} from '@google-cloud/error-reporting';

// Instantiates a client
const errors = new ErrorReporting();

const app = express();

app.get('/error', (req, res, next) => {
  res.send('Something broke!');
  next(new Error('Custom error message'));
});

app.get('/exception', () => {
  JSON.parse('{"malformedJson": true');
});

// Note that express error handling middleware should be attached after all
// the other routes and use() calls. See the Express.js docs.
app.use(errors.express);

const PORT = process.env.PORT || 8080;
app.listen(PORT, () => {
  console.log(`App listening on port ${PORT}`);
  console.log('Press Ctrl+C to quit.');
});

その他の統合

Node.js 用の Stackdriver Error Reporting ライブラリとその他の Node.js ウェブ フレームワーク間の統合の詳細については、GitHub 上のライブラリのリポジトリをご覧ください。

Google Cloud Platform での実行

Node.js 用 Stackdriver Error Reporting ライブラリを使用するには、Cloud IAM Error Reporting 書き込み役割が必要です。ほとんどの Google Cloud Platform コンピューティング プラットフォームでは、デフォルトでこの役割が提供されています。

App Engine フレキシブル環境

App Engine は、デフォルトで Error Reporting 書き込み役割を付与します。

Node.js 用の Stackdriver Error Reporting ライブラリは、明示的に認証情報を提示しなくても使用できます。

App Engine のフレキシブル環境のアプリケーションでは、Error Reporting が自動的に有効になります。特別な設定は必要ありません。

GKE

GKE では、次のコマンド例に示すように、クラスタの作成時に cloud-platform アクセス スコープを追加する必要があります。

gcloud container clusters create example-cluster-name --scopes https://www.googleapis.com/auth/cloud-platform

Compute Engine

Compute Engine VM インスタンスを使用する場合は、各インスタンスに cloud-platform アクセス スコープを追加します。Google Cloud Platform Console で新しいインスタンスを作成する場合は、[インスタンスの作成] パネルの [ID と API へのアクセス] セクションで行うことができます。Compute Engine のデフォルト サービス アカウントや別のサービス アカウントを使用して、[ID と API へのアクセス] セクションの [すべての Cloud API に完全アクセス権を許可] を選択します。どのサービス アカウントを選択する場合でも、GCP Console の [IAM と管理] セクションで、そのアカウントに Error Reporting 書き込み役割が付与されていることを確認してください。

Cloud Functions

Cloud Functions は、デフォルトで Error Reporting 書き込み役割を付与します。

Node.js 用の Stackdriver Error Reporting ライブラリは、明示的に認証情報を提示しなくても使用できます。

Cloud Functions は、自動的に Error Reporting を使用するように構成されています。JavaScript の未処理の例外は、Stackdriver Logging に表示され、Node.js 用の Stackdriver Error Reporting ライブラリを使用しなくても、Error Reporting によって処理されます。

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

Google Cloud Platform の外部で Node.js 用の Stackdriver Error Reporting ライブラリを使用するには、GCP プロジェクト ID と該当するサービス アカウント認証情報を Node.js 用の Stackdriver Error Reporting ライブラリに直接入力する必要があります。これは、自分のワークステーション、データセンターのコンピュータ、または別のクラウド プロバイダの VM インスタンスでライブラリを実行する場合に適用されます。詳しくは、サービス アカウント認証情報の手動による取得と提供をご覧ください。

例:

// Imports the Google Cloud client library
const ErrorReporting = require('@google-cloud/error-reporting')
  .ErrorReporting;

// On Node 6+ the following syntax can be used instead:
// const {ErrorReporting} = require('@google-cloud/error-reporting');

// With ES6 style imports via TypeScript or Babel, the following
// syntax can be used instead:
// import {ErrorReporting} from '@google-cloud/error-reporting';

// Instantiates a client
const errors = new ErrorReporting({
  projectId: 'your-project-id',
  keyFilename: '/path/to/key.json',
});

// Reports a simple error
errors.report('Something broke!');

エラーレポートの表示

デプロイ後は、GCP Console の Error Reporting ダッシュボードでエラーレポートを表示できます。

Error Reporting ダッシュボードに移動

詳細については、エラーの表示をご覧ください。

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

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

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