如何计算AWS中每个月在云上传输多少数据



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

我们的体系结构很简单,我们拥有一个API服务器,该服务器是EC2实例之一上的Node.js®服务器,这与DB服务器(在另一个EC2上是MongoDB®)对话,除此之外,我们还拥有运行的Web应用程序服务器Node.js®中的Angular Web应用程序。

当前我们不使用ELB,我们通过登录信息(即JWT Token中的组织ID)确定了客户端。

给定当前的体系结构,您将需要创建某种形式的节点中间件,从请求中提取客户端ID和content-length(和/或响应),并将其写入持续存储。在AWS生态系统中,您可以写入DynamoDB,Kinesis,甚至SQ。在AWS生态系统之外,您可以写入关系DB,或者可能具有某种形式的日志代理的控制台日志,以将信息移至持久存储。

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

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

更好的方法是,IMO将是将客户端ID添加到URL中,而将ELB添加到前端负载分布中。然后打开请求记录,并使用AWS Athena或其他一些工具对日志进行事后分析。

如果您在VPC中运行这些EC2实例,则可以使用VPC Flow日志来了解每个实例转移的数据数量。

最新更新