wordpress 微软 centos 开源 编程 nginx Firefox apache Windows shell 云计算 php google 程序员 java linux Ubuntu Android Python mysql

大數據時代的全能日誌分析專家–Splunk安裝與實踐

0.背  景

隨著大家對網絡安全意識的提高,企業網管理人員,必須對IT基礎設置進行監控及安全事件的管理,管理數據的數量和種類非常巨大,那麽就需要有一款能否分析各種日誌數據的工具,經過長期實踐,為大家推薦Splunk這麽一款全能型分析工具。

1.Splunk簡介

Splunk是一款功能強大的、記錄詳細的日誌分析軟件,Splunk是基於原始日誌數據(Raw data)內容建立索引,保存索引的同時也保存原始日誌內容,在大數據時代,種類繁多的日誌如何能快速分析找到你需要的內容呢,你需要一個更加方便智能的工具,那就是Splunk。它能處理常規的日誌格式,比如Apache、squid、系統日誌、郵件日誌等這些對所有日誌先進行索引,然後可以交叉查詢,支持復雜的查詢語句,最後通過直觀的方式表現出來。它與其他開源日誌分析工具不同的是,操作界面支持全中文,而且對於中文版操作系統的日誌收集非常不錯,目前它的商業版本價格的確不便宜(國內天旦、精誠華廈微科都在代理這款產品,商務可聯系他們)。下面我們先看看怎麽安裝和基本使用吧。

2. Splunk索引數據內容

    Splunk的索引範圍涵蓋應用、服務器、網絡設備中的所有日誌、配置、信息、trap、告警、度量以及其他系統性能數據。可靈活地從文件、網絡端口、數據庫、自定義API和接口中實時或按需訪問數據。它的索引對原始數據的完整性無影響。

wKioL1QKxGrgspQKAAFpIlENIY4281.jpg

 

3.Splunk安裝

首先到官方http://www.splunk.com/download註冊一個賬號下載對應的操作系統版本(截止目前最新版本為6.1.3),安裝時記住關閉SELinux功能,另外註意一點,如果要通過WMI的方式來搜集Windows(中文版)日誌的話,那麽Splunk建議裝在Windows操作系統(須4GB以上可用空間)上。如果收集的日誌主要是各種網絡設備及Linux系統日誌建議裝在類Unix系統上。下面以Redhat Linux系統安裝Splunk為例講解安裝過程,啟動過程如圖1所示。

(1).安裝軟件包

#rpm –ivh splunk-4.1.7.95063-linux-2.6-x86_64.rpm

Splunk安裝路徑在/opt/splunk,這個路徑各種UNIX/Linux系統都一樣。

(2).關閉Selinux

#setenforce 0

(3).啟動splunk,命令如下:

#/opt/splunk/bin/splunk start

(4).瀏覽Splunk Web接口,在瀏覽器中輸入以下地址:

http://localhost.localdomain:8000

wKiom1QGybqjlmDjAAQa1p5OAjM714.jpg

图1 Linux下安装Splunk

netstat命令检查8000端口是否处于监听状态。

#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

我們看到以上信息輸出即可通過網址訪問。

4.設置自動運行

1).設置開機自動啟動

#ln -s /usr/local/splunk /bin/splunk/etc/rc2.d/S80splunk

2).設置到服務裏面

#ln -s /usr/local/splunk /bin/splunk/etc/init.d/splunk

5.系統配置

下面我們通過配置來收集客戶端的日誌。

1)通過Syslog收集Cisco網絡設備的日誌

在Cisco網絡設備上的配置命令一般為:

logging <syslog server ip Address>

logging trap <severity>

Splunk默認使用UDP 514端口來監聽syslog消息。例如:

logging 192.168.122.1

logging trap warning

2)通過Syslog收集Linux主機的日誌

在Linux主機上的配置一般為修改/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主機的日誌

首先要確保運行Splunk服務(在服務管理器中顯示為Splunkd)的帳號有權限讀取遠程Windows機器的WMI信息。在《Unix/Linux日誌分析和流量監控》一書中的第14章中還會講到利用WMI收集Windows日誌。

  然後,在Splunk服務器上做一下簡單的配置。這裏假設Splunk的安裝路徑默認為C:\Program Files\Splunk。在C:\Program Files\Splunk\etc\system\local文件下修改inputs.conf文件,添加以下內容:

[script://$SPLUNK_HOME\bin\scripts\splunk-wmi.py]

interval = 10

source = wmi

sourcetype = wmi

disabled = 0

接著,在同一目錄中新建一個文本文件,命名為wmi.conf,並添加以下內容:

[WMI:]       

server = <Remote Windows host IPAddress>

interval = 60

event_log_file = <Event log type>

disabled = 0

比如監控IP地址為192.168.122.10的Windows主機上Application和System的Event Log:

[WMI:AppAndSys]       

server = 192.168.122.1

interval = 60

event_log_file = Application, System

disabled = 0

其實還可以通過Syslog來收集Windows的日誌,這裏可以用一個免費工具NTSyslog(下載)。

6.設置日誌分析目錄

當首次進入Web界面後,需要重設密碼並添加數據。進入系統可以將默認語言選擇為中文,開始導入數據,如圖2所示。

wKiom1QGygrx2ERtAAGbk4r5jVI138.jpg

圖2 導入數據

選擇數據源(從本地),接著選“從文件和目錄”,選擇/var/log即可。如圖3所示。從圖中我們也可以看出Splunk默認支持的日誌種類很多,包含大多數運維人員平時工作中所需要分析的日誌類型。

wKioL1QGyhuyW9HHAAIFcO2fPoY593.jpg

圖3 選擇本地數據源

點擊應用菜單下方的search即可看到生成的日誌報告(比如cron日誌,mail日誌。當然也可以把我們所需要記錄的日誌比如PHP錯誤日誌等都輸出到/var/log目錄下,對其進行分析)。

7 .Splunk搜索的使用

系統中的搜索工具欄是Splunk最強大的工具,為了學習Splunk,我們先在http://www.splunk.com/base/images/Tutorial/Sampledata.zip下載一個演示文件。我們學習如何添加數據,首先向Splunk添加示例數據方法如下:

在Splunk首頁中點擊右上角的Home按鈕,再選擇添加數據,選擇服務器本地文件,當你選擇正確系統提示:“Use auto-detected source type:access_combined_wcookie”最後保存配置,當系統提示索引建立後就可以查看日誌。

wKiom1QGyiOC14z7AANgQKI1IrQ746.jpg

圖4 開始搜索

我們看看儀表盤的內容,讀者應該已經熟悉搜索欄及時間範圍選擇,摘要儀表板上也有這些內容。但搜索儀表板上還包含其他內容,比如事件記錄、時間軸、字段菜單及檢索到的事件列表或搜索結果。

1).匹配及掃描事件記錄:在搜索中,Splunk在檢索時將顯示兩組事件記錄:一組為匹配事件記錄,另一組為已掃描事件記錄。搜索完成後,時間軸上方的記錄顯示的是匹配事件的總數。時間軸下方事件列表上方的記錄顯示用戶所選時間範圍內的時間數目。稍後可以看到,當向下分析事件時,此數目會發生變化。

2).事件的時間軸:時間軸能直觀的顯示出每一時刻發生的事件。當時間軸隨著搜索結果不斷更新時,可能會註意到有條狀圖案。每一條狀圖案的高度表示時間記錄。時間軸的峰值和谷值可表示活動高峰期或服務器停機。此時,時間軸可有效用於強調時間模式或調查各事件活動的高峰期和低谷期。時間軸選項位於時間軸上方。還可以放大或縮小圖表。

3).字段菜單:前面說過將數據編入索引時,Splunk可自動按名稱和值的格式識別並生成數據信息,我們把這稱作是字段。當您進行搜索時,Splunk將把其從字段菜單上識別的所有字段列在搜索結果旁邊。您可以選擇其他字段來顯示您搜索的事件。所選字段都已被設置為搜索結果可見格式。將默認顯示主機、源及源類型。其它字段是Splunk從您的搜索結果中抽取的。

4).事件查看器:事件查看器將顯示Splunk搜索到的與您的搜索匹配的事件。事件查看器位於時間軸下方。事件默認顯示為列表,您也可以選用表格查看。選擇按表格形式查看事件時,表格只顯示已選字段。

8.Splunk搜索實例解析

我們先構造一個場景,假如有人投訴網站,說在提交表單時總是提示有某個IP地址錯誤, 10.2.1.44,這時我們該如何利用搜索功能來查找問題呢?

我們可以輸入如下內容:sourcetype=access_combined_wcookie10.2.1.44

當然,如果你不知道數據源,那麽你也可以直接輸入IP地址,這樣匹配的條目會非常多,如果能精確找到數據源就很容易找到問題。

wKiom1QGyjLAH11ZAALr2TxuO08855.jpg

圖5  使用搜索功能

access_combined_wcookie代表數據源,要根據你提交的日誌而定。註意,當您在搜索欄中輸入的同時,將彈出Splunk“搜索助手”這個很重要,可以幫助你解決搜索中的很多問題。就如同MS Office中的幫助一樣好用。為了縮小範圍我們做如下操作,我們還應該在搜索欄中鍵入purchase:

sourcetype=access_combined_wcookie10.2.1.44 purchase

wKioL1QGykKgUfPUAAN9EciBMPs985.jpg

圖6 縮小搜索範圍

請看左上角搜到的日誌從109降到83條。註意,搜索關鍵詞時,不用區分大小寫。

9.使用布爾運算符查找日誌

Apache服務器日誌中發現大部分事件的狀態碼為“200”,它代表“成功”。現在有人投訴網站出現了問題,那麽就要找出不是200的日誌。我們使用布爾運算方法。

wKioL1QGyk6hxKl1AAONWBNLLMY018.jpg

圖7 使用布爾運算符查找

這時匹配條數驟減到31條。這時發現了HTTP服務器(503)錯誤,用這個方法可以快速排除無關事件。使用布爾運算符可進行搜索的信息更多,Splunk支持的布爾運算符有與、或和非所以第四步的搜索和下述語句相同:

sourcetype=access_* AND 10.2.1.44 ANDpurchase NOT 200

當搜索中含有布爾表達式時,運算符須全部大寫。使用括號將有關表達式組合起來,以便進行更復雜的搜索。計算布爾表達式時,Splunk將從最裏面的括號開始運算,接著運算括號外面的下一個值對。當括號內的所有運算符都運行完成,Splunk將先計算或子句,然後計算和或者非子句。

10.使用時間軸功能

現在您已經確認存在問題類型,現在您想找到導致問題的原因。從發現顧客無法購買的那次搜索開始,繼續進行下面的步驟。時間軸上的各柱狀體,代表搜索的匹配事件發生的時間。滑動鼠標,選中其中一個柱狀體,將彈出工具提示,並顯示時間數目和該柱距的原始時間戳,1個柱狀體=1分鐘,這個單位根據你的選擇而動態變化,這樣您的搜索將僅限於您所選定的1小時內所發生的事件,如圖8所示。

wKioL1QGyl_TPmIpAATZ-e71AXE614.jpg

圖8 使用時間軸

Splunk支持使用星號(*)通配符來搜索“所有”或根據關鍵詞的部分進行模糊檢索事件。該搜索可告訴Splunk希望看到在這段時間內發生的所有事件。

時間軸的其他功能:

點擊選擇上述的所有時間軸,可再次顯示所有時間;

點擊放大,可鎖定與您的搜索匹配的選定事件範圍;

點擊縮小,可擴展時間軸,看到更多事件;

11.故障定位方面的應用

Splunk能通過搜索出日誌中的重要關鍵字來挖掘出網絡設備日誌中最有價值的信息。搜索關鍵字“up OR down”查看日誌中存在接口連接情況,splunk將信息轉換成時間分布圖,使我們更快捷地查看當天或者過去幾天設備接口連接狀態。

搜索關鍵字“duplicate”,發現有少量存在IP地址沖突的地址,其中地址沖突所發生的時間以及沖突的源主機MAC地址都可以一目了然;搜索關鍵字“SYNflood”,可在防火墻日誌中查找SYN攻擊事件;搜索關鍵字“power”可快速查找重要設備是否會出現“poweroff”的情況。

搜索關鍵字“deny”可查找核心交換機上丟棄數據包的具體情況,根據這些情況可以統計一些經常出現的被丟棄數據包源頭。輸入EventCode=6005 or EventCode=6006查詢可以掌握機器的開關機情況,主要是提取6006的事件和6005的事件信息系統,思路是在windows 中打開eventvwr.msc(事件查看器)程序打開事件查看器,在左側窗口中選擇“系統”,從右側系統事件中查找事件ID為6005、6006的事件(事件ID號為6005的事件表示事件日誌服務已啟動,即開機事件ID:6006表示關機),它們對應的時間就分別是開機時間和關機時間。

註意:Windows事件ID含義詳情請點擊這裏

12.看視頻學用Splunk分析日誌

最後輕松一下,大家打開這個鏈接(前提是你的瀏覽器支持flash)觀看Splunk視頻指南: http://www.tudou.com/programs/view/7iXM5WfXpDg/ 

技巧:

在試用版的Splunk中有500MB日誌的限制(個人還無法突破限制),如果你直接將主機架設在生產環境,很快就到達上限,也許你一著急,就把他卸載了,從而錯失真麽一款優秀的工具,建議開始測試時,找幾個典型測試設備在實驗室進行功能測試,經過自評價後,有必要在聯系商務人員,他們可以免費為您企業進行安裝調試。

另外,如果你懶得註冊賬戶,想直接下載Splunk 4.1.7請點擊這裏:

1) Windows 平臺 64位 下載地址

2) RedHat Linux平臺 2.6內核 64位 下載地址

3) Solaris 9/10 (64 bit) 下載地址

4)更多 Splunk學習手冊

2016年 升級版 下載

1. Windows 64位平臺,   v6.4.1

 

延伸阅读

    评论