AWS Lambda의 메모리 사용률을 CloudWatch에서 시각화하는 일련의 단계

6241 단어 람다CloudWatchAWS
AWS Lambda에는 Lambda 함수의 실행 시간, 실행 횟수 등이 기록되는 CloudWatch 지표가 표준으로 제공됩니다. 그러나 메모리 사용률에 대한 지표가 없습니다(2017-12-06 시점).

클래스 메소드사의 와타나베씨가 공개되고 있다 mem2cw를 사용하면 AWS Lambda의 메모리 사용률 지표를 CloudWatch에 추가 할 수가 있습니다. 꼭 AWS 공식으로 지원되고 싶은 곳이군요.

상기 링크처의 기사중에서는 상세한 순서가 생략되어 있었습니다. 그래서 AWS 역사가 얕은 나 같은 초보자를 위해 필요한 단계를 정리합니다.

전제



이 기사는 다음을 사용하여 확인했습니다.
  • aws-cli/1.11.129 Python/3.6.1
  • mem2cw ( 20ebd42551 )
  • jq (version 1.3)

  • 절차



    1. CloudFormation에서 mem2cw 만들기



    스택 생성은 동일한 AWS 계정의 동일한 리전이라면 기본적으로 한 번만 하면 충분하다고 생각합니다.
    그래서 이 기사에서는 나누어 GUI(CloudFormation 콘솔)를 사용합니다.mem2cw를 만들려는 지역이 많으면 CLI에서 스크립팅하는 것이 좋습니다.

    1-1. 템플릿 얻기



    Github 리포지토리htps : // 기주 b. 코 m / 와타 나베 슈지 / 메 m2cw를 clone하고 템플릿 파일mem2cw.yml을 가져옵니다.

    1-2. 스택 생성 화면으로 이동





    1-3. 템플릿 업로드



    템플릿 파일mem2cw.yml을 S3 업로드하고 CloudFormation으로 로드할 수 있습니다.


    1-4. 스택 이름을 붙인다



    스택 이름은 공란이므로 적절한 이름을 직접 입력해야 합니다.


    1-5. 필요에 따라 옵션 설정





    1-6. CAPABILITY를 확인하고 스택 생성


    mem2cw.yml 템플릿에는 특정 권한이 있는 IAM 역할이 필요합니다.
    조직의 보안 정책에 따라 IAM 역할을 직접 사용할 수 있지만 'CAPABILITY' 입력란의 확인란을 선택하여 자동으로 만들 수 있습니다.


    1-7. 스택이 생성될 때까지 기다린다.



    상황이 CREATE_COMPLETE가 되면 OK입니다.


    2. 메모리 사용률을 알고 싶은 Lambda 로그를 mem2cw에 모니터링



    CloudWatch 구독 필터란?



    서브스크립션 필터는 "특정 패턴(filter-pattern)에 매치하는 로그"가 로그 그룹에 출력되었을 때에 임의의 Lambda를 기동해, 무엇인가 처리시키는 구조입니다.
    mem2cw는 구독 필터를 사용하여 로그 그룹을 모니터링합니다.

    구독 필터 설정



    메모리 사용률을 시각화하고 싶은 Lambda 함수는 몇 가지가 있다고 생각합니다. 다수의 함수에 같은 설정을 손 입력으로 지정하는 것은 시간도 걸리고, 실수하기 쉽네요.

    따라서 다음과 같은 aws-cli 명령을 사용하여 일괄 지정하는 것이 좋습니다.
    # 自身の環境に合わせて修正します。
    region="XXXXXX"
    accountId="0000000000"
    memoryMetricsLambda="Lambda-memory-2-CloudWatc-PutMetricDataWhenFindMem-XXXXXXXXXXX"
    mem2cwLambdaARN="arn:aws:lambda:${region}:${accountId}:function:${memoryMetricsLambda}"
    env="DEV"
    
    # 「自分がメモリ使用率を見たいLambdaのロググループ」だけになるよう、`jq`で絞り込む条件を適宜修正します
    logGroups=$(aws logs describe-log-groups | jq --arg ENV $env '.logGroups[] | select(.logGroupName | (contains("/aws/lambda") and contains($ENV) )) | .logGroupName' -r)
    while read -r myLogGroup; do
        aws logs put-subscription-filter \
            --log-group-name ${myLogGroup} \
            --filter-name LambdaMemory \
            --filter-pattern "\"Memory Size:\"" \
            --destination-arn ${mem2cwLambdaARN}
    done <<< "${logGroups}"
    

    3. 지표 사용



    대상 Lambda를 실행해보고 지표에 값이 표시되는지 확인하면 성공입니다.


    요약


  • Lambda 메모리 사용률을 지표로 만들기 mem2cw 놀라운
  • 저자의 클래스 메소드 회사 와타나베 씨, 감사합니다
  • CloudWath Logs 구독 필터를 사용하면 로그에 특정 패턴이 나타날 때 Lambda를 실행할 수 있습니다
  • 좋은 웹페이지 즐겨찾기