[英]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
鑒於此,我有三個問題
謝謝!
Graphite建議“易變路徑組件應盡可能深入層次結構” 。 從本質上講,這意味着如果您可以將指標中通常是唯一的部分推送到“存儲桶”的末尾,而又不影響您的分組查詢,則應嘗試這樣做。
這是有關使用Graphite的精彩文章 ,其中包括命名建議。 這是Jason Dixon 提供的其他信息 (一般來說,這是石墨材料的絕佳來源)。
我通常嘗試避免在度量標准名稱中使用標識符,除非它們的數量非常少(<100)。 由於Graphite將為每個指標名稱存儲一個.wsp文件,因此如果您決定更改配置,則將很難調整大小或調整存儲設置。 此外,Graphite UI的每個度量標准名稱都將有一個“文件夾”,因此您可以輕松地使該UI不可用。
在您的情況下,我可能會繪制游戲實例的總數,玩家的總數以及錯誤的數量(按類型)等。此外,我可能會嘗試跟蹤每個實例的玩家(通常)以及錯誤每個實例(同樣又不知道實際實例,例如GameTitle.RealTime.PerInstance.VoiceErrors)是否具有該功能(即,每個實例在應用程序中存儲的狀態)。
Logstash,彈性搜索,Kibana
我建議使用實例和播放器ID記錄此錯誤信息,並使用logstash將您的日志發送到彈性搜索和kibana 。 然后,我將觀察Graphite的實時錯誤和運行狀況異常檢測,並使用Kibana(及其下的Elastic Search)進行更深入的研究。
Statsd應該沒有任何問題,因為它只是一個愚蠢的聚合器。 雖然它確實在內部保持某些狀態,但我預計不會出現問題。
我認為內部Graphite Whisper Storage本身不會有問題,因為它僅使用文件和文件夾。 但是,正如我上面提到的,Graphite Web UI將無法使用,我認為您還將冒其他可管理性問題的風險。
將易失(動態)度量標准存儲區保留在名稱的末尾,並避免超過其中的數百個。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.