大數(shù)據(jù)時(shí)代的全能日志分析專家--Splunk安裝與實(shí)踐
背 景
隨著大家對(duì)網(wǎng)絡(luò)安全意識(shí)的提高,企業(yè)網(wǎng)管理人員,必須對(duì)IT基礎(chǔ)設(shè)置進(jìn)行監(jiān)控及安全事件的管理,管理數(shù)據(jù)的數(shù)量和種類(lèi)非常巨大,那么就需要有一款能否分析各種日志數(shù)據(jù)的工具,經(jīng)過(guò)長(zhǎng)期實(shí)踐,為大家推薦Splunk這么一款全能型分析工具。
1.Splunk簡(jiǎn)介
Splunk是一款功能強(qiáng)大的、記錄詳細(xì)的日志分析軟件,Splunk是基于原始日志數(shù)據(jù)(Raw data)內(nèi)容建立索引,保存索引的同時(shí)也保存原始日志內(nèi)容,在大數(shù)據(jù)時(shí)代,種類(lèi)繁多的日志如何能快速分析找到你需要的內(nèi)容呢,你需要一個(gè)更加方便智能的工具,那就是Splunk。它能處理常規(guī)的日志格式,比如Apache、Squid、系統(tǒng)日志、郵件日志等這些對(duì)所有日志先進(jìn)行索引,然后可以交叉查詢,支持復(fù)雜的查詢語(yǔ)句,最后通過(guò)直觀的方式表現(xiàn)出來(lái)。它與其他開(kāi)源日志分析工具不同的是,操作界面支持全中文,而且對(duì)于中文版操作系統(tǒng)的日志收集非常不錯(cuò),目前它的商業(yè)版本價(jià)格的確不便宜(國(guó)內(nèi)天旦、精誠(chéng)華廈微科都在代理這款產(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ù)庫(kù)、自定義API和接口中實(shí)時(shí)或按需訪問(wèn)數(shù)據(jù)。它的索引對(duì)原始數(shù)據(jù)的完整性無(wú)影響。

3.Splunk安裝
首先到官方http://www.splunk.com/download注冊(cè)一個(gè)賬號(hào)下載對(duì)應(yīng)的操作系統(tǒng)版本(截止目前最新版本為6.1.3),安裝時(shí)記住關(guān)閉SELinux功能,另外注意一點(diǎn),如果要通過(guò)WMI的方式來(lái)搜集Windows(中文版)日志的話,那么Splunk建議裝在Windows操作系統(tǒng)(須4GB以上可用空間)上。如果收集的日志主要是各種網(wǎng)絡(luò)設(shè)備及Linux系統(tǒng)日志建議裝在類(lèi)Unix系統(tǒng)上。下面以Redhat Linux系統(tǒng)安裝Splunk為例講解安裝過(guò)程,啟動(dòng)過(guò)程如圖1所示。
(1).安裝軟件包
- #rpm –ivh splunk-4.1.7.95063-linux-2.6-x86_64.rpm
Splunk安裝路徑在/opt/splunk,這個(gè)路徑各種UNIX/Linux系統(tǒng)都一樣。
(2).關(guān)閉Selinux
- #setenforce 0
(3).啟動(dòng)splunk,命令如下:
- #/opt/splunk/bin/splunk start
(4).瀏覽Splunk Web接口,在瀏覽器中輸入以下地址:
http://localhost.localdomain:8000

圖1 Linux下安裝Splunk
用netstat命令檢查8000端口是否處于監(jiān)聽(tīng)狀態(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
我們看到以上信息輸出即可通過(guò)網(wǎng)址訪問(wèn)。
4.設(shè)置自動(dòng)運(yùn)行
1).設(shè)置開(kāi)機(jī)自動(dòng)啟動(dòng)
- #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)配置
下面我們通過(guò)配置來(lái)收集客戶端的日志。
1)通過(guò)Syslog收集Cisco網(wǎng)絡(luò)設(shè)備的日志
在Cisco網(wǎng)絡(luò)設(shè)備上的配置命令一般為:
- logging <syslog server IP Address>
- logging trap <severity>
Splunk默認(rèn)使用UDP 514端口來(lái)監(jiān)聽(tīng)syslog消息。例如:
- logging 192.168.122.1
- logging trap warning
2)通過(guò)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)通過(guò)WMI來(lái)收集Windows主機(jī)的日志
首先要確保運(yùn)行Splunk服務(wù)(在服務(wù)管理器中顯示為Splunkd)的帳號(hào)有權(quán)限讀取遠(yuǎn)程Windows機(jī)器的WMI信息。在《Unix/Linux日志分析和流量監(jiān)控》一書(shū)中的第14章中還會(huì)講到利用WMI收集Windows日志。
然后,在Splunk服務(wù)器上做一下簡(jiǎn)單的配置。這里假設(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
接著,在同一目錄中新建一個(gè)文本文件,命名為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í)還可以通過(guò)Syslog來(lái)收集Windows的日志,這里可以用一個(gè)免費(fèi)工具NTSyslog(下載)。
6.設(shè)置日志分析目錄
當(dāng)首次進(jìn)入Web界面后,需要重設(shè)密碼并添加數(shù)據(jù)。進(jìn)入系統(tǒng)可以將默認(rèn)語(yǔ)言選擇為中文,開(kāi)始導(dǎo)入數(shù)據(jù),如圖2所示。

圖2 導(dǎo)入數(shù)據(jù)
選擇數(shù)據(jù)源(從本地),接著選“從文件和目錄”,選擇/var/log即可。如圖3所示。從圖中我們也可以看出Splunk默認(rèn)支持的日志種類(lèi)很多,包含大多數(shù)運(yùn)維人員平時(shí)工作中所需要分析的日志類(lèi)型。

圖3 選擇本地?cái)?shù)據(jù)源
點(diǎn)擊應(yīng)用菜單下方的search即可看到生成的日志報(bào)告(比如cron日志,mail日志。當(dāng)然也可以把我們所需要記錄的日志比如php錯(cuò)誤日志等都輸出到/var/log目錄下,對(duì)其進(jìn)行分析)。
7 .Splunk搜索的使用
系統(tǒng)中的搜索工具欄是Splunk最強(qiáng)大的工具,為了學(xué)習(xí)Splunk,我們先在http://www.splunk.com/base/images/Tutorial/Sampledata.zip下載一個(gè)演示文件。我們學(xué)習(xí)如何添加數(shù)據(jù),首先向Splunk添加示例數(shù)據(jù)方法如下:
在Splunk首頁(yè)中點(diǎn)擊右上角的Home按鈕,再選擇添加數(shù)據(jù),選擇服務(wù)器本地文件,當(dāng)你選擇正確系統(tǒng)提示:“Use auto-detected source type:access_combined_wcookie”最后保存配置,當(dāng)系統(tǒng)提示索引建立后就可以查看日志。

圖4 開(kāi)始搜索
我們看看儀表盤(pán)的內(nèi)容,讀者應(yīng)該已經(jīng)熟悉搜索欄及時(shí)間范圍選擇,摘要儀表板上也有這些內(nèi)容。但搜索儀表板上還包含其他內(nèi)容,比如事件記錄、時(shí)間軸、字段菜單及檢索到的事件列表或搜索結(jié)果。
1).匹配及掃描事件記錄:在搜索中,Splunk在檢索時(shí)將顯示兩組事件記錄:一組為匹配事件記錄,另一組為已掃描事件記錄。搜索完成后,時(shí)間軸上方的記錄顯示的是匹配事件的總數(shù)。時(shí)間軸下方事件列表上方的記錄顯示用戶所選時(shí)間范圍內(nèi)的時(shí)間數(shù)目。稍后可以看到,當(dāng)向下分析事件時(shí),此數(shù)目會(huì)發(fā)生變化。
2).事件的時(shí)間軸:時(shí)間軸能直觀的顯示出每一時(shí)刻發(fā)生的事件。當(dāng)時(shí)間軸隨著搜索結(jié)果不斷更新時(shí),可能會(huì)注意到有條狀圖案。每一條狀圖案的高度表示時(shí)間記錄。時(shí)間軸的峰值和谷值可表示活動(dòng)高峰期或服務(wù)器停機(jī)。此時(shí),時(shí)間軸可有效用于強(qiáng)調(diào)時(shí)間模式或調(diào)查各事件活動(dòng)的高峰期和低谷期。時(shí)間軸選項(xiàng)位于時(shí)間軸上方。還可以放大或縮小圖表。
3).字段菜單:前面說(shuō)過(guò)將數(shù)據(jù)編入索引時(shí),Splunk可自動(dòng)按名稱和值的格式識(shí)別并生成數(shù)據(jù)信息,我們把這稱作是字段。當(dāng)您進(jìn)行搜索時(shí),Splunk將把其從字段菜單上識(shí)別的所有字段列在搜索結(jié)果旁邊。您可以選擇其他字段來(lái)顯示您搜索的事件。所選字段都已被設(shè)置為搜索結(jié)果可見(jiàn)格式。將默認(rèn)顯示主機(jī)、源及源類(lèi)型。其它字段是Splunk從您的搜索結(jié)果中抽取的。
4).事件查看器:事件查看器將顯示Splunk搜索到的與您的搜索匹配的事件。事件查看器位于時(shí)間軸下方。事件默認(rèn)顯示為列表,您也可以選用表格查看。選擇按表格形式查看事件時(shí),表格只顯示已選字段。
8.Splunk搜索實(shí)例解析
我們先構(gòu)造一個(gè)場(chǎng)景,假如有人投訴網(wǎng)站,說(shuō)在提交表單時(shí)總是提示有某個(gè)IP地址錯(cuò)誤, 10.2.1.44,這時(shí)我們?cè)撊绾卫盟阉鞴δ軄?lái)查找問(wèn)題呢?
我們可以輸入如下內(nèi)容:
- sourcetype=access_combined_wcookie10.2.1.44
當(dāng)然,如果你不知道數(shù)據(jù)源,那么你也可以直接輸入IP地址,這樣匹配的條目會(huì)非常多,如果能精確找到數(shù)據(jù)源就很容易找到問(wèn)題。

圖5 使用搜索功能
access_combined_wcookie代表數(shù)據(jù)源,要根據(jù)你提交的日志而定。注意,當(dāng)您在搜索欄中輸入的同時(shí),將彈出Splunk“搜索助手”這個(gè)很重要,可以幫助你解決搜索中的很多問(wèn)題。就如同MS Office中的幫助一樣好用。為了縮小范圍我們做如下操作,我們還應(yīng)該在搜索欄中鍵入purchase:
- sourcetype=access_combined_wcookie10.2.1.44 purchase

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

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

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
























