2010-01-21 45 views
3

我有一個應用程序運行在Apache下,我想保持「在當下」統計。我想有應用程序告訴我的東西,如:每秒如何在Apache下運行的應用程序中保持即時應用程序級別的統計信息?

  • 請求,通過類型的要求
  • 延遲,使通過節儉請求各種後端服務分解(通過服務和服務器分解)
  • 每秒

我想這樣做沒有任何外部依賴被服務

  • 一些錯誤。但是,我遇到了在apache進程之間共享統計信息的問題。顯然,我不能只用全局內存。這類問題有什麼好的模式?

    該應用程序是使用python編寫的python,儘管我懷疑這更像是「跨進程通信」設計問題,而不是python特定的問題。

  • 回答

    1

    也許你可以將相關的計數器和其他統計信息保存在一個memcached中,所有的apache進程都可以訪問它?

    +0

    是啊,這是一個想法,但正如我上面提到的,我真的很喜歡這個沒有任何外部依賴的工作,因爲它可以用於診斷問題時,其他服務可能無法正常工作。 – 2010-01-21 22:27:30

    -1

    使用pylons.g對象。它是你的Pylons應用程序的lib/app_globals.py文件中的Globals類的一個實例。它的狀態變化對所有線程都是可見的,所以它裏面的東西需要是線程安全的。

    的lib/app_globals.py:

    class Globals(object): 
        def __init__(self): 
         self.requests_served = 0 
    

    控制器/ status.py:

    from pylons import g 
    
    class StatusController(BaseController): 
        def status(self): 
         g.requests_served += 1 
         return "Served %d requests." % g.requests_served 
    
    +0

    這不適用於不同的流程(prefork和workers模型都會發生這種情況)。這是顯而易見的方法,我們已經嘗試過:) – 2010-01-22 19:38:00

    1

    我想這樣做,無需任何外部 依賴。

    如果你的Apache不知何故死亡?(關注點分離?)

    個人而言,我現在用的(冗餘)Nagios監控硬件本身,服務,和應用指標。這樣,我可以輕鬆/自動地繪製「請求每秒/用戶在線」,「CPU負載/用戶激活X每秒」等圖表,這些幫助很多事情。

    爲nagios編寫插件非常簡單,也有成千上萬的預製腳本在任何語言。

    Apache的監控

    我提取我從通過Nagios的插件阿帕奇mod_status的頁面需要的信息監控的Apache。

    示例插件響應:

    APACHE OK - 0.080 sec. response time, Busy/Idle 18/16, open 766/800, ReqPerSec 12.4, BytesPerReq 3074, BytesPerSec 38034

    應用監控

    我使用mod_status的,就像你的,你想監控的事情列表中的一個例子。

    對於我們的應用程序,我們有一個非常小的Nagios插件框架,所以基本上每個nagios檢查都是一個小類,它對緩存或數據庫運行檢查並將其值返回給nagios(小而簡單的命令行腳本)。

    更多的例子:

    Memcache: 
    OK - consumption: 82.88% (106.1 MBytes/128.0 MBytes), connections: 2, requests/s: 10.99, hitrate: 95.2% (34601210/36346999), getrate: 50.1% (36346999/72542987) 
    
    Application feature #1 usage: 
    OK - last 5m: 22 last 24h: 655 ever: 26121 
    
    Application feature #2 usage: 
    OK - last 5m: 39 last 24h: 11011 
    
    Other applications metrics: 
    OK - users online: 556 
    

    我想說的:擴展Nagios的應用監控是很容易的。 用我的小框架花了我3-4個小時的時間寫下來,我添加的任何支票現在只需要幾分鐘。

    Nagios plug-in development guidelines

    +0

    我們正在使用nagios。但是,我們希望收集超出mod_status可提供的應用程序級別統計信息。也許改變這個問題的一個好方法是「如何使用自定義應用程序統計信息創建類似mod_status的東西?」 – 2010-01-26 17:41:39

    +0

    編輯我的答案更多的應用程序監控細節 – Karsten 2010-01-26 18:27:04