본문 바로가기
개발 환경/AWS

[AWS] AWS API Gateway 모니터링하기

by 우주다람쥐 2021. 4. 26.
반응형

모니터링은 서버 관리에서 굉장히 중요한 업무 중 하나 이다.

 

AWS API Gateway를 모니터링 하는 다양한 방법에 대해 알아보고 적용해 본다.

Serverless를 사용해 설정할 수 있는 방법과 AWS 콘솔에서 직접 설정하는 방법을 알아보자.

 

 

1. AWS API Gateway 모니터링 도구

AWS에서 지원하는 모니터링 도구는 다음과 같다.

 

 

- 관련 링크 : https://docs.aws.amazon.com/ko_kr/apigateway/latest/developerguide/monitoring_automated_manual.html

 

AWS의 모니터링 도구 - Amazon API Gateway

AWS의 모니터링 도구 AWS는 API Gateway를 모니터링하는 데 사용할 수 있는 다양한 도구를 제공합니다. 모니터링을 자동으로 수행하도록 구성할 수 있는 도구도 있지만, 수동 작업이 필요한 도구도

docs.aws.amazon.com

 

이 중에서 Serverless를 이용하여 설정할 수 있는 내용은 Amazon CloudWatch Logs 이다.

Amazon CloudWatch Events도 설정이 가능하나 정확히는 AWS Lambda 또는 Amazon EC2 등에 대한 설정 내용이므로 여기서는 다루지 않는다.

 

그리고 AWS 콘솔을 이용해서는 Amazon CloudWatch 경보와 AWS CloudTrail Log Monitoring에 대해 설정할 수 있다.

이 중에서 AWS CloudTrail Log Moitoring은 자동으로 Log를 쌓는다.

그러나 해당 Log의 분석을 하기 위해서는 분석툴이나 다른 다양한 AWS 서비스를 사용해야하므로 내용이 길어지기 때문에 여기서는 다루지 않겠다.

 

그래서 Serverless를 통해서는 Amazon CloudWatch Logs를 설정하고, 해당 데이터를 이용하여 Amazon CloudWatch 경보를 설정하는 방법에 대해 알아보겠다.

 

 

2. Serverless를 이용한 Amazon CloudWatch Logs 설정 방법

serverless.yml 파일에 해당 logs를 추가해서 CloudWatch를 설정할 수 있다.

 

provider:
  logs:
    restApi: true

 

위와 같이 설정하면 기본값으로 API Gateway logs를 사용할 수 있다.

관련 옵션을 상세하게 설정하는 방법은 아래와 같다.

 

provider:
  logs:
    restApi: # true (default)
      accessLogging: true
      format: 'requestId: $context.requestId'
      executionLogging: true
      level: INFO
      fullExecutionData: true 
      role: arn:aws:iam::123456:role
      roleManagedExternally: false
    websocket: # true (default)
      level: ERROR
    httpApi: # true (default)
      format: '{ "requestId":"$context.requestId", "ip": "$context.identity.sourceIp", "requestTime":"$context.requestTime", "httpMethod":"$context.httpMethod","routeKey":"$context.routeKey", "status":"$context.status","protocol":"$context.protocol", "responseLength":"$context.responseLength" }'
    frameworkLambda: true

 

  • accessLogging : 액세스 로깅을 활성화 또는 비활성화하는 선택적 구성이다. 기본값은 true이다.
  • format : 액세스 로깅에 사용할 로그 형식을 지정하는 선택적 구성이다.
  • executionLogging : 실행 로깅을 활성화 또는 비활성화하는 선택적 구성. 기본값은 true이다.
  • level : 실행 로깅에 사용할 로그 수준을 지정하는 선택적 구성이다. INFO 또는 ERROR로 설정할 수 있다.
  • fullExctionData : 실행 로깅에 대한 전체 요청 / 응답을 로깅할지 여부를 지정하는 선택적 구성이다. 기본값은 true이다.
  • roll : CloudWatch Logs를 관리 할 때 사용할 API Gateway의 기존 IAM 역할이다. 'role'이 구성되지 않은 경우 새 역할이 자동으로 생성된다.
  • frameworkLambda : 선택 사항, 프레임 워크에서 추가 한대로 사용자 지정 리소스 Lambda에 대한 CloudWatch 로그를 작성할지 여부에 대한 내용이다.

처음에는 기본 설정을 통해 로그가 어떻게 쌓이는지 확인하고, 이후에 개발한 프로그램에 맞게 설정을 변경해 주면 된다.

 

- 관련 링크 : https://www.serverless.com/framework/docs/providers/aws/guide/serverless.yml/

 

Serverless Framework - AWS Lambda Guide - Serverless.yml Reference

A list of all available properties on serverless.yml for AWS

www.serverless.com

 

3. AWS 콘솔에서 Amazon CloudWatch 경보 설정 방법

AWS 콘솔에서 CloudWatch에 접속 후 경보를 선택한다.

그리고 경보 생성을 선택하여 경보를 생성 작업을 시작한다.

 

 

지표 선택을 사용하여 원하는 지표를 추가한다.

 

 

원하는 지표를 찾아 본다.

먼저 ApiGateway를 지표를 선택한다.

 

 

그 다음 API 이름별을 선택한다.

 

 

여러 지표 중 예시로 4XXError를 선택해 한다.

이외에 다른 지표들도 필요에 따라 설정해주면 된다.

 

 

선택한 지표를 확인하고 조건을 지정한다.

기본값으로 사용하려면 다른 부분은 그대로 두고, 임계값만 지정해주면 된다.

 

 

경보 생성이 완료됐다.

그러면 해당 이름의 경보를 경보 목록에서 확인하실 수 있다.

상세 페이지에서 현재 API Gateway를 통한 통신에 문제가 없는지 확인하고, 안정적인 운영을 위해 관리해주면 된다.

반응형

댓글