서버리스 애플리케이션을 위한 10가지 CloudWatch Logs Insights 예시

CloudWatch Logs Insights는 Amazon CloudWatch Logs에서 로그 데이터를 대화식으로 검색하고 분석할 수 있는 CloudWatch 기능입니다. 쿼리를 수행하여 운영 문제에 보다 효율적이고 효과적으로 대응하고, 문제를 진단하고, 애플리케이션 성능 문제를 해결할 수 있습니다.

CloudWatch Logs Insights syntax은 배우기 어려울 수 있으므로 이 게시물에는 서버리스 엔지니어로서 일상 업무에서 유용한 서버리스 애플리케이션에 대한 10가지 CloudWatch Logs Insights 예제가 포함되어 있습니다.

지정된 요청 ID 또는 X-Ray 트레이스 ID에 대한 모든 로그 찾기




fields @timestamp, @message
| filter @message like /REQUEST_ID_GOES_HERE/


참고: /REQUEST_ID_GOES_HERE/는 검색하려는 실제 요청 ID/xRayTraceId의 자리 표시자입니다. /something/는 정규식입니다.

최근 오류 50개 찾기




fields Timestamp, LogLevel, Message
| filter LogLevel == "ERR"
| sort @timestamp desc
| limit 50


가장 비용이 많이 드는 Lambda 함수 호출 찾기




filter @type = "REPORT"
| fields @requestId, @billedDuration
| sort by @billedDuration desc


Lambda 함수에 대한 5분 간격의 지연 시간 통계 보기




filter @type = "REPORT"
| stats avg(@duration), max(@duration), min(@duration) by bin(5m)


Lambda 함수에 대해 초과 프로비저닝된 메모리 양 결정




filter @type = "REPORT"
| stats max(@memorySize / 1024 / 1024) as provisonedMemoryMB,
  min(@maxMemoryUsed / 1024 / 1024) as smallestMemoryRequestMB,
  avg(@maxMemoryUsed / 1024 / 1024) as avgMemoryUsedMB,
  max(@maxMemoryUsed / 1024 / 1024) as maxMemoryUsedMB,
  provisonedMemoryMB - maxMemoryUsedMB as overProvisionedMB


메모:

Lambda allocates CPU power in proportion to the amount of memory configured. Memory is the amount of memory available to your Lambda function at runtime. You can increase or decrease the memory and CPU power allocated to your function using the Memory (MB) setting.



API Gateway 실행 로그에서 200이 아닌 오류 찾기




fields @timestamp, @message, @requestId, @duration, @xrayTraceId, @logStream, @logStream
| filter
   @message like /fail/ or
   @message like /timed/ or
   @message like /X-Amz-Function-Error/ or
   @message like /tatus: 4/ or
   @message like /tatus: 5/
| sort @timestamp desc


Lambda 함수의 콜드 스타트 ​​수, 평균 초기화 시간 및 최대 초기화 기간을 계산합니다.




filter @type="REPORT"
| fields @memorySize / 1000000 as memorySize
| filter @message like /(?i)(Init Duration)/
| parse @message /^REPORT.*Init Duration: (?<initDuration>.*) ms.*/
| parse @log /^.*\/aws\/lambda\/(?<functionName>.*)/
| stats count() as coldStarts, avg(initDuration) as avgInitDuration, max(initDuration) as maxIntDuration by functionName, memorySize


시간 경과에 따른 Lambda 콜드 스타트 ​​비율




filter @type = "REPORT"
| stats
  sum(strcontains(
    @message,
    "Init Duration"))
  / count(*)
  * 100
  as coldStartPercentage,
  avg(@duration)
  by bin(5m)


크레딧: https://github.com/julianwood/serverless-cloudwatch-logs-insights-examples

평균 기간, 최대 기간, 최소 기간, P99 백분위수 기간 및 요청 수 표시




filter @type = "REPORT"
| stats avg(@duration), max(@duration), min(@duration), pct(@duration, 99), count(@duration) by bin(5m)


정보 로그를 제외하여 Lambda 오류만 강조 표시




fields @timestamp, @message
| sort @timestamp desc
| filter @message not like 'EXTENSION'
| filter @message not like 'Lambda Insights'
| filter @message not like 'INFO'
| filter @message not like 'REPORT'
| filter @message not like 'END'
| filter @message not like 'START'



CloudWatch Logs Insights 쿼리는 무료가 아닙니다(프리 티어가 있긴 하지만). 예를 들어 us-east-1에서 AWS는 쿼리에 대해 스캔한 데이터 GB당 0.005 USD를 청구합니다. Amazon CloudWatch FAQ에 따르면 실패한 쿼리에 대해 요금이 부과되지 않으며 쿼리를 수동으로 취소하는 경우 쿼리를 취소한 시점까지 스캔된 수집된 로그 데이터의 양에 대해 요금이 부과됩니다.

자세한 내용은 https://aws.amazon.com/cloudwatch/pricing/에서 확인하십시오.


로그를 파악하십시오. ⚡️





서버리스 서비스 성능, 호출, 오류 등을 모니터링하기 위한 데스크탑 앱인 Cloudash을 소개합니다.

지난 주에 생산 사건이 발생했습니까? 아니면 20초 전? Cloudash를 사용하면 서버리스 로그 및 메트릭을 쉽게 검색, 필터링 및 탐색할 수 있습니다.

원할 때마다 원하는 것을 검색하십시오. Cloudash에는 필터링 기능이 내장되어 있어 그 어느 때보다 빠르게 문제를 해결할 수 있습니다.

시작하기here .

좋은 웹페이지 즐겨찾기