Splunk大數據分析經驗分享

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

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

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

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

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

目錄

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

0×04 Splunk安裝後配置 html

0×05 Splunk的目錄結構 java

0×06 Splunk經常使用的CLI命令 python

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

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

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

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

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

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

0×13 郵箱服務器配置 

0×14 建立APP 0X15 Splunk技巧

0×15 splunk技巧

0×01 初識splunk

1、公司:

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

2、產品:

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

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

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

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

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

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

3、Splunk是什麼

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

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

準實時的日誌處理平臺;

基於時間序列的索引器;

大數據分析平臺;

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

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

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

Splunk Apps 提供更多功能

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

4、機器數據是什麼

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

01.png

5、Splunk組件

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

搜索頭:在分佈式搜索環境中,搜索頭是處理搜索管理功能、指引搜索請求至一組搜索節點,而後將結果合併返回至用戶的Splunk Enterprise 實例。若是該實例僅搜索不索引,一般被稱爲專用搜索頭。

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

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

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

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

6、Splunk分佈式架構

02.png 

如上圖所示: 

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

二、若是要採集這些數據例如:應用服務器可安裝splunk的轉發器,防火牆的數據能夠經過TCP\UPD端口將數據發送到Splunk的中間層,Splunk的中間層稱爲splunk的索引器(接收器),數據將存儲在這一層。 

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

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

7、通用轉發器

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

最經常使用的是通用轉發器,其餘兩類不多使用。

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

爲實現更高性能和更低的內存佔用,它具備幾個限制:

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

通用轉發器不解析數據。

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

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

8、多種應用場景

03.png

0×02 Linux上安裝Splunk

1、配置時間:

配置一致的時間

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

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

2、安裝準備

本次安裝基於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)

3、 安裝步驟

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

圖片

4、 Splunk的卸載

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

./splunk stop //中止splunk

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

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

5、安裝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

1、安裝準備:

#搭建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

2、 安裝步驟

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

圖片

3、卸載splunk

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

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

圖片

4、 安裝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安裝後的配置

1、配置Splunk的服務器名稱

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

默認是服務器主機名

也可經過命令行修改

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

修改須要重啓Splunk

圖片

2、配置Splunk的端口號

Splunkd端口號:8089

Splunk Web端口號:8000

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

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

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

配置後須要重啓Splunk

3、設置默認HOST名稱

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

可在Web界面修改

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

或者經過Splunk CLI修改:

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

配置後須要重啓服務器

圖片

4、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

圖片

5、修改默認索引位置

默認索引目錄爲:/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

6、建立索引

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

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

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

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

在Splunk Web 中建立/刪除索引

經過Splunk CLI 建立/刪除索引:

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

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

圖片

7、配置接收端口

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

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

經過Splunk CLI 命令:

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

無需重啓Splunk

8、許可類型

設置->受權

安裝後是「Enterprise Trial」試用版許可證,500MB/天,試用60天

試用到期後轉爲「Splunk Free」免費版許可證,500MB/天,部分功能沒法使用。

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

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

使用狀況報表,能夠查看當前許可證使用的狀況報表

0×05 Splunk的目錄結構

1、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/目錄,引用的第三方的庫文件存儲位置。

2、Splunk的配置文件

圖片

3、default 和 local區別

Default 目錄是Splunk自帶的目錄

系統優先讀取用戶自定義local目錄下的配置文件, 而後纔會讀取default目錄下的

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

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

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

0×06 Splunk經常使用的CLI命令

1、Splunk啓動/中止/重啓

啓動:splunk start

關閉:splunk stop

重啓:splunk restart

查看狀態:splunk status

查看版本:splunk version

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

查看端口:

splunk show splunkd-port

splunk show web-port

修改端口:

splunk set splunkd-port

splunk set web-port

3、服務器配置命令

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

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

splunk enable web-ssl //啓用SSL

splunk disable web-ssl //關閉SSL

4、修改用戶密碼

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 被移除的用戶名 //刪除用戶

圖片

5、索引操做

./splunk list index //列出全部索引

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

圖片

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

圖片

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

圖片

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

圖片

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

圖片

6、啓用監聽端口

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

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

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

圖片

7、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 // 查看索引存儲的目錄

圖片

8、splunk search 命令

在命令行執行搜索命令:

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

圖片

9、轉發器經常使用命令(切換到轉發器的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索引:

圖片

10、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 實戰-導入數據前的準備

1、肯定數據的存儲和歸類

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

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

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

2、肯定編碼類型

Splunk支持多種編碼類型

默認編碼UTF-8

中文字符編碼HZ 若是包含中文字符,建議採用HZ編碼

能夠在數據預覽時選擇適合的編碼

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

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

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

[default]

CHARSET=HZ

3、肯定時間戳

時間戳很是重要。

若是被轉發的日誌中不帶時間戳,則將當前索引這些數據進來的時間設置爲時間戳。

時間戳是否能夠正常識別,如沒法正確識別,則需配置。

4、數據預覽

最佳實踐—一般在將數據導入Splunk以前,建議先取小部分來進行測試,經過Splunk提供的「數據預覽」功能來驗證數據是否能夠正確導入,是否須要額外配置。這樣作能夠避免,若是數據未正確導入則可能須要從新導入數據的狀況。

複製額外配置並保存到props.conf配置文件中。

5、實戰導入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

1、建立索引

建立名爲tutorialdata 的索引

2、數據介紹

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

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

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

3、數據

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

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

設定路徑中的段爲主機名,如壓縮包:/waf/secure.log,咱們能夠取waf爲主機host名稱

Splunk會自動爲它們肯定數據源類型(sourcetype)

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

步驟:

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

圖片

2)、 開始添加數據,左上角選擇剛纔建立的應用。而後設置→添加數據→上載→上傳剛纔的文件→

圖片

3 )、在輸入設置中主機名稱可設置爲:路徑中的段,此處輸入「2」表示二級目錄的名稱命令主機,便可我壓縮包中/logs/apache/access.log,則以apache做爲主機名。索引則設置咱們剛纔設置的索引。

圖片

上載完畢以後能夠開始搜索了。

4、搜索界面

搜索界面介紹

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

#:通配符*表明後面任意

咱們在在右上角 「另存爲——>報表」,輸入標題則可保存爲報表。若是你後期想修改,可在「編輯——>在搜索中打開——>修改搜索語句——>保存」 從新保存以後便可。

圖片

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

圖片

5、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語言搜索、過濾的結果也能夠保存爲儀盤表,(此處我還作了單值型的可視化)。以下圖:

圖片

圖片

6、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

1、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升序)

圖片

2、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

3、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)

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

圖片

4、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一次分隔統計]

圖片

5、子搜索([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 使用轉發器轉發數據

1、數據準備

三個主機的Apache 訪問日誌,Splunk能夠自動識別該類型

位於/opt/log目錄下

日誌文件來自三臺服務器,所以須要區分三臺服務器

預覽數據:

/opt/log/BigDBbook-www1

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

圖片

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

建立新索引apachedata

./splunk add index apachedata

圖片

新增接收端口9998

./splunk enable listen 9998

圖片

3、客戶端配置(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

圖片

4、確認接收數據

確認數據已正確接收

驗證host字段是否正確

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

圖片

sourcetype 被splunk自動識別爲access_combined_wcookie

圖片

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

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

2、瀏覽器分析

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

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

60.png 圖片

3、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 "國家"

4、IP地址分析

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

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

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

圖片

5、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

1、數據分析-瞭解字段含義

Action 字段:

view:瀏覽

  addtocart:添加到購物車

  remove:刪除

  purchase:購買

  changequantity:更改數量

購買:action=purchase

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

2、最暢銷的產品

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

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

圖片

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

頁面瀏覽: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 "購買數量"

圖片

4、來源最多的網站

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

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

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

圖片

5、獨立IP數

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

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

圖片 

最後查看咱們儀表板的佈局

圖片

0×13 配置郵箱服務器

1、我的用戶郵箱配置

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

圖片

2、郵箱服務器配置

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

圖片

3、驗證是否能正常發信

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

1、在Splunk Web 中建立APP

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

  圖片

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

圖片

建立的APP在左窗口有顯示

圖片

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

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

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

圖片

最後查看效果:

87.png

3、更新圖標

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

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

2.png

二、重啓splunk生效

3.png

0×15 splunk技巧

1、忘記管理員密碼怎麼辦

若是忘記管理員密碼,能夠重置。須要有服務器的訪問權限。

方法

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

4.png

2)從新啓動Splunk,此時登陸Splunk Web以後,所使用的密碼則爲初始帳號密碼:admin changeme

5.png

2、_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

3、是否能夠刪除數據

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

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

使用delete命令須要開啓該角色的can_delete權限

一、 權限設置

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

8.png

二、測試刪除

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

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

9.png

4、導入後的數據亂碼了,是否能夠從新再導入?

導入後的數據亂碼了,是否能夠從新再導入?

能夠。在Splunk裏,稱爲「從新索引(reindex)」。

方法:

1)從新索引全部數據:

splunk clean eventdata-index 索引名稱

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

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

最後想說,有什麼錯誤請指點,謝謝!

相關文章
相關標籤/搜索