Splunk大數據分析經驗分享


轉自:http://www.freebuf.com/articles/database/123006.html

Splunk大數據分析經驗分享:從入門到奪門而逃

Porsche 2016-12-19 1426579人圍觀 ,發現 30 個不明物體 數據安全特別企划

* 作者:Porsche(U神),本文屬FreeBuf原創獎勵計划文章,未經許可禁止轉載

大家好,我是U神,關於Splunk的文章網上非常少,中文的官方文檔也很少。這篇文章的都是我觀看某Splunk視頻(那視頻好貴,我是通過某XX看到的)后寫下的學習筆記,我用自己通俗易懂的語言非常詳細地寫了splunk的安裝、CLI命令、SPL語言、數據分析等。記錄這些筆記花了較長時間,一方面是讓學習更加深刻,一方面防止忘記了后可以找找筆記再看看,另一方面發出來也想分享給每一個想學習Splunk的朋友,相信這篇文章會是你入門的最佳選擇。

目錄

0×01 初識splunk0x02 Linux上安裝Splunk0x03 Windows上安裝Splunk

0×04 Splunk安裝后配置 

0×05 Splunk的目錄結構 

0×06 Splunk常用的CLI命令 

 0×07 實戰-導入數據前的准備 

0×08 實戰-導入並分析本地數據-1

0×09 實戰-導入並分析本地數據-2

0×10 使用轉發器轉發數據

0×11 實戰-數據分析和可視化-1 

0×12 實戰-數據分析和可視化-2 

0×13 郵箱服務器配置 

0×14 創建APP 0X15 Splunk技巧

0×15 splunk技巧

0×01 初識splunk

一、公司:

美國Splunk公司,成立於2004年,2012年納斯達克上市,第一家大數據上市公司,榮獲眾多獎項和殊榮。 總部位於美國舊金山,倫敦為國際總部,香港設有亞太支持中心,上海設有海外第一個研發中心。 目前國內最大的客戶許可是800GB/天。 產品:Splunk Enterprise【企業版】、Splunk Free【免費版】、Splunk Cloud、Splunk Hunk【大數據分析平台】、Splunk Apps【基於企業版的插件】等。

二、產品:

Splunk Enterprise,企業版,B/S架構,按許可收費,即每天索引的數據量。

(購買20GB的許可,則默認每天可索引20G數據量;一次購買永久使用;如果使用試用版,試用期結束之后會切換到免費版)

Splunk Free,免費版,每天最大數據索引量500MB,可使用絕大多數企業版功能。

(免費版沒有例如:身份驗證、分布式搜索、集群等功能)

Splunk Universal Forwarder,通用轉發器,是Splunk提供的數據采集組件,免費,部署在數據源端,無UI界面,非常輕量,占用資源小。

(轉發器無許可證,是免費的;企業版專用的;所以部署在數據源,例如:部署在你的WEB服務器上,監控你的WEB日志,實時監控,產生一條日志則轉發一條,進行增量轉發;一般配置修改配置文件或者使用CLI命令。占用資源小)

三、Splunk是什么

面向機器數據的全文搜索引擎;

(使用搜索引擎的方式處理數據;支持海量級數據處理)

准實時的日志處理平台;

基於時間序列的索引器;

大數據分析平台;

一體化的平台:數據采集->存儲->分析->可視化;

通用的搜索引擎,不限數據源,不限數據格式;

提供榮獲專利的專用搜索語言SPL(Search Processing Language),語法上類似SQL語言

Splunk Apps 提供更多功能

(針對操作系統、思科網絡設備,splunk都提供了專用的APP,接入數據源都可以看到直觀的儀盤表。)

四、機器數據是什么

機器數據是指:設備和軟件產生的日志數據、性能數據、網絡數據包。這些數據都是一些非結構化的數據,我們可以統一將這些數據統一采集到splunk之后,splunk可以對這些數據進行索引、調查、監控、可視化等。

01.png

五、Splunk組件

索引器:索引器是用於為數據創建索引的Splunk Enterprise 實例。索引器將原始數據轉換為事件並將事件存儲至索引(Index)中。索引器還搜索索引數據,以響應搜索請求。

搜索頭:在分布式搜索環境中,搜索頭是處理搜索管理功能、指引搜索請求至一組搜索節點,然后將結果合並返回至用戶的Splunk Enterprise 實例。如果該實例僅搜索不索引,通常被稱為專用搜索頭。

搜索節點:在分布式搜索環境中,搜索節點是建立索引並完成源自搜索頭搜索請求的Splunk Enterprise實例。

轉發器:轉發器是將數據轉發至另一個Splunk Enterprise 實例(索引器或另一個轉發器)或至第三方系統的Splunk Enterprise 實例。

接收器:接收器是經配置從轉發器接收數據的Splunk Enterprise 實例。接收器為索引器或另一個轉發器。

應用:應用是配置、知識對象和客戶設計的視圖和儀表板的集合,擴展Splunk Enterprise 環境以適應Unix 或Windows 系統管理員、網絡安全專家、網站經理、業務分析師等組織團隊的特定需求。單個Splunk Enterprise 安裝可以同時運行多個應用。

六、Splunk分布式架構

02.png 

如上圖所示: 

1、可分為三層:第一層為數據源端:如應用服務器、服務總線、網絡設備、防火牆等。 

2、如果要采集這些數據例如:應用服務器可安裝splunk的轉發器,防火牆的數據可以通過TCP\UPD端口將數據發送到Splunk的中間層,Splunk的中間層稱為splunk的索引器(接收器),數據將存儲在這一層。 

3、用戶使用search head檢索實例,search head將檢索請求發送到各個索引器中。再把結果匯集到search head中,最后呈現給用戶觀看。 

4、 數據源的轉發器會將數據轉發到多個splunk的實例中,轉發器將進行自動負載均衡。

七、通用轉發器

轉發器分為重量(Heavy)、輕量(Light)和通用轉發器(Universal)三種類型。

最常用的是通用轉發器,其他兩類很少使用。

與完整Splunk Enterprise實例相比,通用轉發器的唯一目的是轉發數據。與完整Splunk Enterprise 實例不同的是,您無法使用通用轉發器索引或搜索數據。

為實現更高性能和更低的內存占用,它具有幾個限制:

通用轉發器沒有搜索、索引或告警功能。

通用轉發器不解析數據。

通用轉發器不通過syslog 輸出數據。

與完整Splunk Enterprise 不同的是,通用轉發器不包含捆綁的Python 版本。

八、多種應用場景

03.png

0×02 Linux上安裝Splunk

一、配置時間:

配置一致的時間

建議搭建企業內NTP服務器,將所有相關設備指向該服務器

(如果各個機器的時間不一致,就會因此產生問題。所以建議搭建一台NTP服務器,讓所有設備的時間指向NTP服務器,讓所有設備統一時間)

二、安裝准備

本次安裝基於CentOS 6.7, 64位

建議部署在64位環境下

Splunk Enterprise:

splunk-6.4.2-00f5bb3fa822-Linux-x86_64.tgz

Splunk 通用轉發器:

splunkforwarder-6.4.2-00f5bb3fa822-Linux-x86_64.tgz

本次以root用戶安裝(可以使用非root)

三、 安裝步驟

1)、wget下載tgz的壓縮包。

wget -c https://download.splunk.com/products/splunk/releases/6.5.1/linux/splunk-6.5.1-f74036626f0c-Linux-x86_64.tgz ;

2)、解壓縮:#tar -zxvf splunk-6.5.1-f74036626f0c-Linux-x86_64.tgz -C /opt (默認我們解壓到/opt目錄下)

04.png

3)、splunk的可執行程序都放在/opt/splunk/bin/下,啟動該程序應執行splunk,splunk命令參數如下:

#注意:以下命令我們稱之為CLI命令,如下:通用轉發器和splunk命令都可以如下執行

./splunk

start      //啟動splunk

--accept-license  //自動接收許可

restart   //重啟splunk

status    //查看splunk狀態

version   //查看splunk版

開始啟動的時候記得記住加上–accept-license,這樣更便於我們安裝。

Image

4)、splunk安裝之后開啟Splunk Web端口8000。Splunkd端口8089端為管理端口。 安裝之后我們可以在瀏覽器中訪問splunk 8000端口的WEB界面。

06.png

注意:如果外部計算機無法訪問它。需要關閉iptables服務或將該端口加入策略中

 #services iptables stop [其它類unix系統關閉防火牆] systemctl stop firewalld.service [CentOS 7下停止防火牆] 

Splunk地址如:http://192.168.199.205:8000,進入splunk默認的管理員為:admin 、密碼為changeme。第一登錄便會強制要求修改密碼

配置splunk開機啟動 ./splunk enable boot-start //這樣每次開機,splunk服務都會開機啟動

圖片

#通過上述命令查看splunk狀態和版本信息 ./splunk status

圖片

#查看進程相關信息 : ps -f | grep splunk

圖片

四、 Splunk的卸載

./splunk disable boot-start //關閉自啟動

./splunk stop //停止splunk

./rm–rf/opt/splunk //移除splunk安裝目錄

卸載要慎重,注意數據備份

五、安裝Splunk 通用轉發器

1)、將通用轉發器解壓到opt目錄下,Splunk轉發器的安裝方法和splunk一致,但它無UI界面。

tar zxvf splunkforwarder-6.4.2-00f5bb3fa822-Linux-x86_64.tgz -C /opt

2)、切換到Splunkforwarder的bin目錄下去啟動通用轉發器

cd /opt/splunkforwarder/bin/ //切換到通用轉發器的可執行程序目錄

./splunk start –accept-license //啟動通用轉發器

注意:如果splunk web和通用轉發器安裝在同一 服務器,通用轉發器的管理端口也是8090,則會提示被splunk占用,選擇yes修改轉發器管理端口,如下:

圖片

我們可通過CLI命令查看splunkd的端口

./splunk show splunkd-port //不過這里得輸入splunk登錄的賬號密碼

圖片

./splunk set splunkd-port 8091 //修改splund的端口為8091,提示:重啟生效

圖片

3)、修改通用轉發器密碼

默認密碼:admin/changeme

修改密碼如下:其中role是角色,auth是驗證原密碼

./splunk edit user admin -password ‘admin’ -role admin -auth admin:changeme

圖片

0×03 Windows上安裝Splunk

一、安裝准備:

#搭建NPT服務器

配置一致的時間

建議搭建企業內NTP服務器,將所有相關設備指向該服務器

#安裝用戶的選擇

本地系統用戶,本次采用此方式

域用戶,較復雜,請參考文檔

#安裝環境

本次安裝基於Windows 7, 64位

建議部署在64位環境下

Splunk Enterprise:

splunk-6.4.2-00f5bb3fa822-x64-release.msi

Splunk 通用轉發器:

splunkforwarder-6.4.2-00f5bb3fa822-x64-release.msi

二、 安裝步驟

GUI安裝,比較簡單, 此處不演示。

Splunk默認安裝在 “C:\Program Files\Splunk”

安裝之后會注冊兩個服務,它的顯示名稱為:Splunkd Service、splunkweb (legacy purposes only)

圖片

啟動:splunk start

關閉:splunk stop

重啟:splunk restart

查看狀態:splunk status

查看版本:splunk version

通過Windows DOS命令:

net start splunkd

net stop splunkd

通過服務面板 (services.msc)

圖片

#查看splunk web的端口命令為:

splunk show web-port

圖片

三、卸載splunk

依照上方的講解的停止splunkd。

通過Windows控制面板的卸載程序卸載。

圖片

四、 安裝Splunk 通用轉發器

GUI安裝,比較簡單,選擇:自定義(Customize Options),如下可選擇SSL證書。

圖片

#其次安裝的用戶如下:

local system :本地系統用戶

domain account :域賬號

#選擇是否收集的日志選項(Windows Event logs)。如:應用日志、安全日志、系統日志、轉發事件日志、安裝日志。

#選擇是否收集Windows 的性能數據(Performance Monitor)。如:CPU、內存、磁盤、網絡狀態等

#注:收集這些日志都是Splunk的 Splunk Add-on for Microsoft Windows插件,你在NEXT下一步則可安裝它。

圖片

由於收集的這些日志會轉發到splunk企業版中winEventlog的索引中,但是由於splunk 企業版沒有創建該索引,如果需要創建要么手動創建,要么安裝一個Splunk APP.創建索引可在:

進入Splunk Web→設置→索引→新建索引

圖片

下一步(Receiving Indexer),這里是設置接收器,即上述勾選的系統日志將轉發到哪個IP和端口上。由於我們的splunk企業版在本地,所以這里寫localhost,開啟一個10001端口讓這些日志轉發到Splunk entiprise上。

圖片

#接着在splunk enterprise上配置接收。

進入Splunk Web→設置→轉發和接收→接收數據→新增→偵聽此端口為:10001(剛才設置的接收端口)

圖片

#使用splunk的CLI命令可以查看監聽的端口

splunk display listen

圖片

當然你也可以通過splunk CLI命令來增加監聽端口。

splunk enable listen 10002

此時你便可以查看wineventlog索引接收的數據了

圖片

此時可以系統自帶的APP (Search &Reporting)使用SPL語言來搜索索引事件。

圖片

#注:Windows 下會自動解決Splunk Enterprise和通用轉發器的管理端口8090的端口沖突。

0×04 splunk安裝后的配置

一、配置Splunk的服務器名稱

設置->服務器設置->常規設置

默認是服務器主機名

也可通過命令行修改

./splunk set servername 服務器名稱 //修改Splunk服務器名稱

修改需要重啟Splunk

圖片

二、配置Splunk的端口號

Splunkd端口號:8089

Splunk Web端口號:8000

可在Splunk Web 中修改,也可通過CLI命令修改

./splunk set splunkd-port 8090 //設置管理端口

./splunk set web-port 8001 //設置WEB端口

配置后需要重啟Splunk

三、設置默認HOST名稱

設置源自該服務器的事件的默認host值 #即設置日志所來自的源主機的名稱進行標記。

可在Web界面修改

進入Splunk WEB頁面→設置→服務器設置→常規設置→索引設置→默認主機名:

或者通過Splunk CLI修改:

#./splunk set default-hostname 新的host名稱

配置后需要重啟服務器

圖片

四、Splunk Web 啟用SSL (HTTPS)

在Splunk Web 中啟用:設置->服務器設置->常規設置

通過Splunk CLI 命令:

./splunk enable web-ssl //啟用SSL

./splunk disable web-ssl //禁用SSL

需要重啟

重啟后Splunk Web 地址變為:

https://192.168.199.205:8000

圖片

五、修改默認索引位置

默認索引目錄為:/opt/splunk/var/lib/splunk/

可以通過配置文件進行修改位置:(例如,修改為:/foo/splunk):

mkdir /foo/splunk/ //創建新的索引目錄, 非root用戶請更改目錄所有者(chown)

./splunk stop //停止Splunk

cp rp /opt/splunk/var/lib/splunk/* /foo/splunk/ //復制原索引目錄下的所有文件到新的索引目錄

vi /opt/splunk/etc/splunk-launch.conf //編輯splunk的配置文件

SPLUNK_DB=/foo/splunk //在該配置文件中設置splunk_db為新的索引路徑(將原來注釋去掉,然后再修改)

./splunk start //重新啟動splunk

圖片

通過CLI命令:

./splunk list index //可查看所有索引以及索引的目錄

30.png

六、創建索引

索引:被檢索的數據存儲在索引(index)中,類似於database。(就是說轉發過來的事件格式化后存儲在索引中)

設置->索引->新建索引 (WEB頁面中創建索引)

帶有_的索引都是splunk的內部索引,這些索引不記錄在許可證中

默認索引:main (如果轉發過來的數據不指定索引,則會保存在默認的main索引中)

在Splunk Web 中創建/刪除索引

通過Splunk CLI 創建/刪除索引:

./splunk add index 新的索引名稱 //創建新的索引

./splunk remove index 被刪除的索引名稱 //刪除索引

圖片

七、配置接收端口

Universal Forwarder 轉發給Splunk Enterprise 時,Splunk Enterprise所使用的接收端口默認為TCP 9997。

設置->轉發和接收->配置接收,新增9997 (Web界面設置)

通過Splunk CLI 命令:

./splunk enable listen 9997 //啟用splunk的接收端口

無需重啟Splunk

八、許可類型

設置->授權

安裝后是“Enterprise Trial”試用版許可證,500MB/天,試用60天

試用到期后轉為“Splunk Free”免費版許可證,500MB/天,部分功能無法使用。

企業版許可證,請聯系Splunk銷售。

轉發器許可證,針對重量和輕量級許可證,通用轉發器不需要。

使用情況報表,可以查看當前許可證使用的情況報表

0×05 Splunk的目錄結構

一、Splunk的目錄結構

圖片

bin目錄下:常用的Splunk命令將存儲在該文件夾。

etc目錄下:許可、配置文件 ,以及splunk創建的app、下載的app都將存在etc/apps;

etc/system目錄,存放系統配置文件;

etc/system/local目錄,用戶對splunk進行的系統配置

etc/users目錄,用戶的配置文件,每個用戶都擁有一個文件夾;

etc/licenses/ 目錄,splunk的許可證目錄。

etc/apps/目錄,本身存在很多自帶的APP,如:默認的search & reporting 的APP就是存在etc/apps/search。

etc/apps/SplunkForwarder 目錄,是Splunk的重量級轉發器。

etc/apps/SplunkLightForwarder 目錄,是Splunk的輕量級轉發器;

etc/apps/splunk_management_console 目錄,是splunk的分布式管理控制台的APP;

以Search&Repoeting APP具體說明:

etc/apps/search/bin 目錄,一些APP的腳本放在該目錄;

etc/apps/search/local 目錄,用戶配置APP的文件存在在這里。Splunk升級不會覆蓋該該文件夾下的配置文件

etc/apps/search/default 目錄,Splunk APP自帶的配置文件。

etc/apps/search/static 目錄,APP的圖標存放文件

#var目錄:

var/lib/ 目錄下基本是放索引。

var/log Splunk自身日志目錄。

#include目錄:

include/目錄,Splunk自帶的Python目錄

#share

share/GeoLite2-City.mmdb 文件,Splunk自帶的免費IP地址庫。

share/splunk/目錄,引用的第三方的庫文件存儲位置。

二、Splunk的配置文件

圖片

三、default 和 local區別

Default 目錄是Splunk自帶的目錄

系統優先讀取用戶自定義local目錄下的配置文件, 然后才會讀取default目錄下的

自定義的配置都要放在local 目錄下

千萬不要直接修改default目錄下的文件

升級時default目錄會被覆蓋,local目錄則不會

0×06 Splunk常用的CLI命令

一、Splunk啟動/停止/重啟

啟動:splunk start

關閉:splunk stop

重啟:splunk restart

查看狀態:splunk status

查看版本:splunk version

二、配置端口號(splunkd 管理端口和Web端口)

查看端口:

splunk show splunkd-port

splunk show web-port

修改端口:

splunk set splunkd-port

splunk set web-port

三、服務器配置命令

splunk set servername 新的服務器名稱 //設置服務器名稱

splunk set default-hostname 新的主機名稱 //設置默認主機名稱

splunk enable web-ssl //啟用SSL

splunk disable web-ssl //關閉SSL

四、修改用戶密碼

splunk edit user admin –password ‘newpassword’ –authadmin:oldpassword //修改用戶密碼

splunk add user //新增用戶

./splunk add user 新的用戶名 -password ‘新用戶密碼’ -full-name ‘設置它的全名’ –role User(這個是角色)

圖片

./splunk list user //列出用戶

圖片

username: 用戶名稱

full-name :全名

role : 角色

./splunk remove user 被移除的用戶名 //刪除用戶

圖片

五、索引操作

./splunk list index //列出所有索引

./splunk add index 新的索引名稱 //添加索引

圖片

./splunk remove index 要刪除索引的名稱 //刪除索引 #注意:處於已禁用狀態無法刪除

圖片

./splunk enable index 要啟用的索引名稱 //啟用索引

圖片

./splunk disable index 被禁用的索引名稱 //禁用索引

圖片

./splunk reload index //重新加載索引配置

圖片

六、啟用監聽端口

./splunk enable listen 要啟用的端口號 // 開啟splunk接收的指定端口

./splunk disable listen 要禁用的端口號 // 關閉splunk接收的指定端口

./splunk display listen // 顯示已啟用的splunk接收的端口

圖片

七、splunk show 命令

./splunk show web-port // 查看splunk web的端口

./splunk show splunkd-port // 查看splunkd的端口

./splunk show default-hostname // 查看默認的主機名稱

./splunk show servername // 查看顯示splunk服務器名稱

./splunk show datastore-dir // 查看索引存儲的目錄

圖片

八、splunk search 命令

在命令行執行搜索命令:

./splunk search ‘index=_audit| head 5′ //查看_audit索引前5條數據

圖片

九、轉發器常用命令(切換到轉發器的bin目錄下)

#案例:(通過案例學習命令)

我們這里將Linux的審計日志 /var/log/audit/audit.log 作為監控目標,通過通用轉發器,將其轉發給Splunk enterprise,我們這里 通用轉發器和Splunk Enterprise都是同一台服務器。

1)./splunk add monitor 監控日志的物理地址 -index 所轉發到的索引 //添加一個監控項

圖片

2)./splunk list monitor //列出當前的所有監控項

圖片

3)./splunk add forward-server 192.168.199.205:9997 【Splunk Enterprise的IP:接收的端口號】//添加轉發服務器

圖片

4)./splunk list forward-server //列出轉發服務器

圖片

5)./splunk remove monitor ‘移除的監控文件路徑’ //刪除監控項

圖片

6)./splunk remove forward-server 192.168.199.205:9997 //刪除

圖片

Web中查看linuxaudit索引:

圖片

十、splunk help 命令

splunk help //列出splunk常用命令列表

splunk help commands //列出更多的常用命令

splunk help index //列出索引的相關命令

splunk help monitor //列出監控相關的命令

splunk help show //列出信息顯示的命令

splunk help forward-server //列出轉發服務器的命令

splunk help set //列出設置相關命令

0×07 實戰-導入數據前的准備

一、確定數據的存儲和歸類

確定數據存儲在Splunk Enterprise中的哪個索引(index)中:針對不同類型的數據,建議分別存儲在不同的索引中,便於數據的搜索和管理

為數據指定一個類型(sourcetype):對不同類型的數據進行歸類

默認字段:index(指定特定索引), host(指定host 主機), sourcetype(數據源類型),source(日志文件路徑)

二、確定編碼類型

Splunk支持多種編碼類型

默認編碼UTF-8

中文字符編碼HZ 如果包含中文字符,建議采用HZ編碼

可以在數據預覽時選擇適合的編碼

通過修改配置文件設定編碼,設置全局默認編碼,或為特定的數據類型設定編碼:

編輯local 下的props.conf 文件(/opt/splunk/etc/system/default/props.conf):

(注:此類配置到Splunk enterprise中,非轉發器中)

[default]

CHARSET=HZ

三、確定時間戳

時間戳非常重要。

如果被轉發的日志中不帶時間戳,則將當前索引這些數據進來的時間設置為時間戳。

時間戳是否可以正常識別,如無法正確識別,則需配置。

四、數據預覽

最佳實踐—通常在將數據導入Splunk之前,建議先取小部分來進行測試,通過Splunk提供的“數據預覽”功能來驗證數據是否可以正確導入,是否需要額外配置。這樣做可以避免,如果數據未正確導入則可能需要重新導入數據的情況。

復制額外配置並保存到props.conf配置文件中。

五、實戰導入Linux審計日志

Web頁面的方式

1)、進入Splunk Web界面, 設置→數據:索引→新建索引→鍵入索引名稱

2)、設置→添加數據→監視→文件和目錄→文件或目錄:瀏覽 需要導入的數據

圖片

#連續監視:不斷實時地監控,一旦有新增記錄則索引到splunk

#索引一次:只會將文件索引一次,后續新增的將不會被索引到splunk中

3)、單擊下一步,進入來源類型;此處設置 來源類型。再進入一下在輸入設置中設置索引為我們剛創建的索引。

圖片

4)、最后提交完成,變可以再search & reporting中查詢得到索引內容

圖片

命令行方式執行

1)、切換到/opt/splunk/bin中,使用./splunk add index linux_audit命令新增索引。

圖片

2)、修改配置文件/opt/splunk/etc/apps/search/local/inpust.conf(如果沒有請新建),添加如下:

[monitor:///var/log/audit/audit.log]

disabled = false

index = linux_audit

sourcetype = linux_audit

圖片

3)、同樣在該目錄下創建props.conf文件,填寫如下信息:

[ linux_audit ]

SHOULD_LINEMERGE=true

NO_BINARY_CHECK=true

BREAK_ONLY_BEFORE_DATE=false

CHARSET=UTF-8

category=Operating System

description=Output produced by the auditd system daemon used to track changes on a Linux machine

disabled=false

pulldown_type=true

圖片

這些信息實際上和在Web設置來源類型中的參數配置是一樣的:

圖片

4)最后使用./splunk restart重啟服務即可!在search & reporting上我們像之前我們提到的一樣搜索日志信息,我們使用 “stats count” 來統計日志的數量:

圖片

0×08 實戰-導入並分析本地數據-1

一、創建索引

創建名為tutorialdata 的索引

二、數據介紹

上傳示例數據壓縮包,Splunk支持.zip和.tar.gz等壓縮包格式,splunk會對上傳的壓縮包自動解壓縮

該壓縮包包含三類數據(我當前測試的壓縮包):

     access.log,Apache訪問日志 secure.log,安全日志 

三、數據

采用上傳(Upload)的方式從本地導入數據

// Splunk有 上傳、監視本地、來自轉發三種添加數據的方式

設定路徑中的段為主機名,如壓縮包:/waf/secure.log,我們可以取waf為主機host名稱

Splunk會自動為它們確定數據源類型(sourcetype)

創建單獨的App,名為TutorialData,並在該App中查看導入的數據

步驟:

1)、 首先要創建APP,進入Splunk web界面,左上角點擊“應用”→管理應用→創建應用

圖片

2)、 開始添加數據,左上角選擇剛才創建的應用。然后設置→添加數據→上載→上傳剛才的文件→

圖片

3 )、在輸入設置中主機名稱可設置為:路徑中的段,此處輸入“2”表示二級目錄的名稱命令主機,即可我壓縮包中/logs/apache/access.log,則以apache作為主機名。索引則設置我們剛才設置的索引。

圖片

上載完畢之后可以開始搜索了。

四、搜索界面

搜索界面介紹

 source="tutorialdata.zip:*" index="tutorialdata“

字段列表

圖片

例如搜索: 

 source="logs.zip:*" index="tutorialdata" sourcetype=access_common clientip="127.0.0.1" select sleep 

解釋: #來源logs.zip 索引為:tutorialdata 源類型為:通用訪問日志 搜索日志中IP為:127.0.0.1 關鍵字包括select 和 sleep

圖片

其它語法:

source="logs.zip:*" index="tutorialdata" (script OR select)

#: (select OR union) 邏輯或。滿足一個即可。 關鍵字OR要大寫

source="logs.zip:" index="tutorialdata" sele

#:通配符*代表后面任意

我們在在右上角 “另存為——>報表”,輸入標題則可保存為報表。如果你后期想修改,可在“編輯——>在搜索中打開——>修改搜索語句——>保存” 重新保存之后即可。

圖片

還可以使用統計數量之后,可視化的形式進行查看、另存為:儀表板面板、報表、告警等等

圖片

五、Splunk的搜索語言(head&tail)

管道運算符(|),將管道左邊搜索產生的結果作為右邊的輸入 head, 返回前n 個(離現在時間最近的)結果 tail, 返回后n 個(離現在時間最后的)結果,如

index="tutorialdata" sourcetype="access_common" select | head 2

圖片

index="tutorialdata" sourcetype="access_common" select | tail 2

17.png

通過 SPL語言搜索、過濾的結果也可以保存為儀盤表,(此處我還做了單值型的可視化)。如下圖:

圖片

圖片

六、Splunk的搜索語言(top、rare、rename as )

top, 顯示字段最常見/出現次數最多的值

rare, 顯示字段出現次數最少的值

limit,限制查詢,如:limit 5,限制結果的前5條

rename xx as zz : 為xx字段設置別名為zz,多個之間用 ,隔開

fields :保留或刪除搜索結果中的字段。fiels – xx 刪除xx字段,保留則不需要 – 符號

source="tutorialdata.zip:*" index="tutorialdata" | top clientip 

 (獲取出現次數最多的IP,降序排列)

圖片

source="tutorialdata.zip:*" index="tutorialdata" | top clientip limit=5 

(在上方結果中限制顯示前5條)

圖片

#source="tutorialdata.zip:*" index="tutorialdata" | top clientip |rename clientip as “攻擊源” |rename count as "攻擊次數" 

(為兩個字段設置別名)

圖片

#source="tutorialdata.zip:*" index="tutorialdata" | top clientip|fields clientip count |rename clientip as “攻擊源” |rename count as "攻擊次數" (刪除最后一個percent百分比字段) 或者:

#source="tutorialdata.zip:*" index="tutorialdata" | top clientip|fields - percent |rename clientip as “攻擊源” |rename count as "攻擊次數" | fields

圖片

可以保存為餅狀圖的儀表盤

圖片

source="tutorialdata.zip:*" index="tutorialdata" | rare clientip 

(返回clientip最少的10個,升序排序)

圖片

0×09 實戰-導入並分析本地數據-2

一、Splunk的搜索語言(table,sort)

table :返回僅由參數中指定的字段所形成的表。如:table _time,clientip,返回的列表中只有這兩個字段,多個字段用逗號隔開

基於某個字段排序(升序、降序),降序的字段前面要使用-號,升序的使用+

sort -clientip, +status, 先基於clientip降序排列之后,再對這個結果基於status升序

source="tutorialdata.zip:*" index="tutorialdata" host="www1" | table _time,clientip,status

圖片

source="tutorialdata.zip:*" index="tutorialdata" host="www1" | table _time,clientip,status|sort -clientip,+status 

(針對上述中先基於clientip降序排列之后,再對這個結果基於status升序)

圖片

二、Splunk的搜索語言(stats)

對滿足條件的事件進行統計

stats count() :括號中可以插入字段,主要作用對事件進行計數

stats dc():distinct count,去重之后對唯一值進行統計

stats values(),去重復后列出括號中的字段內容

stats list(),未去重之后列出括號指定字段的內容

stats avg(),求平均值

source="tutorialdata.zip:*" index="tutorialdata" host="www1"|stats count(clientip)

 [統計clientip數量]

圖片

index="tutorialdata" sourcetype="access_combined_wcookie" status=200 "action=purchase" |stats dc(clientip) 

[dc去重復之后再進行統計]

圖片

可視化可以使用“徑向儀表”,對滿足一定數量進行不同顏色標記,可存為現有的儀表盤面板。

圖片

index="tutorialdata" sourcetype="access_combined_wcookie" |stats values(host) as "主機列表" 

[去除重復后列出字段的內容]

圖片

 index="tutorialdata" sourcetype="access_combined_wcookie" status=200 "action=purchase" |stats list(host) 

[未去除重復列出括號中的內容]

20161216152721.png

三、Splunk的搜索語言(chart)

在用於制作圖表的表格輸出中返回結果。

chart count():

index="tutorialdata" sourcetype="access_combined_wcookie" status=200 "action=purchase" | chart count by host

[統計字段status=200以及action=purchase的事件,並且以host字段來進行排列顯示]

圖片

圖片

chart max()

index="tutorialdata" sourcetype="access_combined_wcookie" status=200 "action=purchase" | chart count by host|chart max(count)

 [求出最大值]

圖片

chart min()

index="tutorialdata" sourcetype="access_combined_wcookie" status=200 "action=purchase" | chart count by host|chart min(count) 

 [求出最小值]

圖片

chart avg()

index="tutorialdata" sourcetype="access_combined_wcookie" status=200 "action=purchase" | chart count by host|chart avg(count)

[根據第一次的結果求出平均值]

圖片

四、Splunk的搜索語言(timechart)

使用相應的統計信息創建時間系列圖表

index="tutorialdata" sourcetype="access_combined_wcookie" status=200 "action=purchase" | timechart count by host 

[可以看到以每天作為時間分隔統計,在每24小時中滿足條件的通過host字段進行統計]

圖片

index="tutorialdata" sourcetype="access_combined_wcookie" status=200 "action=purchase" | timechart span=8h count by host

[加入span參數來定義時間間隔為8h一次分隔統計]

圖片

五、子搜索([search ])

子搜索包含在方括號[]中

注:以下字段中含義:action=purchase代表成功購買產品 status表示狀態為200

index="tutorialdata" sourcetype="access_combined_wcookie" status=200 "action=purchase" | top clientip limit=1

(搜索滿足成功購買產品、狀態為200的,出現數量最多的IP,只取最高的那個)

圖片

index="tutorialdata" sourcetype="access_combined_wcookie" "action=purchase" status=200 clientip="87.194.216.51"|stats count dc(productId),values(productId) by clientip

(搜成功購買,狀態為200,IP為:87.194.216.51,統計購買產品的數量,並且去重復地列出具體的名稱,最后通過clientip排序顯示)

圖片

合並上面兩個語句,子搜索放在[]中

index="tutorialdata" sourcetype="access_combined_wcookie" action="purchase" status=200 [search index="tutorialdata" sourcetype="access_combined_wcookie" status=200 action="purchase" | top clientip limit=1 |table clientip]|stats count dc(productId),values(productId) by clientip

(上面的clientip是通過子搜索 search 后面的結果,最后使用了“|table clientip”來只顯示clientip字段,最后再進行如上次的統計數量和明細)

圖片

可視化后添加到儀表盤,可將現有儀表盤生成PDF。

圖片

還可以通過“PDF計划交付”來定時通過郵箱將報表發送給指定用戶。

圖片

0×10 使用轉發器轉發數據

一、數據准備

三個主機的Apache 訪問日志,Splunk可以自動識別該類型

位於/opt/log目錄下

日志文件來自三台服務器,因此需要區分三台服務器

預覽數據:

/opt/log/BigDBbook-www1

/opt/log/BigDBbook-www2/opt/log/BigDBbook-www3

圖片

二、服務器端配置(Splunk Enterprise: Cent OS 7:192.168.199.205)

創建新索引apachedata

./splunk add index apachedata

圖片

新增接收端口9998

./splunk enable listen 9998

圖片

三、客戶端配置(ubuntu 192.168.213.129)

修改配置文件添加監控項

~ vim /opt/splunkforwarder/etc/apps/search/local 如果沒有local則創建該目錄

創建inputs.conf ,配置如下:

明確index,host,sourcetype字段

[monitor:///opt/log/BigDBbook-www/] //設置監控/opt/log/下的所有BigDBbook-www開頭的目錄下的日志,記得“/”符號

index=apachedata //設置索引名稱為服務端創建的:apachedata

host_segment=3 // 為這三個日志設置主機名稱,取名的方式將第三級目錄作為名稱命令,如:/opt/log/BigDBbook-www1

disabled=false //非關閉狀態的監控

圖片

使用CLI命令添加轉發服務器,轉發端口9998

~ sudo ./splunk add forward-server 192.168.199.205:9998

圖片

查看監控狀態,處於活動狀態:

~sudo ./splunk list forward-server

1.png

重啟服務器

~ sudo ./splunk restart

圖片

四、確認接收數據

確認數據已正確接收

驗證host字段是否正確

通過索引可以看到splunk已經接收了日志,host主機名稱也已經以日志路徑的第三級目錄名字進行命名了

圖片

sourcetype 被splunk自動識別為access_combined_wcookie

圖片

0×11 實戰- 數據分析和可視化-1

一、Apache日志中HTTP狀態碼分析

服務器響應客戶端請求的狀態碼:

200表示請求成功

4xx表示客戶端錯誤

5xx表示服務器錯誤

400-請求失敗,服務器無法識別當前客戶端請求;

401-未進行用戶驗證,當前客戶端請求需要用戶驗證;

403-禁用,服務器已理解當前請求,但拒絕執行;

404-頁面未找到;

500-內部服務器錯誤

503-服務不可用:由於服務器過載,服務器無法處理當前請求

#統計4xx和5xx事件數

index="apachedata" sourcetype="access_combined_wcookie" status > 200 | stats count by status 

圖片

另存為餅狀圖,保存成一個新的儀表盤,儀表板標題我們取:Web日志分析,儀表板ID取:web_log,面板標題取:HTTP錯誤狀態碼分析。

圖片

統計4xx和5xx事件的時間趨勢圖(折線圖、面積圖、柱狀圖) ,可視化為line chart圖形

index="apachedata" sourcetype="access_combined_wcookie" status>200 | timechart count by status

圖片

200表示“成功”,其他均為“錯誤”,統計事件數量

eval命令和if函數 eval-對表達式進行計算並將結果存儲在某個字段中

if (條件,True的結果,False的結果)

index="apachedata" sourcetype="access_combined_wcookie" | eval success=if(status==200,"成功","錯誤")| timechart count by sucess

解釋:if函數判斷status狀態如果等於200則標記為成功字段,否則標記為錯誤字段,通過eval統計這些結果存儲在sucess字段中,通過sucess字段排列,顯示出成果與錯誤的數量

圖片

制作每一個主機的200、400和500事件數的對比圖

200標記為“成功”,400標記為“客戶端錯誤”,500標記為“服務器錯誤”,保存為column chart可視化圖,另存現有儀表面板

index="apachedata" sourcetype="access_combined_wcookie" | chart count(eval(status==200)) as "成功", count(eval((400500 OR status==500)) as "服務器錯誤" by host

解釋: 統計status狀態碼等於200的別名則為成功,狀態碼大於400或者等於400,並且狀態碼要小於500則為 客戶端錯誤,狀態碼大於500或者等於500的則為服務器錯誤,最后通過host字段排列

58.png

61.png

二、瀏覽器分析

.列出用戶最常用的5種瀏覽器,可視化為Pie chart圖,另存為現有儀表盤

index=apache sourcetype="access_combined_wcookie" | top useragentlimit=5

60.png 圖片

三、IP地址分析

排名前10的IP地址

index=apache sourcetype="access_combined_wcookie" | top clientiplimit=10

圖片

通過IP地址獲取地區、國家、城市等信息

iplocation: 使用3rd-party數據庫解析IP地址的位置信息

index="apachedata" sourcetype="access_combined_wcookie" | top 10 clientip|iplocation clientip

解釋:獲取前十的IP,並且對前十IP所在地區進行解析顯示

圖片

來自中國的IP有多少

where:條件查詢

index="apachedata" sourcetype="access_combined_wcookie"|iplocation clientip | where Country="China"|stats count by Country|rename Country as "國家"

四、IP地址分析

在世界地圖上顯示IP分布,使用Cluster Map可視化顯示。

geostats命令:生成將在世界地圖上呈現且群集化成地理數據箱的統計信息。

index="apachedata" sourcetype="access_combined_wcookie"|iplocation clientip | geostats count

圖片

五、IP地址分析

每台服務器的GET和POST請求的對比圖,並且另存為儀表板

index="apachedata" sourcetype="access_combined_wcookie"|timechart count(eval(method=="GET")) as "GET請求",count(eval(method=="POST")) as "POST請求" by host

圖片

最后來看看我們的儀表盤——點擊左上方儀表板——選定對應的儀表板標題,點擊打開,由於沒有進行編輯調整,看起來就沒那么好看,我們可以編輯調整,包括調整圖例。

圖片

最終直觀的儀表板

圖片

0×12 實戰- 數據分析和可視化-2

一、數據分析-了解字段含義

Action 字段:

  view:瀏覽

  addtocart:添加到購物車

  remove:刪除

  purchase:購買

  changequantity:更改數量

購買:action=purchase

productId字段:后面跟着的是產品名稱

二、最暢銷的產品

最暢銷的三款產品,另存為餅狀圖

index="apachedata" sourcetype="access_combined_wcookie" "action=purchase" |top 3 productId

圖片

產品的購買趨勢圖

index="apachedata" sourcetype="access_combined_wcookie" action=purchase|timechart count(eval(action="purchase")) by productId

解釋:查看action=purchase,即購買成功的記錄,統計這個成功購買數量的記錄,並且通過productId排序顯示

圖片

改進,去除other、NULL的產品:

index="apachedata" sourcetype="access_combined_wcookie" action=purchase|timechart count(eval(action="purchase")) by productId usenull=false useother=false

圖片

三、頁面的瀏覽率與購買數量

頁面瀏覽:method=GET

購買:action=purchase

基於時間線的對比:timechart 命令

per_hour,不同於span,是一個匯總函數,用來獲取比例一致的數據

index="apachedata" sourcetype="access_combined_wcookie" | timechart per_hour(eval(method=="GET")) as "瀏覽率" per_hour(eval(action=="purchase")) as "購買數量"

圖片

四、來源最多的網站

referer 字段表示來源地址,但站內地址應該排除

使用!=不等於排除某些,使用*通配符匹配

index="apachedata" sourcetype="access_combined_wcookie" referer !=MyGizmoStore | top referer |fields - percent| rename referer as "來源網址",count as "來源數量"

圖片

五、獨立IP數

特定時間范圍內的獨立IP數

index="apachedata" sourcetype="access_combined_wcookie" | timechart span=2h dc(clientip) as "獨立IP數" by host

圖片 

最后查看我們儀表板的布局

圖片

0×13 配置郵箱服務器

一、個人用戶郵箱配置

設置用戶郵箱:用戶名->編輯用戶->電子郵件地址

圖片

二、郵箱服務器配置

設置->服務器設置->電子郵件設置 ,在這里填寫你發信郵箱的主機地址、用戶名、密碼

圖片

三、驗證是否能正常發信

Web界面手工驗證

打開Splunk→儀表板→選擇某個儀表板→編輯→計划PDF交互→勾選“計划PDF”→發送郵件至“” 填寫收件人地址→發送測試電子郵件

圖片

圖片

使用sendmail(SPL語言)驗證郵件是否能正常發送

Index=_internal | sendemail to=“收件人郵箱地址" from=“發件人郵箱地址" server=“發件服務器" subjectsendresults=true sendpdf=true

測試:

index="apachedata" sourcetype="access_combined_wcookie"|stats count|sendemail to="969769906@qq.com" from="xxxxx@163.com" server="smtp.163.com" sendresults=true sendpdf=true subject="統計測試2"

圖片 

圖片

0×14 創建APP

一、在Splunk Web 中創建APP

進入Splunk Web頁面→應用→管理應用。瀏覽更多的應用:瀏覽splunk APP頁面獲取更多應用。從文件安裝應用:是指的從Splunk的官方網站下載APP以本地文件形式安裝。創建應用:則是我們自行創建的應用。

  圖片

新增APP至少需要填寫名稱、文件夾名稱,建議在創建APP的時候針對不同網絡設備創建不同的APP

圖片

創建的APP在左窗口有顯示

圖片

二、設置進入splunk首頁視圖、導航、顏色

選擇對應的應用→用戶界面→default,編輯XML配置,例如:將之前的儀表板如:web_log(即當時保存為儀表板時的字段)加入視圖。

注意:每個視圖的順序配置也決定splunk應用菜單上的順序

圖片

最后查看效果:

87.png

三、更新圖標

1、上傳圖標到相應APP的static目錄中(如果沒有請自行創建),如:/opt/splunk/etc/apps/tutorialdata/static

圖標名稱必須為:appIcon.png 36x36px

2.png

2、重啟splunk生效

3.png

0×15 splunk技巧

一、忘記管理員密碼怎么辦

如果忘記管理員密碼,可以重置。需要有服務器的訪問權限。

方法

1)將$SPLUNK_HOME/etc/passwd文件重命名為passwd.bak

4.png

2)重新啟動Splunk,此時登錄Splunk Web之后,所使用的密碼則為初始賬號密碼:admin changeme

5.png

二、_time時間字段的處理

格式化時間。

方法:

| eval my_time=_time | convert timeformat=“%Y-%m-%d %H:%M:%S” ctime(my_time) | rename my_time as “時間” index="apachedata" sourcetype="access_combined_wcookie"|table _time,clientip | rename _time as 時間,clientip as "用戶IP"

這種類型的搜索,所顯示的時間為時間戳,為了更好地展示給用戶看,我們可對該時間進行格式化。

6.png

index="apachedata" sourcetype="access_combined_wcookie"|eval my_time=_time|convert timeformat="%Y-%m-%d %H:%M:%S" ctime(my_time) | table my_time,clientip|rename my_time as "時間",clientip as "用戶IP"

解釋:將_time賦值給my_time,最后通過ctime進行格式化,格式為timeformat指定的格式。

7.png

三、是否可以刪除數據

我索引的部分日志事件中包含敏感信息,或日志事件有亂碼,是否可以刪除這些事件?

Splunk不允許對索引后的數據進行修改。但可以使用delete 命令刪除數據,刪除后無法檢索到這些數據,但其實這些數據並未被從磁盤上刪除。

使用delete命令需要開啟該角色的can_delete權限

1、 權限設置

打開→設置→訪問控制→角色→角色名稱:admin繼承can_delete角色。

8.png

2、測試刪除

index="apachedata" sourcetype="access_combined_wcookie" host="bigdbbook-www1"|delete

刪除bigDBbook-www1主機的日志信息,並打印出詳細的刪除信息

9.png

四、導入后的數據亂碼了,是否可以重新再導入?

導入后的數據亂碼了,是否可以重新再導入?

可以。在Splunk里,稱為“重新索引(reindex)”。

方法:

1)重新索引所有數據:

splunk clean eventdata-index 索引名稱

2)選擇性重新索引某個文件:

splunk cmdbtprobe-d $SPLUNK_HOME/var/lib/splunk/fishbucket/splunk_private_db–file $FILE –reset

最后想說,有什么錯誤請指點,謝謝!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM