大數(shù)據(jù)時代的全能日志分析專家--Splunk安裝與實(shí)踐
背 景
隨著大家對網(wǎng)絡(luò)安全意識的提高,企業(yè)網(wǎng)管理人員,必須對IT基礎(chǔ)設(shè)置進(jìn)行監(jiān)控及安全事件的管理,管理數(shù)據(jù)的數(shù)量和種類非常巨大,那么就需要有一款能否分析各種日志數(shù)據(jù)的工具,經(jīng)過長期實(shí)踐,為大家推薦Splunk這么一款全能型分析工具。
1.Splunk簡介
Splunk是一款功能強(qiáng)大的、記錄詳細(xì)的日志分析軟件,Splunk是基于原始日志數(shù)據(jù)(Raw data)內(nèi)容建立索引,保存索引的同時也保存原始日志內(nèi)容,在大數(shù)據(jù)時代,種類繁多的日志如何能快速分析找到你需要的內(nèi)容呢,你需要一個更加方便智能的工具,那就是Splunk。它能處理常規(guī)的日志格式,比如Apache、Squid、系統(tǒng)日志、郵件日志等這些對所有日志先進(jìn)行索引,然后可以交叉查詢,支持復(fù)雜的查詢語句,最后通過直觀的方式表現(xiàn)出來。它與其他開源日志分析工具不同的是,操作界面支持全中文,而且對于中文版操作系統(tǒng)的日志收集非常不錯,目前它的商業(yè)版本價格的確不便宜(國內(nèi)天旦、精誠華廈微科都在代理這款產(chǎn)品,商務(wù)可聯(lián)系他們)。下面我們先看看怎么安裝和基本使用吧。
2. Splunk索引數(shù)據(jù)內(nèi)容
Splunk的索引范圍涵蓋應(yīng)用、服務(wù)器、網(wǎng)絡(luò)設(shè)備中的所有日志、配置、信息、trap、告警、度量以及其他系統(tǒng)性能數(shù)據(jù)??伸`活地從文件、網(wǎng)絡(luò)端口、數(shù)據(jù)庫、自定義API和接口中實(shí)時或按需訪問數(shù)據(jù)。它的索引對原始數(shù)據(jù)的完整性無影響。
3.Splunk安裝
首先到官方http://www.splunk.com/download注冊一個賬號下載對應(yīng)的操作系統(tǒng)版本(截止目前最新版本為6.1.3),安裝時記住關(guān)閉SELinux功能,另外注意一點(diǎn),如果要通過WMI的方式來搜集Windows(中文版)日志的話,那么Splunk建議裝在Windows操作系統(tǒng)(須4GB以上可用空間)上。如果收集的日志主要是各種網(wǎng)絡(luò)設(shè)備及Linux系統(tǒng)日志建議裝在類Unix系統(tǒng)上。下面以Redhat Linux系統(tǒng)安裝Splunk為例講解安裝過程,啟動過程如圖1所示。
(1).安裝軟件包
- #rpm –ivh splunk-4.1.7.95063-linux-2.6-x86_64.rpm
Splunk安裝路徑在/opt/splunk,這個路徑各種UNIX/Linux系統(tǒng)都一樣。
(2).關(guān)閉Selinux
- #setenforce 0
(3).啟動splunk,命令如下:
- #/opt/splunk/bin/splunk start
(4).瀏覽Splunk Web接口,在瀏覽器中輸入以下地址:
http://localhost.localdomain:8000
圖1 Linux下安裝Splunk
用netstat命令檢查8000端口是否處于監(jiān)聽狀態(tài)。
- #netstat -ant
- Proto Recv-Q Send-Q Local Address Foreign Address State
- tcp 0 0 0.0.0.0:8000 0.0.0.0:* LISTEN
- tcp 0 0 0.0.0.0:8089 0.0.0.0:* LISTEN
我們看到以上信息輸出即可通過網(wǎng)址訪問。
4.設(shè)置自動運(yùn)行
1).設(shè)置開機(jī)自動啟動
- #ln -s /usr/local/splunk /bin/splunk/etc/rc2.d/S80splunk
2).設(shè)置到服務(wù)里面
- #ln -s /usr/local/splunk /bin/splunk/etc/init.d/splunk
5.系統(tǒng)配置
下面我們通過配置來收集客戶端的日志。
1)通過Syslog收集Cisco網(wǎng)絡(luò)設(shè)備的日志
在Cisco網(wǎng)絡(luò)設(shè)備上的配置命令一般為:
- logging <syslog server IP Address>
- logging trap <severity>
Splunk默認(rèn)使用UDP 514端口來監(jiān)聽syslog消息。例如:
- logging 192.168.122.1
- logging trap warning
2)通過Syslog收集Linux主機(jī)的日志
在Linux主機(jī)上的配置一般為修改/etc/syslog.conf配置,添加以下兩行:
- # Send syslog to Splunk server
- *.<severity> @<syslog server IPAddress>
如:
- # Send syslog to Splunk server
- *.debug @192.168.122.1
3)通過WMI來收集Windows主機(jī)的日志
首先要確保運(yùn)行Splunk服務(wù)(在服務(wù)管理器中顯示為Splunkd)的帳號有權(quán)限讀取遠(yuǎn)程Windows機(jī)器的WMI信息。在《Unix/Linux日志分析和流量監(jiān)控》一書中的第14章中還會講到利用WMI收集Windows日志。
然后,在Splunk服務(wù)器上做一下簡單的配置。這里假設(shè)Splunk的安裝路徑默認(rèn)為C:\Program Files\Splunk。在C:\Program Files\Splunk\etc\system\local文件下修改inputs.conf文件,添加以下內(nèi)容:
- [script://$SPLUNK_HOME\bin\scripts\splunk-wmi.py]
- interval = 10
- source = wmi
- sourcetype = wmi
- disabled = 0
接著,在同一目錄中新建一個文本文件,命名為wmi.conf,并添加以下內(nèi)容:
- [WMI:<Name>]
- server = <Remote Windows Host IPAddress>
- interval = 60
- event_log_file = <Event log Type>
- disabled = 0
比如監(jiān)控IP地址為192.168.122.10的Windows主機(jī)上Application和System的Event Log:
- [WMI:AppAndSys]
- server = 192.168.122.1
- interval = 60
- event_log_file = Application, System
- disabled = 0
其實(shí)還可以通過Syslog來收集Windows的日志,這里可以用一個免費(fèi)工具NTSyslog(下載)。
6.設(shè)置日志分析目錄
當(dāng)首次進(jìn)入Web界面后,需要重設(shè)密碼并添加數(shù)據(jù)。進(jìn)入系統(tǒng)可以將默認(rèn)語言選擇為中文,開始導(dǎo)入數(shù)據(jù),如圖2所示。
圖2 導(dǎo)入數(shù)據(jù)
選擇數(shù)據(jù)源(從本地),接著選“從文件和目錄”,選擇/var/log即可。如圖3所示。從圖中我們也可以看出Splunk默認(rèn)支持的日志種類很多,包含大多數(shù)運(yùn)維人員平時工作中所需要分析的日志類型。
圖3 選擇本地?cái)?shù)據(jù)源
點(diǎn)擊應(yīng)用菜單下方的search即可看到生成的日志報(bào)告(比如cron日志,mail日志。當(dāng)然也可以把我們所需要記錄的日志比如php錯誤日志等都輸出到/var/log目錄下,對其進(jìn)行分析)。
7 .Splunk搜索的使用
系統(tǒng)中的搜索工具欄是Splunk最強(qiáng)大的工具,為了學(xué)習(xí)Splunk,我們先在http://www.splunk.com/base/images/Tutorial/Sampledata.zip下載一個演示文件。我們學(xué)習(xí)如何添加數(shù)據(jù),首先向Splunk添加示例數(shù)據(jù)方法如下:
在Splunk首頁中點(diǎn)擊右上角的Home按鈕,再選擇添加數(shù)據(jù),選擇服務(wù)器本地文件,當(dāng)你選擇正確系統(tǒng)提示:“Use auto-detected source type:access_combined_wcookie”最后保存配置,當(dāng)系統(tǒng)提示索引建立后就可以查看日志。
圖4 開始搜索
我們看看儀表盤的內(nèi)容,讀者應(yīng)該已經(jīng)熟悉搜索欄及時間范圍選擇,摘要儀表板上也有這些內(nèi)容。但搜索儀表板上還包含其他內(nèi)容,比如事件記錄、時間軸、字段菜單及檢索到的事件列表或搜索結(jié)果。
1).匹配及掃描事件記錄:在搜索中,Splunk在檢索時將顯示兩組事件記錄:一組為匹配事件記錄,另一組為已掃描事件記錄。搜索完成后,時間軸上方的記錄顯示的是匹配事件的總數(shù)。時間軸下方事件列表上方的記錄顯示用戶所選時間范圍內(nèi)的時間數(shù)目。稍后可以看到,當(dāng)向下分析事件時,此數(shù)目會發(fā)生變化。
2).事件的時間軸:時間軸能直觀的顯示出每一時刻發(fā)生的事件。當(dāng)時間軸隨著搜索結(jié)果不斷更新時,可能會注意到有條狀圖案。每一條狀圖案的高度表示時間記錄。時間軸的峰值和谷值可表示活動高峰期或服務(wù)器停機(jī)。此時,時間軸可有效用于強(qiáng)調(diào)時間模式或調(diào)查各事件活動的高峰期和低谷期。時間軸選項(xiàng)位于時間軸上方。還可以放大或縮小圖表。
3).字段菜單:前面說過將數(shù)據(jù)編入索引時,Splunk可自動按名稱和值的格式識別并生成數(shù)據(jù)信息,我們把這稱作是字段。當(dāng)您進(jìn)行搜索時,Splunk將把其從字段菜單上識別的所有字段列在搜索結(jié)果旁邊。您可以選擇其他字段來顯示您搜索的事件。所選字段都已被設(shè)置為搜索結(jié)果可見格式。將默認(rèn)顯示主機(jī)、源及源類型。其它字段是Splunk從您的搜索結(jié)果中抽取的。
4).事件查看器:事件查看器將顯示Splunk搜索到的與您的搜索匹配的事件。事件查看器位于時間軸下方。事件默認(rèn)顯示為列表,您也可以選用表格查看。選擇按表格形式查看事件時,表格只顯示已選字段。
8.Splunk搜索實(shí)例解析
我們先構(gòu)造一個場景,假如有人投訴網(wǎng)站,說在提交表單時總是提示有某個IP地址錯誤, 10.2.1.44,這時我們該如何利用搜索功能來查找問題呢?
我們可以輸入如下內(nèi)容:
- sourcetype=access_combined_wcookie10.2.1.44
當(dāng)然,如果你不知道數(shù)據(jù)源,那么你也可以直接輸入IP地址,這樣匹配的條目會非常多,如果能精確找到數(shù)據(jù)源就很容易找到問題。
圖5 使用搜索功能
access_combined_wcookie代表數(shù)據(jù)源,要根據(jù)你提交的日志而定。注意,當(dāng)您在搜索欄中輸入的同時,將彈出Splunk“搜索助手”這個很重要,可以幫助你解決搜索中的很多問題。就如同MS Office中的幫助一樣好用。為了縮小范圍我們做如下操作,我們還應(yīng)該在搜索欄中鍵入purchase:
- sourcetype=access_combined_wcookie10.2.1.44 purchase

圖6 縮小搜索范圍
請看左上角搜到的日志從109降到83條。注意,搜索關(guān)鍵詞時,不用區(qū)分大小寫。
9.使用布爾運(yùn)算符查找日志
Apache服務(wù)器日志中發(fā)現(xiàn)大部分事件的狀態(tài)碼為“200”,它代表“成功”?,F(xiàn)在有人投訴網(wǎng)站出現(xiàn)了問題,那么就要找出不是200的日志。我們使用布爾運(yùn)算方法。

圖7 使用布爾運(yùn)算符查找
這時匹配條數(shù)驟減到31條。這時發(fā)現(xiàn)了HTTP服務(wù)器(503)錯誤,用這個方法可以快速排除無關(guān)事件。使用布爾運(yùn)算符可進(jìn)行搜索的信息更多,Splunk支持的布爾運(yùn)算符有與、或和非所以第四步的搜索和下述語句相同:
- sourcetype=access_* AND 10.2.1.44 ANDpurchase NOT 200
當(dāng)搜索中含有布爾表達(dá)式時,運(yùn)算符須全部大寫。使用括號將有關(guān)表達(dá)式組合起來,以便進(jìn)行更復(fù)雜的搜索。計(jì)算布爾表達(dá)式時,Splunk將從最里面的括號開始運(yùn)算,接著運(yùn)算括號外面的下一個值對。當(dāng)括號內(nèi)的所有運(yùn)算符都運(yùn)行完成,Splunk將先計(jì)算或子句,然后計(jì)算和或者非子句。
10.使用時間軸功能
現(xiàn)在您已經(jīng)確認(rèn)存在問題類型,現(xiàn)在您想找到導(dǎo)致問題的原因。從發(fā)現(xiàn)顧客無法購買的那次搜索開始,繼續(xù)進(jìn)行下面的步驟。時間軸上的各柱狀體,代表搜索的匹配事件發(fā)生的時間。滑動鼠標(biāo),選中其中一個柱狀體,將彈出工具提示,并顯示時間數(shù)目和該柱距的原始時間戳,1個柱狀體=1分鐘,這個單位根據(jù)你的選擇而動態(tài)變化,這樣您的搜索將僅限于您所選定的1小時內(nèi)所發(fā)生的事件,如圖8所示。

圖8 使用時間軸
Splunk支持使用星號(*)通配符來搜索“所有”或根據(jù)關(guān)鍵詞的部分進(jìn)行模糊檢索事件。該搜索可告訴Splunk希望看到在這段時間內(nèi)發(fā)生的所有事件。
時間軸的其他功能:
點(diǎn)擊選擇上述的所有時間軸,可再次顯示所有時間;
點(diǎn)擊放大,可鎖定與您的搜索匹配的選定事件范圍;
點(diǎn)擊縮小,可擴(kuò)展時間軸,看到更多事件;
11.故障定位方面的應(yīng)用
Splunk能通過搜索出日志中的重要關(guān)鍵字來挖掘出網(wǎng)絡(luò)設(shè)備日志中最有價值的信息。搜索關(guān)鍵字“up OR down”查看日志中存在接口連接情況,splunk將信息轉(zhuǎn)換成時間分布圖,使我們更快捷地查看當(dāng)天或者過去幾天設(shè)備接口連接狀態(tài)。
搜索關(guān)鍵字“duplicate”,發(fā)現(xiàn)有少量存在IP地址沖突的地址,其中地址沖突所發(fā)生的時間以及沖突的源主機(jī)MAC地址都可以一目了然;搜索關(guān)鍵字“SYNflood”,可在防火墻日志中查找SYN攻擊事件;搜索關(guān)鍵字“power”可快速查找重要設(shè)備是否會出現(xiàn)“poweroff”的情況。
搜索關(guān)鍵字“deny”可查找核心交換機(jī)上丟棄數(shù)據(jù)包的具體情況,根據(jù)這些情況可以統(tǒng)計(jì)一些經(jīng)常出現(xiàn)的被丟棄數(shù)據(jù)包源頭。輸入EventCode=6005 or EventCode=6006查詢可以掌握機(jī)器的開關(guān)機(jī)情況,主要是提取6006的事件和6005的事件信息系統(tǒng),思路是在windows 中打開eventvwr.msc(事件查看器)程序打開事件查看器,在左側(cè)窗口中選擇“系統(tǒng)”,從右側(cè)系統(tǒng)事件中查找事件ID為6005、6006的事件(事件ID號為6005的事件表示事件日志服務(wù)已啟動,即開機(jī)事件ID:6006表示關(guān)機(jī)),它們對應(yīng)的時間就分別是開機(jī)時間和關(guān)機(jī)時間。
注意:Windows事件ID含義詳情請點(diǎn)擊這里
12.看視頻學(xué)用Splunk分析日志
最后輕松一下,大家打開這個鏈接(前提是你的瀏覽器支持flash)觀看Splunk視頻指南: http://www.tudou.com/programs/view/7iXM5WfXpDg/
技巧:
在試用版的Splunk中有500MB日志的限制(個人還無法突破限制),如果你直接將主機(jī)架設(shè)在生產(chǎn)環(huán)境,很快就到達(dá)上限,也許你一著急,就把他卸載了,從而錯失真么一款優(yōu)秀的工具,建議開始測試時,找?guī)讉€典型測試設(shè)備在實(shí)驗(yàn)室進(jìn)行功能測試,經(jīng)過自評價后,有必要在聯(lián)系商務(wù)人員,他們可以免費(fèi)為您企業(yè)進(jìn)行安裝調(diào)試。
另外,如果你懶得注冊賬戶,想直接下載Splunk 4.1.7請點(diǎn)擊這里:
1) Windows 平臺 64位 下載地址
2) RedHat Linux平臺 2.6內(nèi)核 64位 下載地址
3) Solaris 9/10 (64 bit) 下載地址
2016年 升級版 下載
1. Windows 64位平臺, v6.4.1