AWS Lambda のモニター

Instana のUIで AWS Lambda に関連するメトリクスを表示するには、 Instana AWS エージェントをインストールして設定する必要があります。これは、専用の AWS モードで動作する Instana ホストエージェントです。

詳細については、 「 AWS エージェント」 を参照してください。

Instana のUIでLambdaトレースを表示するには、 AWS Lambda 関数に Instana のLambdaトレーサーを追加する必要があります。

AWS Lambda を監視するには、 AWS 環境に Instana AWS エージェントをインストールし、 Instana のLambdaトレーサーを AWS Lambda の関数と統合する必要があります。

Instana ( AWS )エージェントは、 AWS アカウントおよびリージョンごとに1回インストールされ、そのアカウントおよびリージョン内のすべての AWS Lambda 機能に加え、その他の AWS サービスを監視します。 詳細については、 「 Amazon Web Services ( AWS )エージェントを使用した Amazon Web Services ( AWS )の監視 」を参照してください。 このセンサーは、 AWS Lambda 関数のインフラストラクチャメトリクスを収集します。 また、関数からトレースを収集するために、 AWS Lambda 関数に Instana のLambdaトレーサーを追加する必要があります。 Lambda関数のランタイムに応じて、トレーサーは AWS Lambda 関数にレイヤーとしてインストールされるか、手動でインスツルメントされます。

AWS Lambda モニターの構成

AWS Lambda 関数への Instana Lambdaトレーサーのインストール

トレースデータ(リクエストレベルのデータ)を収集し、 Instana バックエンドに送信するには、 AWS Lambda 関数にランタイム固有の Instana Lambdaトレーサーをインストールする必要があります。 AWS Lambda 関数に Instana のLambdaトレーサーをインストールするには、以下のランタイムのインストール手順を参照してください:

オプション: Instana のLambdaトレーサーに関する追加設定

以下の表に示すように、ネイティブ Lambda トレースで一般的にサポートされるオプションの環境変数を構成できます。

注: オンプレミスで Instana を使用しており、かつ、既知のルート認証局(CA)を持つ証明書を使用して Instana バックエンドを運用できない場合を除き、変 INSTANA_DISABLE_CA_CHECK 数を true に設定しないでください。 この変数を有効にすると、この接続においてLambdaが中間者攻撃( MITM )の被害を受ける可能性があります。
環境変数 説明
INSTANA_TIMEOUT Instana バックエンドにデータを報告する HTTP リクエストのタイムアウトを設定します。
INSTANA_ENDPOINT_PROXY この変数を または http://my-proxy.tld に設定すると、 HTTP または http://user:password@my-proxy.tldHTTPS プロキシを経由して、 Instana バックエンドへデータを送信するようになります( Node.js ではサポートされていますが、 Python ではサポートされていません)。
INSTANA_EXTRA_HTTP_HEADERS この変数に、 HTTP ヘッダー名のセミコロン区切りのリストを設定します(トリガータイプが「 API ゲートウェイ(Lambdaプロキシ統合)」または「アプリケーションロードバランサー」の場合)。これにより、 HTTP ヘッダーが取得されます。
INSTANA_SERVICE_NAME カスタム・サービス名を定義します。
INSTANA_LOG_LEVEL Instana パッケージのログレベルを設定します。 可能な値は、 debuginfowarn、および error (デフォルト: info) です。
INSTANA_DEBUG ログ・レベルを debugに設定するには、この変数を任意の値に設定します。
INSTANA_DISABLE_CA_CHECK この変数を に設定すると true 、 Instana バックエンドに接続する際、Lambdaランタイムに含まれる認証局(CA)リストに対するサーバー証明書の検証が無効になります。 ( @instana/aws-lambda@1.93.0/レイヤー・バージョン 25 以降で使用可能)

Lambda関数の設定、メトリクス、バージョン、トリガーの確認

Instana を通じて、Lambda 関数に関するすべての情報を確認できます。

Lambda 関数の「 HTTP 」の属性、トリガー、メトリクス、およびバージョンの詳細を確認するには、以下の手順を実行してください:

  1. Instana のUIのサイドバーで、 「インフラストラクチャ」 を選択します。
  2. モニター対象の特定のラムダ関数をクリックします。

収集されたすべてのメトリックと Lambda バージョンを含むホスト・ダッシュボードを表示できます。 詳細については、 「Lambdaの設定、メトリクス、バージョン、およびトリガー」 を参照してください。

コールドスタートまたはタイムアウト時のアラートを有効にする

Lambda関数における過度なコールドスタートやタイムアウトに対して、 スマートアラートを設定できます。

ランタイム コールド・スタート タイムアウト Comment
Go
Node.js タイムアウト検出はデフォルトでは無効になっている。 タイムアウト検出を有効にするには、環境変数の追加を参照してください。
.NET または .NET Core
Java
Python
Ruby

スマートアラートを設定するには、 アラ ートを設定したいLambda関数が含まれるアプリケーション・パースペクティブのドキュメントに移動し、スマートアラートを追加します:

  1. Instana のUIにあるナビゲーションパネルから、 「アプリケーション」 をクリックします。
  2. アプリケーションを選択します。
  3. スマート・アラートの追加をクリックします。
  4. 「拡張モードに切り替え」をクリックします。
  5. 「スコープ」 セクションの 「サービス/エンドポイントの選択」 フィールドに、以下のいずれかのフィルターを追加します。
    • Cloud Function As A Service > Cold Start is true
    • Cloud Function As A Service > Suspected Timeout is true
  6. 「トリガー」 セクションの 「選択されたブループリント」 フィールドで、 「スループット」を選択します。
  7. 「しきい値」 セクションで、ユース・ケースに合った しきい値 を選択します。 すべてのオカレンスを含めるには 1 を使用し、特定の数のコールド・スタートまたはタイムアウトに対してルールを違反させるには、より大きい値を使用します。
  8. 「時間しきい値」 設定を使用して、アラートの動作を微調整します。

レイヤー

Lambda拡張機能の使用

NodeJS バージョン71以降のLayerには、Lambda拡張機能が含まれています。

この拡張機能は、 Instana バックエンドへのデータ送信プロセスを他のLambda関数の処理から分離することで、監視対象のLambda関数のパフォーマンスを向上させることができます。 これらのパフォーマンス改善を利用するには、Instana レイヤーを拡張機能を含むバージョンにアップグレードします。

内部的には、この拡張機能は言語ライブラリと連携して、 Instana バックエンドへのすべてのリクエストをバッファリングし、プロキシ処理を行います。 通常の操作では、拡張によってラムダ関数の存続期間が延長されることはありません。 存続時間は、以下のインスタンスの間のみ延長されます。

  • バックエンドへのバッファーに保持されているすべてのデータを確実にクリアするためのシャットダウン要求。
  • Lambda 関数が失敗し、スパンの送信が停止する状態。 3 秒間待機して、ルート・スパンが送信されたかどうかを確認してから、次の呼び出しを待機します。

この拡張機能の使用を無効にするには、関数の環境変数 TRUEINSTANA_DISABLE_LAMBDA_EXTENSION に設定してください。

Lambdaの監視に関するパフォーマンスと実行時間の考慮事項

成果物のサイズ

Instana のLambdaモニタリングを追加すると、デプロイされたLambda関数のサイズが大きくなります。 追加のサイズは、言語固有のレイヤーまたはライブラリーによって異なります。 特定の Instana Lambdaレイヤーバージョンのサイズを確認するには、次のシェルコマンドを使用します:

aws lambda get-layer-version --layer-name <layer_arn> --version-number <target_version> | jq .Content.Location | xargs -L 1 curl --output layer.zip
 
unzip -l layer.zip
 

パフォーマンスへの影響

Instana を使用して Lambda 関数を監視する場合、パフォーマンスへの影響は主に、Lambda 関数が Instana のバックエンドと通信するのにかかる時間によって決まります。 各実行の終了時に、 Instana が提供するライブラリは、実行結果を報告するために、 Instana、 AWS Lambda 拡張機能、または Instana テナントユニットのいずれかに対してブロッキング呼び出しを行います。

Lambda 拡張機能を使用する関数の場合、このプロセスはバックグラウンドで実行され、モニター対象の関数は、モニター対象のコードの準備ができるとすぐに応答を返すことができます。

Lambda 拡張機能を使用していない関数の場合、このプロセスでは、データがテナント・ユニットに送信された場合にのみ、実行の結果をレポートできます。