

# Amazon CloudWatch Lambda Insights を使用した関数パフォーマンスのモニタリング
<a name="monitoring-insights"></a>

Amazon CloudWatch Lambda Insights は、サーバーレスアプリケーションの Lambda 関数ランタイムパフォーマンスメトリクスとログを収集および集計します。このページでは、Lambda Insights を有効にして Lambda 関数に関する問題の診断に使用する方法について説明します。

**Topics**
+ [Lambda Insights によるサーバーレスアプリケーションのモニタリング方法](#monitoring-insights-how)
+ [料金](#monitoring-insights-pricing)
+ [ランタイムのサポート](#monitoring-insights-runtimes)
+ [Lambda コンソールで Lambda Insights を有効にする](#monitoring-insights-enabling-console)
+ [Lambda Insights をプログラムで有効にする](#monitoring-insights-enabling-programmatically)
+ [Lambda Insights ダッシュボードの使用](#monitoring-insights-multifunction)
+ [関数の異常を検出するワークフローの例](#monitoring-insights-anomalies)
+ [クエリを使用して関数のトラブルシューティングを行うワークフローの例](#monitoring-insights-queries)
+ [次のステップ](#monitoring-console-next-up)

## Lambda Insights によるサーバーレスアプリケーションのモニタリング方法
<a name="monitoring-insights-how"></a>

CloudWatch Lambda Insights は、 で実行されているサーバーレスアプリケーション用のモニタリングおよびトラブルシューティングソリューションですAWS Lambda このソリューションでは、CPU 時間、メモリ、ディスク、ネットワーク使用率などのシステムレベルのメトリクスが収集、集約、要約されます。また、コールドスタートや Lambda ワーカーシャットダウンなどの診断情報が収集、集約、要約されるため、Lambda 関数に関する問題を特定し、迅速に解決できます。

Lambda Insights は、[Lambda レイヤー](chapter-layers.md)として提供される新しい CloudWatch Lambda [拡張機能](https://docs.aws.amazon.com/lambda/latest/dg/lambda-extensions.html)を使用します。この拡張機能を、サポートされているランタイムで、Lambda 関数で有効にすると、システムレベルのメトリクスが収集され、その Lambda 関数の呼び出しごとに 1 つのパフォーマンスログイベントが発生します。CloudWatch は、埋め込みメトリクスフォーマットを使用して、ログイベントからメトリクスを抽出します。詳細については、「[AWS Lambda 拡張機能の使用](https://docs.aws.amazon.com/lambda/latest/dg/lambda-extensions.html)」を参照してください。

Lambda Insights レイヤーは、`/aws/lambda-insights/` ロググループ用に `CreateLogStream` および `PutLogEvents` を拡張します。

## 料金
<a name="monitoring-insights-pricing"></a>

Lambda 関数に対して Lambda Insights を有効にすると、Lambda Insights は関数ごとに 8 つのメトリックスを報告し、関数呼び出しごとに約 1 KB のログデータが CloudWatch に送信されます。料金は、Lambda Insights によって関数に関してレポートされたメトリックスとログに対してのみ発生します。最低料金やサービス使用義務はありません。関数が呼び出されない場合、Lambda Insights に対する支払いはありません。料金の例については、[Amazon CloudWatch の料金](https://aws.amazon.com/cloudwatch/pricing/)を参照してください。

## ランタイムのサポート
<a name="monitoring-insights-runtimes"></a>

Lambda Insights は、[Lambda 拡張機能](runtimes-extensions-api.md)をサポートする任意のランタイムで使用できます。

## Lambda コンソールで Lambda Insights を有効にする
<a name="monitoring-insights-enabling-console"></a>

新規および既存の Lambda 関数で、Lambda Insights 拡張モニタリングを有効にできます。サポートされているランタイムの Lambda コンソールの関数で Lambda Insights を有効にすると、Lambda は Lambda Insights [拡張機能](https://docs.aws.amazon.com/lambda/latest/dg/lambda-extensions.html)をレイヤーとして関数に追加し、関数の[実行ロール](https://docs.aws.amazon.com/lambda/latest/dg/lambda-intro-execution-role.html)に必要な [https://console.aws.amazon.com/iam/home#/policies/arn:aws:iam::aws:policy/CloudWatchLambdaInsightsExecutionRolePolicy$jsonEditor](https://console.aws.amazon.com/iam/home#/policies/arn:aws:iam::aws:policy/CloudWatchLambdaInsightsExecutionRolePolicy$jsonEditor) ポリシーを検証するか、アタッチしようとします。

**Lambda コンソールで Lambda Insights を有効にするには**

1. Lambda コンソールの [[関数ページ]](https://console.aws.amazon.com/lambda/home#/functions) を開きます。

1. 関数を選択します。

1. [**設定**] タブを選択します。

1. 左側のメニューで **[モニタリングおよび運用ツール]** を選択します。

1. **[その他の監視ツール]** ペインで、**[編集]** を選択します。

1. **[CloudWatch Lambda インサイト]** で、**[拡張モニタリング]** をオンにします。

1. [**Save**] を選択します。

## Lambda Insights をプログラムで有効にする
<a name="monitoring-insights-enabling-programmatically"></a>

Lambda Insights は、AWS Command Line Interface (AWS CLI)、AWS Serverless Application Model (SAM) CLI、CloudFormation、または、AWS Cloud Development Kit (AWS CDK)を使用して有効にすることもできます。Lambda Insights を、プログラムを使って、サポートされているランタイムの関数で有効にすると、CloudWatch は、[https://console.aws.amazon.com/iam/home#/policies/arn:aws:iam::aws:policy/CloudWatchLambdaInsightsExecutionRolePolicy$jsonEditor](https://console.aws.amazon.com/iam/home#/policies/arn:aws:iam::aws:policy/CloudWatchLambdaInsightsExecutionRolePolicy$jsonEditor) ポリシーを関数の[実行ロール](https://docs.aws.amazon.com/lambda/latest/dg/lambda-intro-execution-role.html)にアタッチします。

詳細については、*Amazon CloudWatch ユーザーガイド*の [Lambda Insights を使用する](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/Lambda-Insights-Getting-Started.html)を参照してください。

## Lambda Insights ダッシュボードの使用
<a name="monitoring-insights-multifunction"></a>

Lambda Insights のダッシュボードには、CloudWatch コンソールに multi-function overview と single-function view という 2 つの画面があります。multi-function overview では、現在の AWS アカウントとリージョンの Lambda 関数のランタイムメトリクスが集計されます。single-function view では、単一の Lambda 関数で使用可能なランタイムメトリクスが表示されます。

Lambda Insights ダッシュボードの CloudWatch コンソールにある multi-function overview を使用して、使用率の高い Lambda 関数と使用率の低い Lambda 関数を識別できます。Lambda Insights ダッシュボードの CloudWatch コンソールにある single-function view を使用して、個々のリクエストのトラブルシューティングを行うことができます。

**すべての関数のランタイムメトリクスを表示するには**

1. CloudWatch コンソールで [[Multi-function (複数の関数)](https://console.aws.amazon.com/cloudwatch/home#lambda-insights:performance)] ページを開きます。

1. 定義済みの時間範囲から選択するか、カスタムの時間範囲を選択します。

1. (オプション) CloudWatch ダッシュボードにウィジェットを追加するには、[**Add to dashboard (ダッシュボードに追加)**] を選択します。  
![\[Lambda Insights ダッシュボードの multi-function overview。\]](http://docs.aws.amazon.com/ja_jp/lambda/latest/dg/images/lambdainsights-multifunction-view.png)

**1 つの関数のランタイムメトリクスを表示するには**

1. CloudWatch コンソールで [[Single-function (単一の関数)](https://console.aws.amazon.com/cloudwatch/home#lambda-insights:functions)] ページを開きます。

1. 定義済みの時間範囲から選択するか、カスタムの時間範囲を選択します。

1. (オプション) CloudWatch ダッシュボードにウィジェットを追加するには、[**Add to dashboard (ダッシュボードに追加)**] を選択します。  
![\[Lambda Insights ダッシュボードの single-function view。\]](http://docs.aws.amazon.com/ja_jp/lambda/latest/dg/images/lambainsights-singlefunction-view.png)

詳細については、[CloudWatch ダッシュボードでのウィジェットの作成と操作](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/create-and-work-with-widgets.html)を参照してください。

## 関数の異常を検出するワークフローの例
<a name="monitoring-insights-anomalies"></a>

Lambda Insights ダッシュボードの multi-function overview を使用して、関数でのコンピュートメモリの異常を特定および検出できます。例えば、multi-function overview で、関数が大量のメモリを使用していることが示されている場合、[**Memory Usage**] ペインで詳細なメモリ使用率メトリクスを表示できます。その後、[Metrics] ダッシュボードに移動して、異常検出を有効にするか、アラームを作成できます。

**関数の異常検出を有効にするには**

1. CloudWatch コンソールで [[Multi-function (複数の関数)](https://console.aws.amazon.com/cloudwatch/home#lambda-insights:performance)] ページを開きます。

1. [**Function summary**] で、関数の名前を選択します。

   single-function view が開き、関数のランタイムメトリクスが表示されます。  
![\[Lambda Insights ダッシュボードの関数概要ペイン。\]](http://docs.aws.amazon.com/ja_jp/lambda/latest/dg/images/lambdainsights-function-summary.png)

1. [**Memory Usage**] ペインで、3 つの縦のドットを選択し、[**View in metrics**] を選択して [**Metrics**] ダッシュボードを開きます。  
![\[[Memory Usage (メモリ使用状況)] ペインのメニュー。\]](http://docs.aws.amazon.com/ja_jp/lambda/latest/dg/images/lambdainsights-memory-usage.png)

1. [**Graphed Metrics**] タブの [**Actions**] 列で、最初のアイコンを選択して関数の異常検出を有効にします。  
![\[[Memory Usage (メモリ使用状況)] ペインの [Graphed Metrics (グラフ化されたメトリクス)] タブ\]](http://docs.aws.amazon.com/ja_jp/lambda/latest/dg/images/lambdainsights-graphed-metrics.png)

詳細については、[CloudWatch の異常検出の使用方法](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch_Anomaly_Detection.html)を参照してください。

## クエリを使用して関数のトラブルシューティングを行うワークフローの例
<a name="monitoring-insights-queries"></a>

Lambda Insights ダッシュボードの single-function view を使用して、関数の所要時間が急増する根本原因を特定できます。例えば、multi-function overview で関数の所要時間が大きく増加している場合は、[**Duration**] ペインで一時停止するか、各関数を選択して、どの関数が増加の原因になっているかを判断できます。次に、single-function view に移動し、[**Application logs**] を確認して、根本原因を特定できます。

**関数に対してクエリを実行するには**

1. CloudWatch コンソールで [[Multi-function (複数の関数)](https://console.aws.amazon.com/cloudwatch/home#lambda-insights:performance)] ページを開きます。

1. [**Duration**] ペインで、所要時間メトリクスをフィルタリングする関数を選択します。  
![\[[Duration (所要時間)] ペインで選択された関数。\]](http://docs.aws.amazon.com/ja_jp/lambda/latest/dg/images/lambdainsights-choose-function.png)

1. [[Single-function (単独の関数)](https://console.aws.amazon.com/cloudwatch/home#lambda-insights:functions)] ページを開きます。

1. [**Filter metrics by function name**] ドロップダウンリストを選択し、関数を選択します。

1. [**Most recent 1000 application logs**] を表示するには、[**Application logs**] タブを選択します。

1. [**Timestamp**] と [**Message**] を確認し、トラブルシューティングを行う呼び出しリクエストを特定します。  
![\[alt text not found\]](http://docs.aws.amazon.com/ja_jp/lambda/latest/dg/images/lambdainsights-application-logs.png)

1. **最新の 1000 の呼び出し**] を表示するには、[**Invocations (呼び出し)**] タブを選択します。

1. トラブルシューティングを行う呼び出しリクエストの [**Timestamp**] または [**Message**] を選択します。  
![\[最近の呼び出しリクエストを選択します。\]](http://docs.aws.amazon.com/ja_jp/lambda/latest/dg/images/lambdainsights-invocations-function-select.png)

1. [**View logs**] ドロップダウンリストを選択し、[**View performance logs**] を選択します。

   関数の自動生成されたクエリが [**Logs Insights**] ダッシュボードで開きます。

1. [**Run query**] を選択して、呼び出しリクエストの [**Logs**] メッセージを生成します。  
![\[[Logs Insights] (ログインサイト) ダッシュボードで選択した関数をクエリします。\]](http://docs.aws.amazon.com/ja_jp/lambda/latest/dg/images/lambdainsights-query.png)

## 次のステップ
<a name="monitoring-console-next-up"></a>
+ CloudWatch Logs ダッシュボードの作成方法については、*Amazon CloudWatch ユーザーガイド*の [Create a Dashboard](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/create_dashboard.html) を参照してください。
+ CloudWatch Logs ダッシュボードにクエリを追加する方法については、*Amazon CloudWatch ユーザーガイド*の [Add Query to Dashboard or Export Query Results](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/CWL_ExportQueryResults.html) を参照してください。