一種日志管理系統及日志采集方法
【技術領域】
[0001] 本發明涉及計算機通信領域,尤其涉及一種日志管理系統及日志采集方法。
【背景技術】
[0002] 在IT系統的運營過程中,為了監控系統運行的狀態,或者是為了給業務操作留下 記錄以備事后審計,應用系統會產生各種各樣的日志,包括:操作系統、中間件產生的系統 日志、應用軟件產生的業務操作日志等等。一般情況下,由于建設的先后順序和需求不同, 各個應用系統各自獨立記錄、存儲自己的日志,各個應用系統的日志的格式通常是不統一 的。
[0003] 在IT系統規模日益擴大和SLA服務水平逐步提高時,通常需要建設日志管理系 統,從各個應用系統中采集系統日志、應用軟件的操作日志進行集中存儲,并對外提供統一 的日志查詢和分析功能,滿足業務分析、網絡安全和業務審計的需要。如圖1所示,對各類 日志的管理一般分為采集、存儲和利用等三個階段。
[0004] 為了實現對日志的管理,需要將各個應用系統接入日志服務器,一般分為下述幾 個步驟:
[0005] 第一步:制訂接入規范,梳理各個應用系統的日志記錄的實現狀況,根據業務、安 全、審計等各方面的要求,制訂應用系統日志記錄的接入規范。
[0006] 第二步:準備應用接入,各個應用系統根據日志規范,對各自系統的日志管理模塊 進行改造完善,主要是核對應用日志的各個字段,各個字段的格式和順序等內容。
[0007] 第三步:準備服務端,根據待接入的應用系統的日志現狀,在服務器上完成應用標 識等相應的配置,并根據實際情況進行服務端數據庫表的新建或調整。
[0008] 第四步:接入應用系統,各個應用系統根據日志服務器提供的接口和規范,通過主 動推送或Agent采集等方式將日志提交到日志服務器存儲。
[0009] 各個應用系統的日志存儲到日志服務器中后,即可進行后續的日志查詢、統計分 析、審計工作,甚至可以依據日志規則觸發告警,以便進行相應的系統和業務處理。
[0010] 日志管理有下述幾個特點:
[0011] 1.要求將日志實時寫入數據庫,但通常不會實時使用日志;
[0012] 2.對日志的操作不會被包含在一個事務中;
[0013] 3.日志的生產者不應當有修改日志的需求。
[0014] 現有的應用系統與日志服務器的集成架構圖如圖2所示,日志服務器一般由日志 接收應用和數據庫組成,而應用系統可通過日志采集代理接入到日志服務器,也可以直接 接入到日志服務器。采集日志的方式包括主動推送(Push)和被動采集(Pull)兩種,前者 是應用系統調用日志采集代理或日志服務器的接口,主動將日志推送給日志管理系統;后 者是日志采集代理到應用系統中去抓取日志,然后發送到日志服務器,從應用系統的角度 來看,就屬于"被動采集"。
[0015] 現有的日志服務器通常存在以下問題:
[0016] 應用系統接入集成工作復雜:關系數據庫的每個表都有Schema。日志管理系統存 儲來自多個應用系統的日志,日志對象的屬性很可能各不相同,使用關系數據庫存儲日志, 可以使用兩種方法來對齊日志,一是在日志采集代理或日志接收應用中,進行日志格式的 轉換映射;二是為每種日志進行建表操作。由于日志的格式千差萬別,在某應用系統接入 時,可能這兩種方法都要使用。隨著日志種類的增多,應用系統的接入和程序開發會越來越 復雜。
[0017] 以郵件系統為例,其操作日志的結構比較復雜。一個郵件可能有多個收件人并且 有多個附件,如果使用Oracle數據庫,至少需要3個表來維護2個一對多的關系。
[0018] 可用性和擴展性難以保障:由于日志管理過程涉及應用服務器和數據庫服務器, 為了滿足高并發寫入情況下的系統的可用性和擴展性,必須統籌考慮應用服務器、數據庫 服務器的架構,這個對于系統架構的設計和系統擴展來說是一個比較大的挑戰。
【發明內容】
[0019] 為了解決上述技術問題,本發明提供了一種日志管理系統及日志采集方法,對于 來自多個應用系統的具有不同格式的日志,無需進行日志格式的統一,減輕了應用系統接 入改造的工作量。
[0020] 為了實現上述目的,本發明提供了一種日志管理系統,包括:多個數據源、數據庫 服務器、日志采集裝置,其中,多個數據源,用于生成具有不同格式的日志;所述數據庫服務 器包括:無模式的數據庫,用于存儲具有不同格式的日志;所述日志采集裝置包括:日志接 口模塊,用于為所述多個數據源提供日志接口,以使得所述多個數據源通過所述日志接口, 將具有不同格式的日志發送至所述日志采集裝置;日志持久化模塊,用于將具有不同格式 的日志發送至所述數據庫服務器,以使得所述數據庫服務器將所述具有不同格式的日志存 儲至無模式的數據庫中。
[0021] 上述日志管理系統,其中,所述日志采集裝置還包括:日志轉發代理模塊,所述日 志持久化模塊,用于通過所述日志轉發代理模塊將具有不同格式的日志發送至所述數據庫 服務器;所述日志轉發代理模塊包括:接收子模塊:用于接收日志操作指令及所述日志持 久化模塊發送的具有不同格式的日志;數據安全子模塊,用于判斷所述日志操作指令是否 為將所述具有不同格式的日志寫入數據庫服務器的指令;數據交互子模塊,用于在所述數 據安全子模塊判定所述日志操作指令為將所述具有不同格式的日志寫入數據庫服務器的 指令時,將具有不同格式的日志發送至所述數據庫服務器。
[0022] 上述日志管理系統,其中,所述數據安全子模塊進一步用于存儲經過加密后的所 述無模式的數據庫的用戶名和密碼,并在所述接收子模塊接收到具有不同格式的日志后, 將所述加密后的用戶名和密碼進行解密;數據交互子模塊,進一步用于在所述數據安全子 模塊判定所述操作指令為將所述具有不同格式的日志寫入數據庫服務器的指令時,將解密 后的用戶名和密碼及具有不同格式的日志發送至所述數據庫服務器,以使得所述數據庫服 務器根據解密后的用戶名和密碼將所述具有不同格式的日志存儲至無模式的數據庫中。
[0023] 上述日志管理系統,其中,所述日志采集裝置還包括:日志預處理模塊,用于對所 述具有不同格式的日志配置用于標識生成所述具有不同格式的日志的數據源的參數,并根 據預設規則對所述具有不同格式的日志進行過濾;所述日志持久化模塊,進一步用于將經 過過濾后的具有不同格式的日志發送至所述數據庫服務器。
[0024] 上述日志管理系統,其中,所述日志采集裝置還包括:異常處理模塊及緩存模塊, 所述異常處理模塊,用于分析所述日志采集裝置與所述數據庫服務器的鏈接是否符合預設 指標,并在不符合時發送告警信息;當所述異常處理模塊確定所述日志采集裝置與所述數 據庫服務器的鏈接不符合預設指標時,所述日志持久化模塊進一步用于將具有不同格式的 日志存儲至緩存模塊。
[0025] 上述日志管理系統,其中,所述數據庫服務器還包括:統計數據庫,用于存儲根據 預設的統計規則腳本及所述無模式的數據庫中存儲的具有不同格式的日志生成的統計數 據。
[0026] 上述日志管理系統,其中,所述日志采集裝置還包括:日志抓取模塊,用于從多個 數據源中抓取具有不同格式的日志。
[0027] 本發明還提供了一種日志采集方法,包括:第一接收步驟:通過日志接口接收數 據源發送的具有不同格式的日志;日志持久化步驟:將具有不同格式的日志發送至數據庫 服務器,以使得所述數據庫服務器將所述具有不同格式的日志存儲至無模式的數據庫。
[0028] 上述日志采集方法,其中,在所述日志持久化步驟之前還包括:第二接收步驟:接 收一日志操作指令;判斷步驟:判斷所述日志操作指令是否為將所述具有不同格式的日志 寫入數據庫服務器的指令;所述日志持久化步驟進一步在所述判斷步驟判定所述日志操作 指令為將所述具有不同格式的日志寫入數據庫服務器的指令時,將具有不同格式的日志發 送至所述數據庫服務器。
[0029] 上述日志采集方法,其中,所述數據庫服務器的無模式的數據庫的用戶名和密碼 經過加