AWS Lambda+python에서 datag로 사용자 지정 지표 전송

소개



AWS Lambda 함수에서 datag로 커스텀 메트릭을 제출하는 방법의 메모입니다. 이번 구현에는 파이썬을 이용했습니다.

참고한 기사


  • datadog 자신의 블로그
  • htps //w w. 다만 ghq. 이 m / 그럼 / b ぉ g / 그냥 g ぁ mb이다 ぁ ぁ r /
  • datadog 회사 "사용자 정의 메트릭"
  • htps : // / cs. 다만 ghq. 코 m / 그럼 / 세 r ゔ ぇ r s / ku s와 m_ 메 t cs /

  • 실제로 한 일



    함수 만들기



    우선 함수를 작성. 런타임은 python3.8을 만듭니다.



    레이어 추가



    온프레 서버에서 파이썬으로 커스텀 메트릭을 보낼 때는 pip 명령으로 datag 라이브러리를 추가하지만 Lambda이므로 레이어를 추가해 라이브러리를 사용할 수 있도록 합니다.
    datadog 자신이 레이어를 준비하고 있기 때문에 그것을 사용하기로 결정합니다.

    함수 개요 화면 하단으로 스크롤하여 레이어 추가를 클릭합니다.

    중략


    레이어 추가는 ARN을 지정하여 추가합니다.
    datadog가 레이어를 공개하기 때문에 여기에서 최신 버전을 선택해야합니다.
    htps : // 기주 b. 코 m / 그냥 g / 그냥 g ぁ

    이번 함수는 python3.8에서 구현하기 위해 다음 ARN을 사용합니다.
    - arn:aws:lambda::464622532012:layer:Datadog-Python38:42

    나는 도쿄 지역 (ap-northeast-1)에서 함수를 구현했으므로 다음 ARN을 설정하기로 결정한다.
    arn:aws:lambda:ap-northeast-1:464622532012:layer:Datadog-Python38:42


    Lambda에서 환경 변수 설정



    datadog를 이용하기 위해서는 환경 변수의 설정도 필요하므로, 설정해 둡니다.
    datadog측에서 API 키를 발행해 두고, 아래와 같은 환경 변수를 설정합니다.
    - DD_API_KEY: API 키

    함수 구현



    나머지는 함수를 파이썬으로 구현하기 만하면됩니다.
    다음은 lambda.test_metrics라는 이름으로 99.99라는 메트릭 값을 보내는 프로그램입니다.

    lambda_function.py
    import json
    
    from datadog_lambda.metric import lambda_metric
    from datadog_lambda.wrapper import datadog_lambda_wrapper
    
    @datadog_lambda_wrapper
    def lambda_handler(event, context):
        tags = ['name:testapp']
        metric = "lambda.test_metrics"
        value = 99.99
        lambda_metric(metric, value, tags=tags)
        return {
            'statusCode': 200,
            'body': json.dumps('Hello from Lambda!')
        }
    

    결과



    datadog의 메트릭스 익스플로러에서 탐색해 보면 전송되고 있음을 알 수 있습니다.
    datadog에 익숙한 사람이라면 알고 싶습니다만, 메트릭스가 반영되기까지 조금 걸리므로 함수 실행 직후에 보러 가면 빠집니다.



    도전



    공식은 비동기 메트릭을 사용하도록 권장합니다 (환경 변수 : DD_FLUSH_TO_LOG 참조). 그러나 Datadog Forwarder를 사용해야하는 것 같습니다. 여기 편은 시도하면 다시 기사를 쓰기로 결정합니다.

    좋은 웹페이지 즐겨찾기