0

我有一百多台服务器正在向我的 statsd-graphite 设置发送指标。度量子树的叶子类似于 -

stats.dev.medusa.ip-10-0-30-61.jaguar.v4.outbox.get

stats.dev.medusa.ip-10-0-30-62.jaguar.v4.outbox.get

我的大多数爬虫都是 AWS 点实例,这意味着其中有 20 个随机下降和上升,每次都分配不同的 IP 地址。这意味着相同的列表变成-

stats.dev.medusa.ip-10-0-30-6.<|subtree

stats.dev.medusa.ip-10-0-30-1.<|subtree

stats.dev.medusa.ip-10-0-30-26.<|subtree

stats.dev.medusa.ip-10-0-30-21.<|subtree

假设子树下的所有指标在总存储 4G 指标中,20 个 Spot 实例下降,然后其中 30 个产生不同的 IP 地址,这意味着我的存储突然膨胀了 120G。此外,这是每周发生的事情。

虽然删除旧 IP 子树很简单直接,但我真的很想保留这些指标。我可以在第 0 周获得 3 个美杜莎,在第 1 周获得 23 个美杜莎,在第 2 周获得 15 个,在第 4 周获得 40 个。我有什么选择?你会如何解决这个问题?

4

1 回答 1

0

我们通过不记录 IP 地址来实现这一点。使用确定性锁定概念,当实例出现时,它们会请求机器 ID。然后他们可以使用这个机器 id 而不是 statsd 存储桶的 ip 地址。

stats.dev.medusa.machine-1.<|subtree
stats.dev.medusa.machine-2.<|subtree

这意味着您最多只能拥有 40 个这样的存储桶。我们成功地使用了这个概念,在单独的机器上使用一个简单的数字分配器 api 来分配实例编号。一旦机器拥有实例编号,它会将其作为标签存储在该机器上,因此我们的分配器可以查询 ec2 实例的标签以查看当前正在使用的内容。这允许它重新分配旧的机器 ID。

于 2014-02-18T13:09:45.687 回答