- 大數據時代的數據挖掘
- 李濤
- 1676字
- 2020-01-03 19:51:09
2.2 系統日志分析的目的
自動化計算(Automatic Computing)是指 IT 系統能夠適應不同的商業業務邏輯和硬件環境的一種能力,其中包括計算系統的自動配置(Self-Configuring)、自動修復(Self-Healing)、自動優化(Self-Optimizing)和自動保護(Self-Protecting)[11]。在大型IT系統內,Automatic Computing能夠幫助企業節省大量系統管理成本。系統日志是記錄生產設備運行過程中產生的數據。比如常見的 Windows Event Logs 和Linux System Logs,記錄了操作系統運行狀態中的各種異常事件、錯誤以及軟件設置的更改。系統日志和事件的挖掘是實現Automatic Computing的基礎和關鍵。
系統日志和事件的分析目的大概可以分成3類:系統問題診斷、調試與優化、系統安全維護。
2.2.1 系統問題診斷
系統問題診斷通常也叫Problem Determination。它是指判定系統是否發生故障和故障發生的原因。系統故障的發生通常也有互相依賴性和傳遞性,找出故障的根源叫作故障根源分析(Root Cause Analysis)。在實時運行的生產機上,系統日志是最重要的系統監控和問題診斷數據來源之一。除了操作系統外,常見的其他軟件系統,諸如數據庫、Web 服務器、Hadoop 系統等,都附帶了日志生成模塊并產生大量日志數據,以供系統管理員分析和監控。對于系統管理員而言,系統出現的各種錯誤和異常都發生在過去。要解決過去發生的問題,必然需要知道發生該問題的前后階段系統在做什么,才能依次找出問題出現的原因。圖2-1顯示了典型的系統管理員、服務器和用戶之間的關系。圖2-1中,服務器直接與用戶的終端設備交互。系統管理員所做的大部分事情是觀察和監測服務器產生的日志,從而不斷調整服務器的配置。以Web系統為例,現實中Web系統管理員在解決一個頁面無法訪問的問題時,首先查看Web服務器的運行日志,如果發現Web服務器日志里出現數據庫連接失敗的錯誤記錄,就會轉向尋找數據庫系統的運行日志。通過數據庫的運行日志分析,發現數據庫在之前某個時刻宕機。要想知道數據庫宕機的原因,就繼續查詢宕機時間段之前數據庫的SQL日志記錄,找到引發宕機的SQL操作。

圖2-1 常見的IT平臺與環境
2.2.2 調試與優化
除了生產機的診斷和監控,在軟件開發和調試過程中,日志分析是重要的手段之一。例如在多線程程序的調試中,要重現一個共享資源訪問引發的Bug,通常需要重現之前的線程調度過程。然而線程的調度是操作系統根據當時的運行狀態決定的,之后很難重現完全一致的線程調度過程,更不用說傳統的“單步跟蹤”等方法了。實際中大部分多線程開發最有效的調試手段都是軟件開發人員主動嵌入日志,生成代碼,然后通過生成的日志分析和揣測Bug出現的原因。
通過日志記錄來跟蹤運行程序也被用于各種程序優化軟件,如JProfiler[12]。優化軟件的目標是找出待優化程序的瓶頸。要找出瓶頸,常見的手段就是在待優化程序代碼中主動嵌入可跟蹤的日志產生代碼。優化軟件通過分析運行生成的日志,跟蹤待優化程序的每個執行函數消耗的運行時間及內存等參數,從而找到瓶頸。
2.2.3 系統安全維護
在系統安全維護方面,日志分析常用于被動攻擊的分析和防御中。通過日志數據的分析,可以斷定和尋找攻擊源,從而找到有效的抵御措施。比如鑒別DoS(Denial of Service)攻擊的最直接辦法就是查看服務器的連接請求日志[13]。如果發現在某個時間段內出現大量異常的同一IP地址或者客戶端的連接請求,那么即可把此類行為歸結為DoS攻擊。某些軟件系統會把除IP地址外其他更詳細的連接請求信息記錄在日志數據內。通過進一步的日志分析,還可以對此DoS做更深入的剖析,比如找出對方使用的黑客軟件或者經過的路由信息,從而找出有效抵御手段。除DoS攻擊以外,Linux 中用戶操作命令和權限切換的記錄日志也常被用來判定某用戶是否企圖攻擊該系統或試圖獲取更高的管理權限。
一些病毒防御軟件通過分析應用程序調用操作系統的API歷史記錄來分析應用程序的行為是否正常,從而判定該應用程序是否是病毒(Virus)或者蠕蟲(Worm)。這里的API歷史記錄也是一種系統日志數據。它記錄了某應用程序在什么時刻調用了什么API、API的參數和返回結果等數據。例如在Windows系統內,病毒防御軟件通過Windows Hook[14]截獲應用程序的API調用情況并記錄在數據庫中。當發現某常規應用程序的API調用日志記錄出現異常的模式(比如過于頻繁地調用獲取磁盤文件目錄的 API),而此應用程序并非磁盤掃描或者修復軟件,那么就可以懷疑此應用程序在竊取用戶個人數據或者企圖植入病毒。
- Deep Learning Quick Reference
- Cloud Analytics with Microsoft Azure
- Mastering D3.js
- PIC單片機C語言非常入門與視頻演練
- OpenStack Cloud Computing Cookbook(Second Edition)
- 觸控顯示技術
- 網絡安全與防護
- 貫通Java Web開發三劍客
- 手機游戲程序開發
- 基于企業網站的顧客感知服務質量評價理論模型與實證研究
- 電動汽車驅動與控制技術
- Natural Language Processing and Computational Linguistics
- Redash v5 Quick Start Guide
- 手把手教你學Photoshop CS3
- Learning OpenShift