首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 綜合教學

應用系統日誌採集解決方案:Flume + MongoDB + WebService 架構設計

     編輯:Java 綜合教學

應用系統日誌採集解決方案:Flume + MongoDB + WebService 架構設計

概述

針對多個非 Maven 老舊應用系統,採用「應用系統 → 日誌服務 → Flume → MongoDB」架構,避免每個系統引入 20+ Jar 包。

數據流向

數據流向圖

  1. 應用系統通過 Filter 攔截請求,組裝 JSON 日誌。
  2. 調用日誌服務暴露的 WebService (JAX-WS) 寫入。
  3. 日誌服務接收後推送至 Flume Agent。
  4. Flume Sink 寫入 MongoDB 存儲。

日誌服務模組結構

src/main/java
 └─ cn.sinobest.asj.log
     ├─ ISALog.java              # 服務接口
     ├─ SALogImpl.java           # 實現類,寫入 Flume
     ├─ exception
     │   ├─ InvalidGradeException.java
     │   └─ InvalidFormatExceptioin.java
     └─ util
         ├─ ValidGrade.java      # 枚舉:DEBUG/INFO/WARN/ERROR
         └─ MessageTemplate.java # 消息模板
src/main/resources/log4j.properties
src/main/webapp/WEB-INF
     ├─ sun-jaxws.xml            # JAX-WS 發布配置
     └─ web.xml
pom.xml

應用系統接入示例

1. Filter 攔截組裝

public class LogFilter implements Filter {
    public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) {
        HttpServletRequest request = (HttpServletRequest) req;
        // 組裝 JSON:IP、URI、參數、用戶等
        String json = buildJson(request);
        // 調用 WebService 客戶端發送
        LogServiceClient.send(json);
        chain.doFilter(req, res);
    }
}

2. WebService 客戶端生成

使用 wsimport 生成客戶端存根,放入 cn.sinobest.asj.log.wsimport 包。

關鍵技術點

  • Flume 寫 MongoDB:參考《Flume學習應用:Java寫日誌數據到MongoDB》。
  • JAX-WS 發布:參考《在web項目中發布jaxws》。
  • 非 Maven 系統接入:只需引入生成的客戶端 Jar,零侵入。

後續規劃

  • 完善日誌查詢與分析平台。
  • 引入 Kafka 作為緩衝層,提高吞吐容錯。
  • 統一日誌格式規範,支援 ELK 檢索。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved