簡體   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