* 做者: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技巧
美國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命令。佔用資源小)
面向機器數據的全文搜索引擎;
(使用搜索引擎的方式處理數據;支持海量級數據處理)
準實時的日誌處理平臺;
基於時間序列的索引器;
大數據分析平臺;
一體化的平臺:數據採集->存儲->分析->可視化;
通用的搜索引擎,不限數據源,不限數據格式;
提供榮獲專利的專用搜索語言SPL(Search Processing Language),語法上相似SQL語言
Splunk Apps 提供更多功能
(針對操做系統、思科網絡設備,splunk都提供了專用的APP,接入數據源均可以看到直觀的儀盤表。)
機器數據是指:設備和軟件產生的日誌數據、性能數據、網絡數據包。這些數據都是一些非結構化的數據,咱們能夠統一將這些數據統一採集到splunk以後,splunk能夠對這些數據進行索引、調查、監控、可視化等。
索引器:索引器是用於爲數據建立索引的Splunk Enterprise 實例。索引器將原始數據轉換爲事件並將事件存儲至索引(Index)中。索引器還搜索索引數據,以響應搜索請求。
搜索頭:在分佈式搜索環境中,搜索頭是處理搜索管理功能、指引搜索請求至一組搜索節點,而後將結果合併返回至用戶的Splunk Enterprise 實例。若是該實例僅搜索不索引,一般被稱爲專用搜索頭。
搜索節點:在分佈式搜索環境中,搜索節點是創建索引並完成源自搜索頭搜索請求的Splunk Enterprise實例。
轉發器:轉發器是將數據轉發至另外一個Splunk Enterprise 實例(索引器或另外一個轉發器)或至第三方系統的Splunk Enterprise 實例。
接收器:接收器是經配置從轉發器接收數據的Splunk Enterprise 實例。接收器爲索引器或另外一個轉發器。
應用:應用是配置、知識對象和客戶設計的視圖和儀表板的集合,擴展Splunk Enterprise 環境以適應Unix 或Windows 系統管理員、網絡安全專家、網站經理、業務分析師等組織團隊的特定需求。單個Splunk Enterprise 安裝能夠同時運行多個應用。
如上圖所示:
一、可分爲三層:第一層爲數據源端:如應用服務器、服務總線、網絡設備、防火牆等。
二、若是要採集這些數據例如:應用服務器可安裝splunk的轉發器,防火牆的數據能夠經過TCP\UPD端口將數據發送到Splunk的中間層,Splunk的中間層稱爲splunk的索引器(接收器),數據將存儲在這一層。
三、用戶使用search head檢索實例,search head將檢索請求發送到各個索引器中。再把結果聚集到search head中,最後呈現給用戶觀看。
四、 數據源的轉發器會將數據轉發到多個splunk的實例中,轉發器將進行自動負載均衡。
轉發器分爲重量(Heavy)、輕量(Light)和通用轉發器(Universal)三種類型。
最經常使用的是通用轉發器,其餘兩類不多使用。
與完整Splunk Enterprise實例相比,通用轉發器的惟一目的是轉發數據。與完整Splunk Enterprise 實例不一樣的是,您沒法使用通用轉發器索引或搜索數據。
爲實現更高性能和更低的內存佔用,它具備幾個限制:
通用轉發器沒有搜索、索引或告警功能。
通用轉發器不解析數據。
通用轉發器不經過syslog 輸出數據。
與完整Splunk Enterprise 不一樣的是,通用轉發器不包含捆綁的Python 版本。
配置一致的時間
建議搭建企業內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的壓縮包。
2)、解壓縮:#tar -zxvf splunk-6.5.1-f74036626f0c-Linux-x86_64.tgz -C /opt (默認咱們解壓到/opt目錄下)
3)、splunk的可執行程序都放在/opt/splunk/bin/下,啓動該程序應執行splunk,splunk命令參數以下:
#注意:如下命令咱們稱之爲CLI命令,以下:通用轉發器和splunk命令均可以以下執行
./splunk
start //啓動splunk
--accept-license //自動接收許可
restart //重啓splunk
status //查看splunk狀態
version //查看splunk版
開始啓動的時候記得記住加上–accept-license,這樣更便於咱們安裝。
4)、splunk安裝以後開啓Splunk Web端口8000。Splunkd端口8089端爲管理端口。 安裝以後咱們能夠在瀏覽器中訪問splunk 8000端口的WEB界面。
注意:若是外部計算機沒法訪問它。須要關閉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 disable boot-start //關閉自啓動
./splunk stop //中止splunk
./rm–rf/opt/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
#搭建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
依照上方的講解的中止splunkd。
經過Windows控制面板的卸載程序卸載。
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的端口衝突。
設置->服務器設置->常規設置
默認是服務器主機名
也可經過命令行修改
./splunk set servername 服務器名稱 //修改Splunk服務器名稱
修改須要重啓Splunk
Splunkd端口號:8089
Splunk Web端口號:8000
可在Splunk Web 中修改,也可經過CLI命令修改
./splunk set splunkd-port 8090 //設置管理端口
./splunk set web-port 8001 //設置WEB端口
配置後須要重啓Splunk
設置源自該服務器的事件的默認host值 #即設置日誌所來自的源主機的名稱進行標記。
可在Web界面修改
進入Splunk WEB頁面→設置→服務器設置→常規設置→索引設置→默認主機名:
或者經過Splunk CLI修改:
#./splunk set default-hostname 新的host名稱
配置後須要重啓服務器
在Splunk Web 中啓用:設置->服務器設置->常規設置
經過Splunk CLI 命令:
./splunk enable web-ssl //啓用SSL
./splunk disable web-ssl //禁用SSL
須要重啓
重啓後Splunk Web 地址變爲:
默認索引目錄爲:/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 //可查看全部索引以及索引的目錄
索引:被檢索的數據存儲在索引(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銷售。
轉發器許可證,針對重量和輕量級許可證,通用轉發器不須要。
使用狀況報表,能夠查看當前許可證使用的狀況報表
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/目錄,引用的第三方的庫文件存儲位置。
Default 目錄是Splunk自帶的目錄
系統優先讀取用戶自定義local目錄下的配置文件, 而後纔會讀取default目錄下的
自定義的配置都要放在local 目錄下
千萬不要直接修改default目錄下的文件
升級時default目錄會被覆蓋,local目錄則不會
啓動:splunk start
關閉:splunk stop
重啓:splunk restart
查看狀態:splunk status
查看版本:splunk version
查看端口:
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 web-port // 查看splunk web的端口
./splunk show splunkd-port // 查看splunkd的端口
./splunk show default-hostname // 查看默認的主機名稱
./splunk show servername // 查看顯示splunk服務器名稱
./splunk show datastore-dir // 查看索引存儲的目錄
在命令行執行搜索命令:
./splunk search ‘index=_audit| head 5′ //查看_audit索引前5條數據
#案例:(經過案例學習命令)
咱們這裏將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經常使用命令列表
splunk help commands //列出更多的經常使用命令
splunk help index //列出索引的相關命令
splunk help monitor //列出監控相關的命令
splunk help show //列出信息顯示的命令
splunk help forward-server //列出轉發服務器的命令
splunk help set //列出設置相關命令
肯定數據存儲在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配置文件中。
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」 來統計日誌的數量:
建立名爲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
#:通配符*表明後面任意
咱們在在右上角 「另存爲——>報表」,輸入標題則可保存爲報表。若是你後期想修改,可在「編輯——>在搜索中打開——>修改搜索語句——>保存」 從新保存以後便可。
還可使用統計數量以後,可視化的形式進行查看、另存爲:儀表板面板、報表、告警等等
管道運算符(|),將管道左邊搜索產生的結果做爲右邊的輸入 head, 返回前n 個(離如今時間最近的)結果 tail, 返回後n 個(離如今時間最後的)結果,如
index="tutorialdata" sourcetype="access_common" select | head 2
index="tutorialdata" sourcetype="access_common" select | tail 2
經過 SPL語言搜索、過濾的結果也能夠保存爲儀盤表,(此處我還作了單值型的可視化)。以下圖:
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" | rare clientip
(返回clientip最少的10個,升序排序)
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升序)
對知足條件的事件進行統計
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)
[未去除重複列出括號中的內容]
在用於製做圖表的表格輸出中返回結果。
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)
[根據第一次的結果求出平均值]
使用相應的統計信息建立時間系列圖表
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一次分隔統計]
子搜索包含在方括號[]中
注:如下字段中含義: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計劃交付」來定時經過郵箱將報表發送給指定用戶。
三個主機的Apache 訪問日誌,Splunk能夠自動識別該類型
位於/opt/log目錄下
日誌文件來自三臺服務器,所以須要區分三臺服務器
預覽數據:
/opt/log/BigDBbook-www1
/opt/log/BigDBbook-www2/opt/log/BigDBbook-www3
建立新索引apachedata
./splunk add index apachedata
新增接收端口9998
./splunk enable listen 9998
修改配置文件添加監控項
~ 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
重啓服務器
~ sudo ./splunk restart
確認數據已正確接收
驗證host字段是否正確
經過索引能夠看到splunk已經接收了日誌,host主機名稱也已經以日誌路徑的第三級目錄名字進行命名了
sourcetype 被splunk自動識別爲access_combined_wcookie
服務器響應客戶端請求的狀態碼:
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字段排列
.列出用戶最經常使用的5種瀏覽器,可視化爲Pie chart圖,另存爲現有儀表盤
index=apache sourcetype="access_combined_wcookie" | top useragentlimit=5
排名前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分佈,使用Cluster Map可視化顯示。
geostats命令:生成將在世界地圖上呈現且羣集化成地理數據箱的統計信息。
index="apachedata" sourcetype="access_combined_wcookie"|iplocation clientip | geostats count
每臺服務器的GET和POST請求的對比圖,而且另存爲儀表板
index="apachedata" sourcetype="access_combined_wcookie"|timechart count(eval(method=="GET")) as "GET請求",count(eval(method=="POST")) as "POST請求" by host
最後來看看咱們的儀表盤——點擊左上方儀表板——選定對應的儀表板標題,點擊打開,因爲沒有進行編輯調整,看起來就沒那麼好看,咱們能夠編輯調整,包括調整圖例。
最終直觀的儀表板
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數
index="apachedata" sourcetype="access_combined_wcookie" | timechart span=2h dc(clientip) as "獨立IP數" by host
最後查看咱們儀表板的佈局
設置用戶郵箱:用戶名->編輯用戶->電子郵件地址
設置->服務器設置->電子郵件設置 ,在這裏填寫你發信郵箱的主機地址、用戶名、密碼
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"
進入Splunk Web頁面→應用→管理應用。瀏覽更多的應用:瀏覽splunk APP頁面獲取更多應用。從文件安裝應用:是指的從Splunk的官方網站下載APP以本地文件形式安裝。建立應用:則是咱們自行建立的應用。
新增APP至少須要填寫名稱、文件夾名稱,建議在建立APP的時候針對不一樣網絡設備建立不一樣的APP
建立的APP在左窗口有顯示
選擇對應的應用→用戶界面→default,編輯XML配置,例如:將以前的儀表板如:web_log(即當時保存爲儀表板時的字段)加入視圖。
注意:每一個視圖的順序配置也決定splunk應用菜單上的順序
最後查看效果:
一、上傳圖標到相應APP的static目錄中(若是沒有請自行建立),如:/opt/splunk/etc/apps/tutorialdata/static
圖標名稱必須爲:appIcon.png 36x36px
二、重啓splunk生效
若是忘記管理員密碼,能夠重置。須要有服務器的訪問權限。
方法
1)將$SPLUNK_HOME/etc/passwd文件重命名爲passwd.bak
2)從新啓動Splunk,此時登陸Splunk Web以後,所使用的密碼則爲初始帳號密碼:admin changeme
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"
這種類型的搜索,所顯示的時間爲時間戳,爲了更好地展現給用戶看,咱們可對該時間進行格式化。
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指定的格式。
我索引的部分日誌事件中包含敏感信息,或日誌事件有亂碼,是否能夠刪除這些事件?
Splunk不容許對索引後的數據進行修改。但可使用delete 命令刪除數據,刪除後沒法檢索到這些數據,但其實這些數據並未被從磁盤上刪除。
使用delete命令須要開啓該角色的can_delete權限
一、 權限設置
打開→設置→訪問控制→角色→角色名稱:admin繼承can_delete角色。
二、測試刪除
index="apachedata" sourcetype="access_combined_wcookie" host="bigdbbook-www1"|delete
刪除bigDBbook-www1主機的日誌信息,並打印出詳細的刪除信息
4、導入後的數據亂碼了,是否能夠從新再導入?
導入後的數據亂碼了,是否能夠從新再導入?
能夠。在Splunk裏,稱爲「從新索引(reindex)」。
方法:
1)從新索引全部數據:
splunk clean eventdata-index 索引名稱
2)選擇性從新索引某個文件:
splunk cmdbtprobe-d $SPLUNK_HOME/var/lib/splunk/fishbucket/splunk_private_db–file $FILE –reset
最後想說,有什麼錯誤請指點,謝謝!