Datadog enhanced AWS Lambda metrics 사용해 보기

8571 단어 람다DatadogAWS

enhanced AWS Lambda metrics란 무엇입니까?




Datadog에서 AWS를 연동하면 나오는 기본 대시보드 안에 존재하는 수수께끼 녀석(그림의 하단)



일단 열어도 정보가 없으며 하단 Invocations 값이 포함되어 있지만 상단 Invocations에는 값이 없습니다.

참조 소스 메트릭을 살펴보면 다른 것을 참조합니다.
상단 : aws.lambda.enhanced.invocations하단 : aws.lambda.invocations
enhanced는 어디에서 얻는가?

Lambda의 향상된 정보를 얻는 방법



대시보드의 맨 위에 확장 Lambda 지표 을 설정하여 찍혀 있으므로 설정 방법이 걸린 페이지로 이동합니다.

유효한 방법이 있습니다 (영어 모르겠습니다)


영어를 모르게 읽으면
1. Datadog Forwarder 설정
2. 지표를 얻고자 하는 Lambda의 Lambda Layer에 Datadog Lambda Layer
3. Lambda 태그를 Datadog 메트릭에 유용하고 싶다면 Datadog Forwarder 측에 DdFetchLambdaTags : true 의 변수를 부여한다
4. 샘플 코드 와 같이 Datadog의 Library로 랩한다(python이라면 데코레이터 부여하는 것만으로 좋을 것 같다)
5. 브라우저에서 조만간 대시보드 확인

좋은 시도해 보겠습니다.

Datadog Forwarder 설정



Datadog Forwarder 를 보러 가면 CloudFormation 템플릿 이 있었기 때문에 이용합니다.

템플릿에는 다음을 설정(설정한 것 이외는 기본값)
  • DdFetchLambdaTags : true
  • DdApiKey : 自身のDatadogのAPIキー


  • IAM 또는 리소스를 만들 수 있는지 묻기 때문에 확인하십시오 Create Stack

    Datadog Layer를 사용한 샘플 코드 작성



    무엇이든 좋을 것 같아 Python3의 hello-world의 Blueprint를 이용합니다.


    function명만 지정해 Create(이번은 test라고 이름)

    Datadog Lambda Layer를 만든 코드에 추가



    [Datadog Lambda Layer] htps : // / cs. 다만 ghq. 코 m/그리고 g라치온 s/아마죤_아 mb다/? b = 아 ws 안녕하세요 # # s s ぃ ん ぃ
    현재 python3.7의 경우 arn:aws:lambda:us-east-1:464622532012:layer:Datadog-Python37:11
    이것을 사용합니다.


    샘플 람다 Layers를 선택하면 Add a Layer

    이전 Datadog Layer 입력



    추가되었습니다.

    Datadog 라이브러리로 샘플 코드 랩



    코드에 이 두 줄 추가from datadog_lambda.wrapper import datadog_lambda_wrapper@datadog_lambda_wrapper
    전체상

    lambda_function.py
    import json
    from datadog_lambda.wrapper import datadog_lambda_wrapper
    
    print('Loading function')
    
    
    @datadog_lambda_wrapper
    def lambda_handler(event, context):
        #print("Received event: " + json.dumps(event, indent=2))
        print("value1 = " + event['key1'])
        print("value2 = " + event['key2'])
        print("value3 = " + event['key3'])
        return event['key1']  # Echo back the first key value
        #raise Exception('Something went wrong')
    

    샘플 코드에 환경 변수 추가



    전단의 상태에서 테스트 실행해도 에러가 되므로 아래 환경 변수를 추가
  • DD_API_KEY : 自分のDatadogのAPIキー

  • 일단 이것만으로 움직이게 됩니다만, 결과 이것만으로는 하고 싶은 것에 부족하지 않았으므로 이하의 환경 변수도 추가합니다.
  • DD_ENHANCED_METRICS : true
  • Enhanced 메트릭 사용

  • DD_FLUSH_TO_LOG : true
  • 설정되어 있지 않으면 활성화 된 Enhanced 메트릭이 CloudWatch Logs가 될 수 없습니다.


  • CloudWatch Logs에 Enhanced 지표에 대한 데이터가 흐릅니다.



    샘플 코드의 설정이 끝나고 테스트 실행하면 다음과 같은 로그가 흐르게 된다.
    {
    "m": "aws.lambda.enhanced.invocations",
    "v": 1,
    "e": 1590216872,
    "t": [
    "region:us-east-1",
    "account_id:xxxxxxxx",
    "functionname:test",
    "cold_start:true",
    "memorysize:128",
    "runtime:python3.7",
    "dd_lambda_layer:datadog-python37_0.11.0"
    ]
    }

    Datadog Forwarder에 샘플 코드의 Logs 연결



    우선, 전단의 상태로 테스트 실행해도, aws.lambda.invocations 의 값은 증가하지만aws.lambda.enhanced.invocations 에 변화는 보이지 않는다.

    Datadog Forwarder의 Readme를 보면Set up triggers to the installed Forwarder either automatically or manually.라고 써 있으므로 샘플 코드의 Logs를 묶는다


    동작 확인



    샘플 코드(test)를 시험에 3회 연속으로 실행해 보았다



    Invocations등에 값이 들어가게 된, 3연속 때문인지, Invocations는 3으로 Cold Starts가 1이 되었다.



    메모리 소비 상황 등도 볼 수있는 것 같습니다.

    요약



    Datadog의 향상된 AWS Lambda metrics를 사용할 수 있도록 시도했습니다.
    일반 Lambda 대시보드와 달리 Cold_start의 상황이나 메모리의 소비 상황 등을 확인할 수 있으므로 Lambda의 스펙 등을 튜닝할 때 등에 쉽지 않은 것 같습니다.

    좋은 웹페이지 즐겨찾기