集群监控系统的设计方案
2019獨角獸企業重金招聘Python工程師標準>>>
? ? 背景
???? 一個項目發展了一段時間以后,總會分成為數眾多的子應用,各自以集群的形式部署在不同的服務器上。當部署的應用多了以后,整個集群的異常監控就成為一個比較麻煩的事情。最近接到的需求便是開發一個監控系統,監控所有子應用的拋出的異常信息,以及各種定時線程的執行情況等。
?
? ? 一些原則? ?
? ? 因為項目已經比較龐大了,所以這套監控系統對原有的各應用不能有太大的侵入性,代碼的改動量不能太大。
? ? 項目的子應用眾多,設計監控方案時,要考慮通用性,盡量減少邊際成本。
? ? 整個項目的子應用分布在上百臺服務器上,所以設計時應考慮到部署實施的簡便性。
?
? ? 方案一
????
? ??最開始考慮的方案,開發一個web服務器 monitor?和 觸手?agent,把 agent 部署到所有的服務器上,通過分析指定目錄下的日志文件獲取該服務器上的所有應用運轉情況。而相對應的,所有需要監控的子應用需要輸出自身的錯誤日志 和 定時線程的執行日志到指定目錄,配合監控。
? ? 這個方案的好處是通過 agent?不單可以監控應用,還能做很多額外的事情,比如服務器內存負載監控,應用異常時的自動重啟等等,還一個優點是跨語言,不局限于java;不足之處也很明顯:部署和更新繁瑣,代碼侵入性略大,每個應用都需要新增大量的日志輸出代碼;而且agent多了以后,可能需要專門的運維來負責維護。
????
? ? 方案二
? ? ???
? ? 第二套方案仍然需要開發web服務器 monitor,但不再提供agent,轉而提供一個監控注入組件 injectComponet。該組件提供一個掃描器,一個類修改器和幾個注解,在java程序啟動之初對所有類進行掃描,對配置了指定注解的類代碼進行修改,添加自身的監控邏輯,從而跟蹤應用的運行狀況。同時修改 log4j 框架的日志基類,拷貝所有?error 級別日志,傳回monitor進行分析。需要監控的子應用則需要添加相應的配置 和 注解以配合監控。
? ? 這套方案的好處是侵入性小,邊際成本低,不需要額外的運維操作。而不足之處則是功能薄弱,同時只支持java語言編寫的應用程序。
?
? ? 選擇和原因
????綜合考慮后采用了方案二,主要原因是服務器級別的監控已經有其它的運維系統負責,而且項目沒有跨語言需求,這種情況下方案一的優點并不突出,而開銷略大。
轉載于:https://my.oschina.net/GameKing/blog/731852
總結
以上是生活随笔為你收集整理的集群监控系统的设计方案的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java web服务器tomcat介绍【
- 下一篇: java信息管理系统总结_java实现科