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

始める前に

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

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

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

手動インストゥルメンテーションまたは自動インストゥルメンテーションを使用して、ES6 ラムダをインストゥルメント化できます。

手動インストゥルメンテーション

選択した Java Script モジュールに基づいて、次の手順を実行します。

ES6 ラムダをインストゥルメント化するために、次の手順を使用して、Node.js サーバーレストレーサをインストールすることができます。

  1. 次のコマンドを実行して、ES6 の開発時に npm を使用して Node.js サーバーレストレーサをインストールします。

    npm install appdynamics-lambda-tracer --save 
    JS
  2. 次のコマンドを実行して、トレーサをインポートします。

    import tracer from "appdynamics-lambda-tracer";
    
    tracer.init();
    JS
  3. Node.js サーバーレストレーサを使用した関数のインストゥルメント化次のコードスニペットは、トレーサを使用してサーバーレス関数をインストゥルメント化する方法を示しています。

    export const handler = tracer.functionWrapper(async (event) => {
      // YOUR CODE HERE
      return "Hello World";
    });
    JS

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

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

    npm install appdynamics-lambda-tracer --save
    JS

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

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

    tracer = require('appdynamics-lambda-tracer'); 
    //Initialize the tracer
    tracer.init();
    
    JS
  3. インストゥルメンテーションを完了するには、コードの最後の行として tracer.mainModule(module) を呼び出します。次のコードスニペットは、トレーサを使用してサーバレス関数をインストゥルメント化する方法を示しています。

    // 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

TypeScript ラムダをインストゥルメント化するために、次の手順を使用して、Node.js サーバーレストレーサをインストールすることができます。

  1. 次のコマンドを実行して、開発時に npm を使用して Node.js サーバーレストレーサをインストールします。

    npm install appdynamics-lambda-tracer -–save
    npm install -D @types/aws-lambda esbuild 
    JS
  2. 次のコマンドを実行して、トレーサをインポートします。

    import tracer from "appdynamics-lambda-tracer";
    
    tracer.init();
    JS
  3. Node.js サーバーレストレーサを使用した関数のインストゥルメント化次のコードスニペットは、トレーサを使用してサーバーレス関数をインストゥルメント化する方法を示しています。

    export const handler = tracer.functionWrapper ( async (event: APIGatewayEvent, context: Context): Promise<APIGatewayProxyResult> => {
    return {
    statusCode: 200,
    body: JSON.stringify({
    message: 'hello world',
    }),
    };
    });
    JS


自動インストゥルメンテーション

自動インストゥルメンテーションでは、次の環境変数を設定する必要があります。

  • APPDYNAMICS_IS_ESM_ENABLE:この変数の値は、使用している Java Script モジュールによって異なります。ESM モジュールを使用している場合は、変数を true に設定します。ただし、ESM モジュールを使用していない場合は、変数を false に設定します。
  • APPDYNAMICS_APPLICATION_LAMBDA_HANDLER:ラムダを実行するには、この変数を定義する必要があります。この変数でラムダのハンドラ関数を指定します。

AWS_LAMBDA_EXEC_WRAPPER 環境変数を削除してください。


インストゥルメンテーションを完了するには、選択した Java Script モジュールに基づいて次の手順を実行します。

 

  1. [Layers] セクションで、Splunk AppDynamicsレイヤを追加します。次に示すように、名前 appdynamics-lambda-extensionと [Version ARN] 値を指定します。

    arn:aws:lambda:us-west-<###>:layer:appdynamics-lambda-nodejs-<###>
    JS
  2. [Runtime settings] セクションで、Lambda ハンドラをSplunk AppDynamics特定のハンドラ appdynamics-lambda-nodejs-tracer.handler に更新します。

    appdynamics-lambda-nodejs-tracer.handler
    JS
  3. [Configuration] セクションで、次の環境変数を他のSplunk AppDynamics変数に追加します。

    • APPDYNAMICS_APPLICATION_LAMBDA_HANDLER = Lambda ハンドラ

    • APPDYNAMICS_IS_ESM_ENABLE = true


 

  1. [Layers] セクションで、Splunk AppDynamicsレイヤを追加します。次に示すように、名前 appdynamics-lambda-extensionと [Version ARN] 値を指定します。

    arn:aws:lambda:us-west-<###>:layer:appdynamics-lambda-nodejs-<###>
    JS
  2. [Runtime settings] セクションで、Lambda ハンドラをSplunk AppDynamics特定のハンドラ appdynamics-lambda-nodejs-tracer.handler に更新します。

    appdynamics-lambda-nodejs-tracer.handler
    JS
  3. [Configuration] セクションで、次の環境変数を他のSplunk AppDynamics変数に追加します。

    • APPDYNAMICS_APPLICATION_LAMBDA_HANDLER = Lambda ハンドラ

    • APPDYNAMICS_IS_ESM_ENABLE = false

 

  1. [Layers] セクションで、Splunk AppDynamicsレイヤを追加します。次に示すように、名前 appdynamics-lambda-extensionと [Version ARN] 値を指定します。

    arn:aws:lambda:us-west-<###>:layer:appdynamics-lambda-nodejs-<###>
    JS
  2. [Runtime settings] セクションで、Lambda ハンドラをSplunk AppDynamics特定のハンドラ appdynamics-lambda-nodejs-tracer.handler に更新します。

    appdynamics-lambda-nodejs-tracer.handler
    JS
  3. [Configuration] セクションで、次の環境変数を他のSplunk AppDynamics変数に追加します。

    • APPDYNAMICS_APPLICATION_LAMBDA_HANDLER = Lambda ハンドラ

    • APPDYNAMICS_IS_ESM_ENABLE = false、(ES モジュールを使用している場合は true

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


次のステップ

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

Node.js サーバレストレーサとエンドユーザモニタリングの統合」を行うことや、「Node.js サーバレストレーサ API」を使用することもできます。

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