consul2dogstats,带维度标记
consul2dogstats,带维度标记
原文:https://medium.com/hackernoon/consul2dogstats-with-dimensional-tagging-b55ade84e654
如果你同时使用 Consul 和 Datadog,你会想要这个。
我写了一个小的程序,它维护一个名为 consul2dogstats 的数据中心咨询服务计数列表。它定期轮询 Consul 服务目录和健康端点以收集清单,然后将结果发布给 Datadog 。这是 Apache 2.0 许可的。
关于维度标记的一个旁白
Datadog 最强大的功能之一是维度标签。简而言之,维度标签是键值对,您可以将其附加到时间序列指标上,以便进行查询和聚合。
假设您想要跟踪组织中 web 服务器的请求率。让我们称度量的名称为http_requests。我们可以应用的一些有用的标签是:
- 服务器主机(如
app1、ip-1-2-3-4) - 网络服务(如
frontend、api、gatekeeper) - 环境(如
production、test) - 响应代码范围(如
2xx、3xx、4xx、5xx)
在 Datadog 中,你可以给它们分配一个维度键。在上面的例子中,这些可能是hostname、http_host、env和http_response_type。
一旦你开始标记指标,聚集和过滤它们就是小菜一碟。您可以执行强大的查询来回答实时中的问题,例如:
- 在整个生产过程中,我每分钟收到多少
5xx回复? - 在我的生产环境中,我每分钟为
gatekeeperweb 服务发送多少2xx响应?
与除了服务器主机之外没有其他维度的旧解决方案相比,这在功能和灵活性方面是一个巨大的飞跃(服务器主机本身在云环境中是一个越来越没用的维度,因为主机现在通常是短暂的,它们的规范名称毫无意义)。
考虑传统的点分隔形式的指标名称,如requests.production.frontend.2xx或requests.test.gatekeeper.4xx。这些给分析师带来了一些重大挑战。
首先,选择要查询的指标是一个 O(n) 操作,因为指标名称是不透明的(系统不知道您选择的命名结构的语义)。如果您正在收集大量的指标(您应该这样做!),那可是一个非常昂贵的操作。
第二,添加新的维度是一场管理噩梦,因为如果您想要添加维度,您必须创建一个新的度量标准。假设我们想在上面的指标中增加一个像shard这样的新维度。在支持开箱即用的维度标记的系统中,这没有问题:任何以前的图形都将像以前一样继续呈现。但是如果你使用平面指标,你将开始创建新的指标,比如requests.production.frontend.shard42.2xx和requests.tests.gatekeeper.shard1.4xx。一旦您用新的指标替换旧的指标,以前的指标数据的历史将会结束,这将产生一个不连续性,使执行时态分析更具挑战性。(当然,您可以继续以旧的名称提交指标,同时提交新的、更细粒度的指标。但是您将会重复计算,这可能会导致分析错误,并且向系统提交比需要的更多的指标,这可能会导致容量问题。)
好消息是,即使你更喜欢自己管理指标,而不是使用 SaaS 提供商如 Datadog,现在也有支持维度标记的开源指标系统。没有必要再忍受扁平的度量标准了。
维度反模式
通常,运营指标系统旨在显示您的系统和应用程序的实时状态和运行状况。为了保持良好的性能,重要的是不要使公制尺寸过于精细。一个好的经验法则是确保特定键的可能值少于您拥有的服务器数量。因此,按环境、主机名或功能标记指标是好的。但是用客户或用户 ID 来标记它们是一个非常糟糕的主意;它将在后端创建如此多的表,性能将受到严重影响。
直截了当地说:不要用你的运营指标体系作为你的分析体系。有很多优秀的分析数据库和提供商,包括 Vertica 、 Redshift 、 Clickhouse 和 BigQuery 。
充满希望的风景
Datadog 是第一个平台,无论是商业平台还是其他平台,它提供了一个支持尺寸度量标签的引人注目的产品。但是现在有更多的选择。查看它们,找出最适合您的一款:
商业
开源
黑客中午是黑客如何开始他们的下午。我们是阿美族家庭的一员。我们现在接受投稿并乐意讨论广告&赞助机会。
要了解更多信息,请阅读我们的“关于”页面、在脸书上给我们点赞/发消息,或者简单地说, tweet/DM @HackerNoon。