メインコンテンツまでスキップ
Sumo Logic Japanese

AWS Lambda ULM のログとメトリクスの収集

AWS Lambda ULM 用 Sumo Logic アプリケーションでログの収集を設定するための手順です。

このページでは、AWS Lambda ULM アプリケーションのデータソースと、ログおよびメトリクスの収集をセットアップする方法を説明します。

AWS Lambda ULM の収集について

AWS Lambda ULM アプリケーションは、AWS CloudWatch ログ、CloudTrail Lambda データ イベント、および AWS Lambda CloudWatch メトリクスを使用します。以下のセクションでは、このアプリケーションがこれらのデータ ソースを活用して AWS Lambda へのインサイトをどのように提供するかを説明します。

AWS CloudWatch ログ

AWS Lambda は、Lambda 関数をモニタリングして、Amazon CloudWatch 経由でメトリクスをレポートします。次いで、Lambda は関数で処理されたすべてのリクエストをログに記録し、AWS CloudWatch ログとして格納します。

AWS Lambda ULM 用 Sumo Logic アプリケーションは、CloudWatch からの Lambda ログを使用し、ご使用のアカウントのすべての Lambda 関数についての運用とパフォーマンスの傾向を視覚化して、メモリ使用量や実行時間などの実行に関する情報を関数バージョンやエイリアス別に分析できます。

CloudTrail Lambda データ イベント

CloudTrail Lambda データ イベントにより、Lambda 関数の実行アクティビティを継続的にモニタリングして、いつ誰が API コールを行ったかについての詳細を記録します。 

AWS Lambda 用 Sumo Logic アプリケーションは、Lambda 関数でアクティビティをキャプチャして記録する CloudTrail Lambda データ イベントを使用して、関数名、バージョン、AWS サービス、脅威詳細別に Lambda 関数の呼び出しへのインサイトを提供します。

CTDE-Flow.png

AWS Lambda CloudWatch メトリクス

AWS Lambda は、ユーザに代わって自動的に関数をモニタリングして、Amazon CloudWatch 経由で AWS Lambda メトリクスをレポートします。これらのメトリクスは、Amazon CloudWatch ソースを設定することで、ホスト型コレクタによって収集されます。 

AWS Lambda 用 Sumo Logic アプリケーションは、Lambda 関数呼び出し、ストリーム ベース呼び出しのイテレータ エイジ、エラー、デッド レター エラー、同時実行、予約されていない同時実行、期間、関数ごとのスロットリング、および時間ベースの比較へのインサイトを提供します。 

AWS Lambda ULM のログの収集 

このセクションでは、AWS Lambda ULM アプリケーションで使用されるログとメトリクス データについて説明します。 

ステップ 1.Amazon CloudWatch ログの収集

Sumo では、Amazon CloudWatch からいくつかの方法で Lambda ログを収集します。 

ステップ 2.CloudTrail Lambda データ イベントの収集

CloudTrail ソースを設定するには、次の手順を実行します。

  1. Amazon S3 バケットに、Sumo Logic へのアクセス権を与えます
  2. AWS アカウントで CloudTrail を使用してデータ イベントを設定します。
  3. ログが、Amazon S3 バケットに配信されることを確認します。
  4. AWS CloudTrail ソースを Sumo Logic に追加します。

ステップ 3.Amazon CloudWatch メトリクスの収集

Amazon CloudWatch メトリクスの収集方法については、「Amazon CloudWatch メトリクス ソース」を参照してください。

ログ メッセージのサンプル

Amazon CloudWatch ログ

{"id":"32563142671071560797760688825700039436306340248688066573","timestamp":1511808906799,"message":"REPORT RequestId: cf75cfa3-fe16-11e5-9b16-e3e4c70845f2 Duration: 50.23 ms Billed Duration: 100 ms Memory Size: 128 MB Max Memory Used: 24 MB ","requestID":null,"logStream":"2017/11/27/[Prod]1108153ced144f8cbb161aef096218d1","logGroup":"/aws/lambda/AWSlambda1"}

CloudTrail Lambda データ イベント

{ "eventVersion":"1.06", "userIdentity":{ "type":"IAMUser", "principalId":"AIDAJ45Q7YFFAREXAMPLE", "arn":"arn:aws:iam::111111111111:user/duc", "accountId":"111111111111", "accessKeyId":"AKIAIOSFODNN7EXAMPLE", "userName":"duc" }, "eventTime":"2017-11-27T19:05:20.524Z", "eventSource":"lambda.amazonaws.com", "eventName":"Invoke", "awsRegion":"us-west-1", "sourceIPAddress":"155.14.186.236", "userAgent":"aws-cli/1.11.129 Python/2.7.8 botocore/1.5.92", "requestParameters":{ "invocationType":"RequestResponse", "functionName":"arn:aws:lambda:us-west-1:111111111111:function:function237", "clientContext":"ew0KICAiB99udGV6lGtleSIgOiAiY29udGV4dHZhbEXAMPLE==" }, "responseElements":null, "additionalEventData":{ "functionVersion":"arn:aws:lambda:us-west-1:111111111111:function:function238:$LATEST" }, "requestID":"e38fb262-8f45-11e7-9845-e5f2f205b110", "eventID":"277a6881-66f4-4f3e-ade5-ba76255b7d93", "readOnly":false, "resources":[ { "accountId":"111111111111", "type":"AWS::Lambda::Function", "ARN":"arn:aws:lambda:us-west-1:111111111111:function:function239" } ], "eventType":"AwsApiCall", "managementEvent":false, "recipientAccountId":"111111111111" }

クエリのサンプル

CloudTrail Lambda 関数を呼び出した IAM ユーザ数

_sourceCategory=cloudtrail/lambda "lambda.amazonaws.com" Invoke | json field=_raw "eventName" as event_name | json field=_raw "sourceIPAddress" as src_ip | json field=_raw "requestParameters.functionName" as func_name nodrop | json field=_raw "additionalEventData.functionVersion" as func_version nodrop | parse regex field=func_name "\w+:\w+:\S+:[\w-]+:\S+:\S+:(?<function_name>[\S]+)$" | parse regex field=func_version "\w+:\w+:\S+:[\w-]+:\S+:\S+:(?<function_version>[\S]+:[\S ]+)$" | json field=_raw "userAgent" as user_agent | json field=_raw "userIdentity.type" as caller_type | json field=_raw "userIdentity.invokedBy"as invoked_by nodrop | json field=_raw "userIdentity.userName"as user_name nodrop | if (isNull(user_name), invoked_by, user_name ) as caller | if (isNull(invoked_by), user_name, invoked_by ) as caller | where caller_type = "IAMUser" | count by caller | sort by _count

使用最大メモリ量 (MB)

_sourceCategory=aws_lambda/lambda*| json "message","logStream","logGroup" | parse field=message "REPORT RequestId: *Duration: * ms\tBilled Duration: * ms \tMemory Size: * MB\tMax Memory Used: * MB" as RequestId, Duration,BilledDuration,MemorySize,MaxMemoryUsed | parse field=logstream "*/[*]*" as logstreamDate,version,logstreamID | parse field=loggroup "/aws/lambda/*" as function | timeslice 1h | sum(MaxMemoryUsed) as MaxMemoryUsed by function, _timeslice | sort by _timeslice
  • この記事は役に立ちましたか?