如何计算每月在云中通过云传输的数据量

时间:2017-12-26 06:58:25

标签: node.js mongodb amazon-web-services amazon-ec2

我们正在使用AWS来满足我们的基准要求,出于计费和成本核算的目的,我们需要知道为特定客户传输到EC2实例的确切数据量。 AWS中是否有任何此类实用程序可用,或者我应该如何处理此问题。

我们的体系结构很简单我们有一个api服务器,它是ec2实例之一的Node.js®服务器,它与另一个ec2上的MongoDB®数据库服务器进行通信,除此之外我们还有一个Web应用程序服务器,它再次在Node.js®中运行角度Web应用程序。

目前我们不使用ELB,我们通过登录信息识别客户端,即JWT Token中的组织ID。

2 个答案:

答案 0 :(得分:1)

鉴于您当前的体系结构,您需要创建某种形式的Node中间件,从请求(和/或响应)中提取客户端ID和content-length,并将它们写入持久存储。在AWS生态系统中,您可以写信至DynamoDBKinesis,甚至SQS。在AWS生态系统之外,您可以使用某种形式的日志代理向关系数据库或控制台日志写入,以将信息移动到持久存储。

但是,在此处捕获数据存在一些问题:

  • 除了登录控制台外,它还为每个请求增加了时间。
  • 如果登录到控制台,实际请求与将日志传送到持久存储的时间之间会有一段时间延迟。如果机器在该时间间隔内崩溃,您就会丢失数据。
  • 使用AWS服务时,您必须为速率限制做好准备(这是SQS优于Kinesis或DynamoDB的一个领域)。
  • 无论您使用哪种方法,都必须编写额外的代码来处理日志。

更好的方法IMO将客户端ID添加到URL,将ELB添加到前端负载分配。然后启用request logging并使用AWS Athena或其他工具对日志进行事后分析。

答案 1 :(得分:0)

如果您在VPC中运行这些EC2实例,则可以使用VPC Flow Logs深入了解每个实例传输的数据量。