[role="xpack"]
[[apm-lambda]]
=== Observe Lambda functions

Elastic APM provides performance and error monitoring for AWS Lambda functions.
Get insight into function execution and runtime behavior, as well as visibility into how your Lambda functions relate to and depend on other services.

To set up Lambda monitoring, see the relevant
{apm-guide-ref}/monitoring-aws-lambda.html[quick start guide].

[float]
[[apm-lambda-cold-start-info]]
==== Cold starts

A cold start occurs when a Lambda function has not been used for a certain period of time. A lambda worker receives a request to run the function and prepares an execution environment.

Cold starts are an unavoidable byproduct of the serverless world, but visibility into how they impact your services can help you make better decisions about factors like how much memory to allocate to a function, whether to enable provisioned concurrency, or if it's time to consider removing a large dependency.

[float]
[[apm-lambda-cold-start-rate]]
===== Cold start rate

The cold start rate (i.e. proportion of requests that experience a cold start) is displayed per service and per transaction.

[role="screenshot"]
image::apm/images/lambda-cold-start.png[lambda cold start graph]

Cold start is also displayed in the trace waterfall, where you can drill-down into individual traces and see trace metadata like AWS request ID, trigger type, and trigger request ID.

[role="screenshot"]
image::apm/images/lambda-cold-start-trace.png[lambda cold start trace]

[float]
[[apm-lambda-cold-start-latency]]
===== Latency distribution correlation

The <<correlations-latency,latency correlations>> feature can be used to visualize the impact of Lambda cold starts on latency--just select the `faas.coldstart` field.

[role="screenshot"]
image::apm/images/lambda-correlations.png[lambda correlations example]

[float]
[[apm-lambda-service-config]]
==== AWS Lambda function grouping

The default APM agent configuration results in one APM service per AWS Lambda function,
where the Lambda function name is the service name.

In some use cases, it makes more sense to logically group multiple lambda functions under a single
APM service. You can achieve this by setting the `ELASTIC_APM_SERVICE_NAME` environment variable
on related Lambda functions to the same value.
