【问题标题】:How to calculate how much data is being transferred over cloud each month in AWS如何计算 AWS 每月通过云传输的数据量
【发布时间】:2017-12-27 18:46:24
【问题描述】:

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

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

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

【问题讨论】:

  • 首先描述您的系统架构以及您的客户端如何连接。他们是直接建立 TCP 连接还是使用 HTTP?你用ELB吗?你如何识别你的客户?访问令牌?列入白名单的 IP?还有什么?所有这些点都直接影响答案。
  • 更新了架构问题,如果需要任何其他信息,请告诉我。
  • 您使用 ELB 吗?你如何识别你的客户?访问令牌?列入白名单的 IP?还有什么?
  • 添加了信息,你能帮我用正确的方法来实现这个吗?

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


【解决方案1】:

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

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

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

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

【讨论】:

  • 非常感谢这对我来说是一个理想的解决方案。我将实施并更新。感谢您花时间编写如此详细的解决方案。
【解决方案2】:

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

【讨论】:

  • 这可能是一个很好的答案,但需要解释。从流日志的样子开始(我认为文档中有一个示例)以及 OP 如何提取向客户收费所需的信息。
  • 并且您应该解释如果 ELB 混合使用,分析会如何变化。
猜你喜欢
  • 1970-01-01
  • 2023-01-26
  • 2015-04-14
  • 2020-09-13
  • 1970-01-01
  • 2018-05-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多