2013-08-16 87 views
1

我正在寫一個守護進程,它將持續在後臺運行,並做它的事情。我想監視性能和各種其他變量。這將包括Web請求延遲,錯誤,已處理項目的數量等等。守護進程監控/登錄在Linux(應用計數器)

然後應該可以查看數據以及圖表,報告(平均值,異常值)以及超出限值時的警報。

Performance counters on Windows是我能找到的最接近的東西。您可以定義自己的計數器,然後從代碼中輕鬆訪問它們。

請注意,我不是在尋找「性能」專櫃那些被命名,它更像是應用程序計數器 - 即我不在乎執行的指令和高速緩存未命中數,而是自定義計數器。一個StackOverflow的問題類似於這裏的答覆錯過了點這裏:Application counters in Linux? (and OSX?)

我看了仙人掌(和替代品),但他們似乎運行提供數據的時間表上的腳本。這意味着我會將計數器存儲在守護進程中,以及等待某種IPC調用的線程。然後,我需要創建第二個應用程序/腳本,通過此IPC接口連接並檢索存儲的值。

有沒有更好的方法?一些C庫可以使用單個函數調用來增加計數器,並且它會自動通過前端進行處理?

回答

3

statsD是開始收集度量的好地方。

statsD將讓你直接從你的應用程序發送計數器,而不會產生任何重大的開銷。您的代碼在執行時會生成計數器,您無需在代碼中記錄它。

如果你想有一個包,已全部功能於一身的(但無持久性),可以如果您需要持久性和製圖你可能想看看graphite使用pup

石墨將連接到statsd並讓您的圖形生成任何計數器。這是相當輕量級的,這種組合可以說比Nagios(在部署和學習曲線方面更接近仙人掌)更容易部署和維護。

如果您想要更多與持久性和API集成的東西,可以使用一些服務來爲您製作圖形。我已將自己限制在這裏的開源軟件。

+0

謝謝,這看起來應該起作用。 statsD的C API看起來很粗糙,但它只是一個簡單的UDP消息傳遞系統,所以我可以在最壞的情況下編寫自己的消息傳遞系統。我將這個問題留待一段時間,看看是否有其他選擇。 – lacop

0

我認爲你正在重新發明輪子。

嘗試Nagios的 http://nagios.org/

- 你可以寫任何的nagios自定義檢查和監測任何你需要的性能 - 就像你的應用程序。 - 您可以自定義您的提醒,以及何時以及如何發送這些提醒。 - 你可以創建服務/主機等等之間的關係......

插件/一些推廣: http://exchange.nagios.org/

+0

我試圖避免重新發明。閱讀這個問題,Cacti(和Nagios)使用報告的形式要求我在守護進程中編寫自定義RPC服務。 – lacop