AWS Lambda のモニター

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

詳細は 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 Amazon Web Services ( AWS ) エージェントを使用した Amazon Web Amazon Web Services ( AWS ) の監視」 を参照してください。 このセンサーは AWS Lambda 関数のインフラメトリクスを収集します。 また、関数からトレースを収集するには、 AWS Lambda関数にInstana Lambdaトレーサーを追加する必要があります。 Lambda関数のランタイムに応じて、トレーサーは AWS Lambda関数のレイヤーとしてインストールされるか、手動でインスツルメンテーションされる。

サポートされるランタイム

AWS エージェント

Lambdaモニタリングのための AWS エージェントは、ランタイムに関係なく、すべてのLambda関数のバージョン詳細とメトリクスを収集します。

AWS Lambda モニターの構成

AWS Lambda関数にInstana Lambdaトレーサーをインストールする

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

オプションInstana Lambda トレーサーのその他の設定を行う

Lambdaのネイティブ・トレースで一般的にサポートされているオプションの環境変数は、以下の表のように設定することができます:

注意: オンプレミスで Instana を使用し、既知のルート証明機関 (CA) を持つ証明書で Instana バックエンドを操作できない場合を除き INSTANA_DISABLE_CA_CHECK true ただし、オンプレミスで Instana を使用し、既知のルート認証局 (CA) の証明書で Instana バックエンドを操作できない場合を除きます。 この変数を有効にすると、ラムダはこの接続に対してMITM(Man in the Middle)攻撃に対して脆弱になります。
環境変数 説明
INSTANA_TIMEOUT Instana バックエンドにデータを報告する HTTP リクエストのタイムアウトを設定します。
INSTANA_ENDPOINT_PROXY この変数を http://my-proxy.tld または http://user:password@my-proxy.tld に設定すると、データの報告を HTTP または HTTPS プロキシ経由で Instana バックエンドにルーティングします ( Node.js ではサポートされますが、 Python ではサポートされません)。
INSTANA_EXTRA_HTTP_HEADERS この変数にセミコロンで区切られた HTTP ヘッダ名のリストを設定し、 HTTP ヘッダをキャプチャする(Lambda プロキシを統合した API ゲートウェイやアプリケーションロードバランサーをトリガーとする)。
INSTANA_SERVICE_NAME カスタムサービス名を定義する。
INSTANA_LOG_LEVEL Instana パッケージのログレベルを設定します。 指定可能な値は、 debuginfowarnerror (デフォルト: info )。
INSTANA_DEBUG ログレベルを debug に設定するには、この変数を任意の値に設定する。
INSTANA_DISABLE_CA_CHECK この変数を true に設定すると、Instana バックエンドに接続するときに、Lambda ランタイムに含まれる認証局 (CA) のリストに対してサーバー証明書を検証することを無効にします。 ( @instana/aws-lambda@1.93.0/レイヤーのバージョン 25 以降で利用可能)

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

Instanaを通じて、ラムダ関数に関するすべての情報を見ることができます。

Lambda関数の HTTP 属性、トリガー、メトリクスおよびバージョンの詳細を表示するには、次の手順を実行します:

  1. Instana UI のサイドバーで、 インフラストラクチャを選択します。
  2. 特定の監視ラムダ関数をクリックする。

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

コールドスタートやタイムアウトのアラートを有効にする

Lambdaファンクションの過剰なコールドスタートやタイムアウトに対するスマートアラートを設定できます。

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

スマートアラートを設定するには、アラートが必要なLambda関数を含むアプリケーションパースペクティブのドキュメントにアクセスし、スマートアラートを追加します:

  1. Instana UI のナビゲーションパネルから、 アプリケーションをクリックします。
  2. アプリケーションを選択します。
  3. スマート・アラートの追加をクリックします。
  4. アドバンスモードに切り替える 」をクリックする。
  5. Scope」 セクションの 「Select Services/Endpoints」 フィールドに、以下のフィルタのいずれかを追加する:
    • Cloud Function As A Service > Cold Start is true
    • Cloud Function As A Service > Suspected Timeout is true
  6. Trigger セクションの Selected blueprint フィールドで Throughput を選択します。
  7. 閾値セクションで、使用ケースに合った閾値を選択する。 コールドスタートまたはタイムアウトの特定の回数でルールを違反させるには、それ以上の値を使用する。
  8. 時間しきい値の設定を使用して、アラート動作を微調整します。

レイヤー

ラムダ・エクステンションの使用

NodeJS レイヤーのバージョン71以降には、 ラムダ・エクステンションが含まれている。

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

内部的には、エクステンションは言語ライブラリと連携して、Instanaバックエンドへのすべてのリクエストをバッファリングし、プロキシします。 通常の操作では、ラムダ機能の寿命は延長されない。 有効期限は以下の場合にのみ延長される:

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

拡張機能の使用を無効にするには、あなたの関数の環境変数で INSTANA_DISABLE_LAMBDA_EXTENSION 変数を TRUE に設定してください。

ラムダ・モニタリングのパフォーマンスとランタイムに関する考察

成果物のサイズ

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エクステンションを使用していない関数の場合、この処理により、テナントユニットにデータが送信された場合にのみ、実行結果のレポートが可能になります。