繁体   English   中英

为短期流命名statsd指标

[英]Naming statsd metrics for short lived streams

我正在尝试对统计模型进行建模以提交给statsd / graphite。 但是,我监视的是以“会话”为中心的。 例如,我有一个实时玩的游戏。 服务器上有多个活动的游戏实例。 每个游戏都有多个(且数量可变)参与者。 每个游戏实例和每个玩家都有唯一的ID。 我想跟踪(并绘制图形)每个玩家的统计信息,但随后针对整个实例以及游戏的所有实例汇总指标。 例如,在给定时间可能有两个活动的游戏实例。 可以说每个人都有两名玩家

GameTitle.RealTime.VoiceErrors.game_instance_a.player_id_1 10
GameTitle.RealTime.VoiceErrors.game_instance_a.player_id_2 20
GameTitle.RealTime.VoiceErrors.game_instance_b.player_id_3 50
GameTitle.RealTime.VoiceErrors.game_instance_b.player_id_4 70

其中game_instances和player_ids是128位数字

而且我希望能够看到game_instance_a的所有语音错误的值为30,而系统中的所有语音错误的值为150

鉴于此,我有三个问题

  1. 您将在命名指标方面获得什么指导。
  2. 名称带有“动态”标识符的指标是否符合犹太标准
  3. 他们对此有何规模限制。 如果我有一个100K游戏实例,每个游戏中有多达1000个玩家,那么这会杀死statsd / graphite吗?

谢谢!

您将在命名指标方面提供什么指导?

Graphite建议“易变路径组件应尽可能深入层次结构” 从本质上讲,这意味着如果您可以将指标中通常是唯一的部分推送到“存储桶”的末尾,而又不影响您的分组查询,则应尝试这样做。

这是有关使用Graphite的精彩文章 ,其中包括命名建议。 这是Jason Dixon 提供的其他信息 (一般来说,这是石墨材料的绝佳来源)。

名称带有“动态”标识符的指标是否符合犹太标准?

我通常尝试避免在度量标准名称中使用标识符,除非它们的数量非常少(<100)。 由于Graphite将为每个指标名称存储一个.wsp文件,因此如果您决定更改配置,则将很难调整大小或调整存储设置。 此外,Graphite UI的每个度量标准名称都将有一个“文件夹”,因此您可以轻松地使该UI不可用。

在您的情况下,我可能会绘制游戏实例的总数,玩家的总数以及错误的数量(按类型)等。此外,我可能会尝试跟踪每个实例的玩家(通常)以及错误每个实例(同样又不知道实际实例,例如GameTitle.RealTime.PerInstance.VoiceErrors)是否具有该功能(即,每个实例在应用程序中存储的状态)。

Logstash,弹性搜索,Kibana

我建议使用实例和播放器ID记录此错误信息,并使用logstash将您的日志发送到弹性搜索和kibana 然后,我将观察Graphite的实时错误和运行状况异常检测,并使用Kibana(及其下的Elastic Search)进行更深入的研究。

对此有什么规模限制。 如果我有一个100K游戏实例,每个游戏中有多达1000个玩家,那么这会杀死statsd / graphite吗?

Statsd应该没有任何问题,因为它只是一个愚蠢的聚合器。 虽然它确实在内部保持某些状态,但我预计不会出现问题。

我认为内部Graphite Whisper Storage本身不会有问题,因为它仅使用文件和文件夹。 但是,正如我上面提到的,Graphite Web UI将无法使用,我认为您还将冒其他可管理性问题的风险。

摘要

将易失(动态)度量标准存储区保留在名称的末尾,并避免超过其中的数百个。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM