原創作品,允許轉載,轉載時請務必以超鏈接形式標明文章 原始出處 、作者信息和本聲明。否則將追究法律責任。http://chenguang.blog.51cto.com/350944/1548355
大數據時代的全能日誌分析專家
--Splunk安裝與實踐
( 此文已刊發在《網絡運維與管理》雜誌 )
0.背 景
隨着大家對網絡安全意識的提高,企業網管理人員,必須對IT基礎設置進行監控及安全事件的管理,管理數據的數量和種類非常巨大,那麼就需要有一款能否分析各種日誌數據的工具,經過長期實踐,爲大家推薦Splunk這麼一款全能型分析工具。
1.Splunk簡介
Splunk是一款功能強大的、記錄詳細的日誌分析軟件,Splunk是基於原始日誌數據(Raw data)內容建立索引,保存索引的同時也保存原始日誌內容,在大數據時代,種類繁多的日誌如何能快速分析找到你需要的內容呢,你需要一個更加方便智能的工具,那就是Splunk。它能處理常規的日誌格式,比如Apache、Squid、系統日誌、郵件日誌等這些對所有日誌先進行索引,然後可以交叉查詢,支持複雜的查詢語句,最後通過直觀的方式表現出來。它與其他開源日誌分析工具不同的是,操作界面支持全中文,而且對於中文版操作系統的日誌收集非常不錯,目前它的商業版本價格的確不便宜(國內天旦、精誠華廈微科都在代理這款產品,商務可聯繫他們)。下面我們先看看怎麼安裝和基本使用吧。
2.Splunk安裝
首先到官方http://www.splunk.com/download註冊一個賬號下載對應的操作系統版本(截止目前最新版本爲6.1.3),安裝時記住關閉SELinux功能,另外注意一點,如果要通過WMI的方式來蒐集Windows(中文版)日誌的話,那麼Splunk建議裝在Windows操作系統(須4GB以上可用空間)上。如果收集的日誌主要是各種網絡設備及Linux系統日誌建議裝在類Unix系統上。下面以Redhat Linux系統安裝Splunk爲例講解安裝過程,啓動過程如圖1所示。
(1).安裝軟件包
#rpm –ivhsplunk-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
圖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
我們看到以上信息輸出即可通過網址訪問。
3.設置自動運行
1).設置開機自動啓動
#ln -s /usr/local/splunk/bin/splunk/etc/rc2.d/S80splunk
2).設置到服務裏面
#ln -s /usr/local/splunk/bin/splunk/etc/init.d/splunk
4.系統配置
下面我們通過配置來收集客戶端的日誌。
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:<Name>]
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(下載)。
5.設置日誌分析目錄
當首次進入Web界面後,需要重設密碼並添加數據。進入系統可以將默認語言選擇爲中文,開始導入數據,如圖2所示。
圖2 導入數據
選擇數據源(從本地),接着選“從文件和目錄”,選擇/var/log即可。如圖3所示。從圖中我們也可以看出Splunk默認支持的日誌種類很多,包含大多數運維人員平時工作中所需要分析的日誌類型。
圖3 選擇本地數據源
點擊應用菜單下方的search即可看到生成的日誌報告(比如cron日誌,mail日誌。當然也可以把我們所需要記錄的日誌比如php錯誤日誌等都輸出到/var/log目錄下,對其進行分析)。
6 .Splunk搜索的使用
系統中的搜索工具欄是Splunk最強大的工具,爲了學習Splunk,我們先在http://www.splunk.com/base/p_w_picpaths/Tutorial/Sampledata.zip下載一個演示文件。我們學習如何添加數據,首先向Splunk添加示例數據方法如下:
在Splunk首頁中點擊右上角的Home按鈕,再選擇添加數據,選擇服務器本地文件,當你選擇正確系統提示:“Use auto-detected source type:access_combined_wcookie”最後保存配置,當系統提示索引建立後就可以查看日誌。
圖4 開始搜索
我們看看儀表盤的內容,讀者應該已經熟悉搜索欄及時間範圍選擇,摘要儀表板上也有這些內容。但搜索儀表板上還包含其他內容,比如事件記錄、時間軸、字段菜單及檢索到的事件列表或搜索結果。
1).匹配及掃描事件記錄:在搜索中,Splunk在檢索時將顯示兩組事件記錄:一組爲匹配事件記錄,另一組爲已掃描事件記錄。搜索完成後,時間軸上方的記錄顯示的是匹配事件的總數。時間軸下方事件列表上方的記錄顯示用戶所選時間範圍內的時間數目。稍後可以看到,當向下分析事件時,此數目會發生變化。
2).事件的時間軸:時間軸能直觀的顯示出每一時刻發生的事件。當時間軸隨着搜索結果不斷更新時,可能會注意到有條狀圖案。每一條狀圖案的高度表示時間記錄。時間軸的峯值和谷值可表示活動高峯期或服務器停機。此時,時間軸可有效用於強調時間模式或調查各事件活動的高峯期和低谷期。時間軸選項位於時間軸上方。還可以放大或縮小圖表。
3).字段菜單:前面說過將數據編入索引時,Splunk可自動按名稱和值的格式識別並生成數據信息,我們把這稱作是字段。當您進行搜索時,Splunk將把其從字段菜單上識別的所有字段列在搜索結果旁邊。您可以選擇其他字段來顯示您搜索的事件。所選字段都已被設置爲搜索結果可見格式。將默認顯示主機、源及源類型。其它字段是Splunk從您的搜索結果中抽取的。
4).事件查看器:事件查看器將顯示Splunk搜索到的與您的搜索匹配的事件。事件查看器位於時間軸下方。事件默認顯示爲列表,您也可以選用表格查看。選擇按表格形式查看事件時,表格只顯示已選字段。
7.Splunk搜索實例解析
我們先構造一個場景,假如有人投訴網站,說在提交表單時總是提示有某個IP地址錯誤, 10.2.1.44,這時我們該如何利用搜索功能來查找問題呢?
我們可以輸入如下內容:sourcetype=access_combined_wcookie10.2.1.44
當然,如果你不知道數據源,那麼你也可以直接輸入IP地址,這樣匹配的條目會非常多,如果能精確找到數據源就很容易找到問題。
圖5 使用搜索功能
access_combined_wcookie代表數據源,要根據你提交的日誌而定。注意,當您在搜索欄中輸入的同時,將彈出Splunk“搜索助手”這個很重要,可以幫助你解決搜索中的很多問題。就如同MS Office中的幫助一樣好用。爲了縮小範圍我們做如下操作,我們還應該在搜索欄中鍵入purchase:
sourcetype=access_combined_wcookie10.2.1.44 purchase
圖6 縮小搜索範圍
請看左上角搜到的日誌從109降到83條。注意,搜索關鍵詞時,不用區分大小寫。
8.使用布爾運算符查找日誌
Apache服務器日誌中發現大部分事件的狀態碼爲“200”,它代表“成功”。現在有人投訴網站出現了問題,那麼就要找出不是200的日誌。我們使用布爾運算方法。
圖7 使用布爾運算符查找
這時匹配條數驟減到31條。這時發現了HTTP服務器(503)錯誤,用這個方法可以快速排除無關事件。使用布爾運算符可進行搜索的信息更多,Splunk支持的布爾運算符有與、或和非所以第四步的搜索和下述語句相同:
sourcetype=access_* AND 10.2.1.44 ANDpurchase NOT 200
當搜索中含有布爾表達式時,運算符須全部大寫。使用括號將有關表達式組合起來,以便進行更復雜的搜索。計算布爾表達式時,Splunk將從最裏面的括號開始運算,接着運算括號外面的下一個值對。當括號內的所有運算符都運行完成,Splunk將先計算或子句,然後計算和或者非子句。
9.使用時間軸功能
現在您已經確認存在問題類型,現在您想找到導致問題的原因。從發現顧客無法購買的那次搜索開始,繼續進行下面的步驟。時間軸上的各柱狀體,代表搜索的匹配事件發生的時間。滑動鼠標,選中其中一個柱狀體,將彈出工具提示,並顯示時間數目和該柱距的原始時間戳,1個柱狀體=1分鐘,這個單位根據你的選擇而動態變化,這樣您的搜索將僅限於您所選定的1小時內所發生的事件,如圖8所示。
圖8 使用時間軸
Splunk支持使用星號(*)通配符來搜索“所有”或根據關鍵詞的部分進行模糊檢索事件。該搜索可告訴Splunk希望看到在這段時間內發生的所有事件。
時間軸的其他功能:
點擊選擇上述的所有時間軸,可再次顯示所有時間;
點擊放大,可鎖定與您的搜索匹配的選定事件範圍;
點擊縮小,可擴展時間軸,看到更多事件;
10.故障定位方面的應用
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含義詳情請點擊這裏
11.看視頻學用Splunk分析日誌
最後輕鬆一下,大家打開這個鏈接(前提是你的瀏覽器支持flash)觀看Splunk視頻指南: http://www.tudou.com/programs/view/7iXM5WfXpDg/
技巧:
在試用版的Splunk中有500MB日誌的限制(個人還無法突破限制),如果你直接將主機架設在生產環境,很快就到達上限,也許你一着急,就把他卸載了,從而錯失真麼一款優秀的工具,建議開始測試時,找幾個典型測試設備在實驗室進行功能測試,經過自評價後,有必要在聯繫商務人員,他們可以免費爲您企業進行安裝調試。
本文出自 “李晨光原創技術博客” 博客,請務必保留此出處http://chenguang.blog.51cto.com/350944/1548355