4.3.9 Use Logs to Identify Bottlenecks

Use Application Logs to Identify Performance Bottlenecks

CloudWatch Logs Insights Queries

-- Top 10 slowest Lambda invocations
fields @duration, @requestId, @message
| sort @duration desc
| limit 10

-- P50, P90, P99 latency
stats pct(@duration, 50) as p50,
      pct(@duration, 90) as p90,
      pct(@duration, 99) as p99
by bin(1h)

-- Cold start frequency
filter @message like /Init Duration/
| stats count(*) as coldStarts by bin(5m)

-- Memory usage trends
filter @type = "REPORT"
| stats max(@maxMemoryUsed) as maxMem,
        avg(@duration) as avgDuration
by bin(1h)

-- Error patterns
filter @message like /ERROR/
| stats count(*) as errorCount by @message
| sort errorCount desc
| limit 10

Lambda Duration Analysis

-- Find functions approaching timeout
filter @type = "REPORT"
| filter @duration > 10000
| fields @requestId, @duration, @maxMemoryUsed
| sort @duration desc

API Gateway Latency

-- Slow API calls
fields @timestamp, httpMethod, resourcePath, status, responseLatency
| filter responseLatency > 1000
| sort responseLatency desc
| limit 20

Subscription Filters

  • Stream logs to Lambda/Kinesis/OpenSearch in real-time
  • Pattern matching on log events
  • Use for alerting on specific patterns
CloudWatch Logs → Subscription Filter → Lambda → Alert/Process

Exam Tip: Logs Insights pct() for percentile analysis. filter @type = "REPORT" for Lambda performance data. Subscription filters for real-time log processing.