このページでは、開発時に Node.js サーバレストレーサと AWS Lambda 関数を使用する方法について説明します推奨される方法は、AppDynamics AWS Lambda Extension を使用することです。「AppDynamics AWS Lambda Extension を使用して、実行時にサーバーレス APM をインストゥルメントする 」を参照してください。

はじめる前に

AWS Lambda 向けサーバレス APM に登録し、環境変数を設定すると、インストゥルメンテーションを開始できます。セットアップが次の要件を満たしていることを確認します。

このマニュアルには、Amazon Web Services(AWS)のマニュアルへのリンクが記載されています。Amazon は自身のマニュアルを管理しているため、AppDynamics は Amazon のマニュアルの精度については一切保証しません。

開発時に npm を使用して、Node.js サーバレストレーサをインストールする

ラムダをインストゥルメント化するには、AWS Lambda Extension をお勧めします。次の手順を使用して、Node.js サーバレストレーサをインストールすることもできます。

  1. Node.js サーバレストレーサのダウンロード
  2. Requireステートメントの追加
  3. Node.js サーバレストレーサを使用した関数のインストゥルメント化

Node.js サーバレストレーサのダウンロード

トレーサをインストールするには、package.json ファイルが存在するディレクトリに移動します。次の npm コマンドを実行します。

npm install appdynamics-lambda-tracer --save
JS

コマンドは、トレーサの依存関係を node_modules/ フォルダにダウンロードします。

Requireステートメントの追加

アプリケーションにトレーサを追加するには、AWS Lambda handler 関数が含まれているアプリケーションコードのプライマリファイルに require ステートメントを追加します。

const tracer = require('appdynamics-lambda-tracer');
JS

他の require ステートメントの前にトレーサの require ステートメントを追加することを忘れないでください。 

Node.js サーバレストレーサを使用した関数のインストゥルメント化

tracer.init メソッドを呼び出して、require ステートメント内の Node.js サーバレストレーサを初期化します。

インストゥルメンテーションを完了するには、コードの最後の行として tracer.mainModule(module) を呼び出します。 

次のコードスニペットは、トレーサを使用してサーバレス関数をインストゥルメント化する方法を示しています。

const tracer = require('appdynamics-lambda-tracer'); 
//Initialize the tracer
tracer.init();
 
// Your AWS Lambda handler function code here, for example:
exports.handler = async (event) => {
    // TODO implement
    const response = {
        statusCode: 200,
        body: JSON.stringify('Hello from Lambda!'),
    };
    return response;
};
//Complete the instrumentation
tracer.mainModule(module);
JS

デフォルトでは、Node.js サーバレストレーサは、HTTP または AWS Lambda 間のコールを介して渡された終了コールを自動的に検出します。関数がこれらのプロトコルを使用しない場合は、終了コールを作成する必要があります。「Node.js サーバレストレーサ API」を参照してください。

次のステップ

サーバーレス トレーサ インストゥルメンテーションの確認 の準備ができました。 

また、Node.js サーバレストレーサとエンドユーザモニタリングの統合や、Node.js サーバレストレーサ API の使用も可能です。

これらのマニュアルで使用されている Amazon Web サービス、AWS ロゴ、AWS、およびその他の AWS マークは、米国およびその他の国における Amazon.com, Inc. またはその関連会社の商標です。