2016-09-26 59 views
1

我從一個新的應用程序開始,該應用程序旨在以更「雲」的方式運行,遵循無服務器基礎架構的思想,不再需要「機器」的概念,但只是一個應用程序在某處運行。使用Graphite進行統計 - 來自無服務器基礎架構

由於Graphite只知道「絕對」值,因此服務器的主機名通常會在度量路徑中編碼以處理併發性。 (例如applicationname.webserver_1.requestCount)。使用Graphite函數,可以在構建圖形時輕鬆合併數據。

但是當我運行在服務器較少的環境中時,主機名不再以經典的意義存在 - 每次應用程序重新啓動或部署時,都會爲其生成一個新的隨機主機名。我現在想知道的是 - 如何最好地處理這個問題。我不能使用主機名,因爲這樣我會很快得到數百個不同的主機名,並且完全無法使用石墨後端。這個用例的最佳實踐是什麼?

作爲一個旁註 - 這不僅是衡量計數器,而且還衡量響應時間(p99函數將應用)。

我想使用dropwizard-metrics(正式名稱爲codahale指標)將消息發送給grahite,但這應該只是一個實現細節。

非常感謝您的幫助。

+0

IIRC in dropwizard中,您可以從度量標準名稱中排除主機名。 – deniszh

+0

@deniszh問題是石墨需要它們。計數器將作爲絕對值發送給石墨,而不是相對值。如果兩個應用程序實例並行發送計數器到相同的度量標準名稱,那麼石墨將會像獲取平均值一樣瘋狂。或者我在這種情況下是錯的? –

+0

是的,如果你使用計數器 - 那是真的。在這種情況下(許多短命的指標)Graphite並不適合IMO。 您可以在石墨服務器上運行一些清潔腳本,但它看起來並不是一個好的解決方案。 – deniszh

回答

0

現在的計劃是不直接發送給Graphite,而是通過StatsD進行,後者能夠進行必要的聚合。在這種情況下,不需要嵌入主機名。

感謝您的建議! :)

相關問題