Lambda InsightsとX-Rayを併用した場合にできることを記載します。
結論:Lambda Insightsでシステムレベルのメトリクスを確認し、気になる箇所があればX-Rayでパフォーマンスを視覚的に確認することができます。
Lambda InsightsとX-Rayはそれぞれざっくり以下のような特徴があります。
- Lambda Insights
- CPU 時間、メモリなどのシステムレベルのメトリクスが収集可能なもの
- Lambda Insights単体でできることは以下の記事をご参照ください
- CPU 時間、メモリなどのシステムレベルのメトリクスが収集可能なもの
- X-Ray
- パフォーマンス・エラーを可視化できるもの
- X-Ray単体でできることは以下の記事をご参照ください
- パフォーマンス・エラーを可視化できるもの
それでは、まずLambda InsightsとX-Rayを有効化していきます。
Lambda InsightsとX-Rayの有効化
関数作成して、Lambda InsightsとX-Rayを有効化していきます。
既存関数の有効化を行いたい場合は、関数作成を読み飛ばしてください。
関数の作成
Lambda関数を作成します。(既存の関数のLambda InsightsとX-Rayの有効化をする場合は、この手順をスキップしてください)
- 関数名:適切なもの
- ランタイム:Node.js 18.x
ソースコードを以下のソースコードに置き換えデプロイします。
1秒スリープ後にレスポンスを返すソースコードになります。
const sleep = (m) => {
return new Promise((resolve) => setTimeout(resolve, m));
};
export const handler = async(event) => {
console.log("Start!");
await sleep(1000);
console.log("End!");
const response = {
statusCode: 200,
body: JSON.stringify('Hello from Lambda!'),
};
return response;
};
ロールの設定
次のロールを割り当てます。
Lambda InsightsとX-Rayを開始するために必要な権限となります。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"logs:CreateLogGroup",
"xray:PutTraceSegments",
"xray:PutTelemetryRecords",
"logs:CreateLogStream",
"logs:PutLogEvents"
],
"Resource": [
"*"
]
}
]
}
Lambda InsightsとX-Rayを有効化(開始)する
「設定タブ→モニタリングおよび運用ツール」から開始します。
以下の画面で「拡張モニタリング」と「AWS X-Ray」をONにします。
Lambda InsightsとX-Rayの併用した場合にどんなことができるか
まず以下の手順でLambda InsightsとX-Rayを有効化した関数のパフォーマンスのモニタリング画面へいきます。
- シングルファンクションを選択する
- Lambda InsightsとX-Rayを有効化した関数を選択する
パフォーマンスのモニタリング画面の下の方に以下の表示があります。
トレース項目の表示リンクを押下するとX-Rayのトレース画面(以下の画面)に遷移し、パフォーマンスの可視化が可能です。
一部のリクエストにしか表示リンクがないのは、トレースがサンプリングで行われているためです。(X-Rayは全てをトレースしているわけではなく、サンプリングでトレースしている)
Lambda Insightsでシステムレベルのメトリクスを確認し、気になる箇所があればX-Rayでパフォーマンスを視覚的に確認することができます。
まとめ
Lambda InsightsとX-Rayを併用した場合にできることみてきましたー
便利そうですが、費用もかかるので調査等で必要な時だけ、Lambda InsightsとX-Rayを有効化し、不要な時は無効化しておいた方が良さそうです
X-Rayの料金
Lambda Insightsの料金