X-Ray | さゆフィクション http://it.kensan.net aws wordpress などなどゆるーく書いてます Tue, 25 Apr 2023 21:22:38 +0000 ja hourly 1 https://wordpress.org/?v=6.9 https://it.kensan.net/wp-content/uploads/2023/03/cropped-icon-32x32.png X-Ray | さゆフィクション http://it.kensan.net 32 32 AWS Lambda InsightsとX-Rayを併用した場合にどんなことができるか https://it.kensan.net/lambda-insights-x-ray.html Thu, 23 Feb 2023 00:37:33 +0000 http://3.113.9.194/it/?p=509 Lambda InsightsとX-Rayを併用した場合にできることを記載します。

結論:Lambda Insightsでシステムレベルのメトリクスを確認し、気になる箇所があればX-Rayでパフォーマンスを視覚的に確認することができます。

Lambda Insightsと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の併用した場合にどんなことができるか

まず以下の手順でLambda InsightsとX-Rayを有効化した関数のパフォーマンスのモニタリング画面へいきます。

  1. CloudWatch->Lambda Insightsとメニューをたどる
  2. シングルファンクションを選択する
  3. Lambda InsightsとX-Rayを有効化した関数を選択する

パフォーマンスのモニタリング画面の下の方に以下の表示があります。

Lambda Insights パフォーマンスのモニタリング画面

Lambda Insights パフォーマンスのモニタリング画面

トレース項目の表示リンクを押下するとX-Rayのトレース画面(以下の画面)に遷移し、パフォーマンスの可視化が可能です。

一部のリクエストにしか表示リンクがないのは、トレースがサンプリングで行われているためです。(X-Rayは全てをトレースしているわけではなく、サンプリングでトレースしている)

X-Rayトレース

X-Rayトレース

Lambda Insightsでシステムレベルのメトリクスを確認し、気になる箇所があればX-Rayでパフォーマンスを視覚的に確認することができます。

まとめ

Lambda InsightsとX-Rayを併用した場合にできることみてきましたー

便利そうですが、費用もかかるので調査等で必要な時だけ、Lambda InsightsとX-Rayを有効化し、不要な時は無効化しておいた方が良さそうです

X-Rayの料金

AWS X-Ray 料金

Lambda Insightsの料金

Amazon CloudWatch Pricing
Explore Amazon CloudWatch pricing with AWS free tier. Simply pay for what you use. No up-front commitment or minimum fee.
]]>
AWS LambdaでX-Ray使用時のX-Ray画面の見方 https://it.kensan.net/lambda-x-ray-capture.html Tue, 21 Feb 2023 21:08:45 +0000 http://3.113.9.194/it/?p=498 LambdaでX-Ray使用時のX-Ray画面の見え方を見方について記載します。

X-Rayの有効化方法については以下の記事をご参照ください。

https://it.kensan.net/it/aws-lambda-x-ray-start-end.html

X-Rayではサービス全体の性能を見ることができるService Mapとリクエスト毎の性能を見ることができるTrace Mapがあります。

X-Ray画面の見方
  • Service Map
    • サービス全体の性能を見ることができる
  • Trace Map
    • リクエスト毎の性能を見ることができる
      • コールドスタートの情報も取得できます
        • とりあえず、コールドスタートを確認したい場合、ここまで読み飛ばしてくださいー

以下の公式サイトより、トレースは「サンプリングアルゴリズムを適用することで効率的なトレースを行う」とあるので、全てのリクエストの性能を確認できる訳ではない点が要注意です。

AWS X-Ray を使用した Lambda 関数呼び出しの視覚化 - AWS Lambda
Lambda で AWS X-Ray を使用してアプリケーションのコンポーネントを視覚化し、パフォーマンスを理解する

Service Mapの見方と見え方

AWSコンソールのX-Rayの画面からService Mapを選択します。

X-ray service map詳細

X-ray service map詳細

以下の情報が読み取れます。

  • 平均の応答速度
  • OK率
  • レスポンスディストリビューション
    • 応答速度の分布

Trace Mapの見方と見え方

AWSコンソールのX-Rayの画面からトレースを選択して、任意のリクエストを選択します。

X-Rayトレース

X-Rayトレース

  • 処理全体の所要時間
  • 以下の所要時間
    • Initialization
      • コールドスタートで要した時間
    • Invocation
    • Overhead

まとめ

LambdaでX-Rayを有効化後のX-Rayの使い方についてみてきました。

以下のことが確認できたと思います。

確認できたこと
  • Service Map
    • サービス全体の性能を見ることができる
  • Trace Map
    • リクエスト毎の性能を見ることができる
      • コールドスタートの情報も取得できる

また、Lambda 関数コード内の処理を AWS X-Ray でトレースすることもできます。具体的な方法は、以下のサイトを参考にさせてもらいましょ

Site not found · GitHub Pages
]]>
AWS LambdaでX-Rayを有効化する方法と無効化する方法 https://it.kensan.net/aws-lambda-x-ray-start-end.html Tue, 21 Feb 2023 20:34:08 +0000 http://3.113.9.194/it/?p=493 LambdaでX-Rayを有効化する方法と無効化する方法について記載します。

X-Rayを有効化するには、以下の設定を行うだけで簡単に始められます

有効化の設定
  • 新規関数作成時
    • 関数の作成
    • ロールの設定
    • X-Rayの設定
  • 既存関数使用時
    • ロール設定
    • X-Rayの設定

X-Rayの使い方は以下の記事をご参照ください

https://it.kensan.net/it/lambda-x-ray-capture.html

X-Rayを無効化したい場合は「AWS X-Rayの無効化(終了)方法」まで読み飛ばして大丈夫です。

それでは、関数作成して、X-Rayの有効化をしていきます

X-Rayの有効化

関数作成して、X-Rayを有効化していきます。

やること

関数の作成
→既存関数のX-Rayを有効化する場合はこのステップはスキップしてください
ロールの設定
X-Rayの設定

Lambda関数の作成

Lambda関数を作成します。既存関数のX-Rayを有効化する場合はこのステップはスキップしてください。

  • 関数名:適切なもの
  • ランタイム:Node.js 18.x

Lambda関数作成

ソースコードを以下のソースコードに置き換えデプロイします。

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のロール設定

X-Rayを開始するために必要なロールを割り当てます。

必要なロールは、トレースデータをアップロードするロールとなります。具体的には以下の設定を追加すれば大丈夫です。


{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "xray:PutTraceSegments",
                "xray:PutTelemetryRecords"
            ],
            "Resource": [
                "*"
            ]
        }
    ]
}

X-Rayを有効化(開始)する

「設定タブ→モニタリングおよび運用ツール」から開始します。

以下の画面で「AWS X-Ray」をONにします。

Lambda X-Ray 有効化

Lambda X-Ray 有効化

AWS X-Rayの確認

AWS X-Rayコンソール画面にアクセスし、Service Mapを選択して、以下のような画面が表示されればOKです。

X-ray service map

X-ray service map

AWS X-Rayの無効化(終了)方法

Lambda関数の「設定タブ→モニタリングおよび運用ツール」から終了します。

AWS X-Ray」をOFFにすればOKです。

Lambda X-Ray 有効化

Lambda X-Ray 有効化

まとめ

LambdaのX-Rayの有効化と無効化の切り替えは簡単に行えることが確認できましたー

X-Rayは有料ですので、パフォーマンスに問題発生時など調査が必要な時だけ有効化、不要な時は無効化した方がいいと思います。

料金の詳細は以下を参照していただければと思いますが、Lambda関数の実行数に応じて(トレースする数に応じて)料金も増えていくので、実行数が多い場合は要注意かと思いますー

AWS X-Ray 料金
]]>