外掛程式式的監控實現

2021-08-30 18:33:15 字數 2511 閱讀 8181

結合本週分享的《comsat 監控使用》,和以前聽過的《comsat外掛程式開發》,總結一下。

一.comsat 是什麼?

comsat 是基於flex 和 j2ee開發的監控系統,能夠承接系統監控和應用監控的需求,對於系統監控,主要監控記憶體使用,jvm狀態,cpu使用率等,系統監控侵入性較小,而對於應用監控,可以監控你自定義的一些key-value值,根據log打點來監控執行緒啟動狀況,通過覆蓋log4j的expetionapender來監控異常等,以及通過aop的方式,監控一些資料庫連線異常等。同樣,也可以很方便的開發自己的外掛程式。

二.特性。

目前實現:

1.新增新的應用,需要comsat服務端配置,客戶端web.xml配置***,並在本地classpath下配置comsat.xml(配置對應到comsat服務端的應用名稱、協議和開放的埠名稱)。

2.提供了基礎的key-value監控,runtime監控,客戶端需要加入plugin、collector等依賴等才能實現。

3.key-value監控需要依賴於日誌的開頭的紀錄進行獲取。

4.可以傳送手機報警和旺旺等報警,並進行報警規則的設定。

不足1.傳送的exception資訊較多,但是可以顯示的統計資訊不多。

2.客戶端啟動任務監聽,啟動task,對客戶端效能有影響。

三.目前我們主要應用場景

1.監控系統運**況

2.通過aop方式監控資料庫運**況,在資料庫斷開時,不進行重試。

四.結合日誌分析運**況

啟動客戶端時,日誌如下:

1.啟動本地配置,本地沒有comsat配置則啟動服務端配置,採用w3c解析xml如下:

url url = pluginconfigurer.class.getresource("/comsat.xml");

if (url == null)

logger.info("bootstrap " + url);

document doc = domhelper.build(url);

element root = doc.getdocumentelement();

// init global setting

string cfg = getsinglesubtextbyname(root, "global-config", "true");

globalconfig = boolean.parseboolean(cfg);

serverurl = getsinglesubtextbyname(root, "server-url", "tcp://localhost:5843");

這部分是採用了static的方法,是最先被初始化的

2. web.xml中配置的監聽的servlet 容器的comsatlistener 啟動

public void contextinitialized(servletcontextevent sce)

catch (exception e)

}

public class launcher

可以看到,先後啟動了心跳的task,心跳一般是60s傳送一次,和kv的task 一樣,隔一段時間傳送一次當前時間和應用給comsat;然後啟動message傳送task,這裡把訊息進行過濾併發往相應的ip埠?(為什麼配置是tcp?)-tcp 只是標識,是乙個標準的寫法,其實沒有用到和協議有關的東西,建立的是nio的socket連線

最後是啟動你自己擴充套件的plugin。

3. task啟動完成後,在messagesender這裡做了如下事情,啟動socket的連線,建立連線通道,並在失敗後重試。session的作用 - 保持了當前會話的狀態,即本次連線的狀態,由於沒有建立在物理資源消耗上,沒有做session的釋放。

public void connect() throws ioexception
4.在如上所述的建立的通道裡會啟動訊息傳送的方法,傳送的訊息採用了特有的標識。

五.專案應用,aop方式監控資料庫異常。

public class dataaccessaspect catch(dataacces***ception err)

} catch (exception e)

throw err;

}catch(exception err)}}

這樣可以實現在資料庫發生dataaceess異常時,保證能夠收到異常的報警。

六.外掛程式開發

其實上面的應用部分已經基本展示了外掛程式開發的過程,只是沒有在資料格式上擴充套件,資料格式擴充套件可以通過繼承monitor_item去做,並且可以擴充套件dao,將你要監控的資料紀錄到監控端。總結起來就是四步

1.擴充套件資料格式,繼承monitoritem

2.定義資訊收集器

3.定義傳送task,

4.可以初始化的監控端(如果你需要)繼承monitorpersistor

C 實現外掛程式式架構

1.定義外掛程式介面,將其編譯為dll namespace plugininte ce 2 編寫外掛程式,引用上面的dll,實現上面定義的介面,也編譯為dll 外掛程式a namespace plugininte ce 外掛程式b namespace pluginb 3,在程式中使用外掛程式,需要引...

mysql外掛程式式 MySQL外掛程式式儲存引擎(下)

在mysql 5.1中,mysql ab引入了新的外掛程式式儲存引擎體系結構,允許將儲存引擎載入到正在執行的mysql伺服器中。使用mysql外掛程式式儲存引擎體系結構,允許資料庫使用者為特定的應用需求選擇專門的儲存引擎,完全不需要管理任何特殊的應用編碼要求。採用mysql伺服器體系結構,由於在儲存...

外掛程式式開發

自己做個筆記 listplugins new list 存放外掛程式的列表 string path dll資料夾路徑 string files 所有的dll陣列 foreach string dllfile in files 遍歷每乙個dll assembly ably assembly.lodef...