2017-12-26 13 views
0

AWS를 인프라 요구 사항에 사용하고 청구 및 원가 계산을 위해 특정 EC2 인스턴스로 전송 된 정확한 데이터 양을 알아야합니다 고객. AWS에서 이러한 유틸리티를 사용할 수 있습니까? 아니면이 문제에 어떻게 접근해야합니까?AWS에서 매월 클라우드를 통해 전송되는 데이터의 양을 계산하는 방법

우리의 아키텍처는 ec2 인스턴스 중 하나에 Node.js® 서버 인 api 서버가 간단합니다. 이것은 db2 서버 인 MongoDB®이 다른 ec2에있는 것으로 말하면서 우리는 웹 응용 프로그램 서버가 있습니다. 다시 Node.js®에 각도 웹 응용 프로그램을 실행합니다.

현재 우리는 ELB을 사용하지 않으며 로그인 정보 (즉, JWT Token의 조직 ID)로 클라이언트를 식별했습니다.

+0

먼저 시스템 아키텍처와 클라이언트 연결 방법을 설명하십시오. 직접 TCP 연결을하거나 HTTP를 사용합니까? ELB를 사용합니까? 고객을 어떻게 식별합니까? 액세스 토큰? 화이트 리스팅 IP? 다른 것? 이 모든 점들이 답에 직접적인 영향을줍니다. – kdgregory

+0

아키텍처와 관련하여 질문이 업데이트되었습니다. 다른 정보가 필요한 경우 알려 주시기 바랍니다. – Jeet

+0

ELB를 사용합니까? 고객을 어떻게 식별합니까? 액세스 토큰? 화이트 리스팅 IP? 다른 것? – kdgregory

답변

1

현재 아키텍처가 제공되면 요청 (및/또는 응답)에서 클라이언트 ID를 추출하고 content-length을 영구 저장 장치에 기록하는 노드 미들웨어 양식을 만들어야합니다. AWS 생태계 내에서 DynamoDB 또는 Kinesis 또는 SQS까지 쓸 수 있습니다. AWS 에코 시스템 외부에서는 관계형 DB 또는 콘솔 로그에 로그 에이전트 형식으로 정보를 영구 저장소에 옮길 수 있습니다.

그러나, 여기에 데이터를 캡처하는 몇 가지 문제가 있습니다 : 콘솔에 로그인 이외의

  • 를, 각 요청에 시간을 추가합니다.
  • 콘솔에 로깅하는 경우 실제 요청과 영구 저장 장치에 로그가 전달되는 시간 사이에 시간 지연이 있습니다. 해당 간격으로 기기가 다운되면 데이터가 손실됩니다.
  • AWS 서비스를 사용할 때 속도 제한을 위해 준비해야합니다 (이것은 SQS가 Kinesis 또는 DynamoDB보다 나은 영역입니다).
  • 사용하는 방법에 관계없이 로그를 처리하기 위해 추가 코드를 작성해야합니다.

IMO는 URL에 클라이언트 ID를 추가하고 프런트 엔드 부하 분산을 위해 ELB를 추가하는 것이 좋습니다. 그런 다음 request logging을 켜고 AWS Athena 또는 다른 도구를 사용하여 로그를 분석합니다.

+0

이것은 내게 이상적인 해결책처럼 들리네. 나는 이것을 구현하고 업데이트 할 것이다. 그런 세부적인 해결책을 쓸 시간을내어 주셔서 감사합니다. – Jeet

0

VPC에서 이러한 EC2 인스턴스를 실행하는 경우 VPC Flow Logs을 사용하여 각 인스턴스가 전송하는 데이터의 양을 파악할 수 있습니다.

+1

이것은 좋은 대답 일 가능성이 있지만 설명이 필요합니다. 흐름 로그가 어떻게 생겼는지 (예를 들어 문서에있는 것 같음)와 OP가 고객에게 요금을 청구하는 데 필요한 정보를 추출하는 방법부터 시작하십시오. – kdgregory

+1

그리고 ELB가 혼합되어 있다면 분석이 어떻게 바뀌는 지 설명해야합니다. – kdgregory