網站日誌分析最完整實踐

  分析網站日誌能夠幫助咱們瞭解用戶地域信息,統計用戶行爲,發現網站缺陷。操做會面臨幾個問題linux

  日誌分析工具splunk如何使用?web

  日誌格式信息不全,如何配置日誌打印出全面信息?shell

  有大量爬蟲訪問,並不是真實流量,如何去掉這些流量?數據庫

  若是網站用了CDN加速,反向代理,網關等,日誌打印的是這些設備的ip,那麼用戶的真實ip如何得到呢?apache

  閱讀本文能幫您有效解決上述問題瀏覽器

  splunk服務器

  splunk安裝使用工具

  日誌分析工具splunk是一款商業軟件,但有免費版,免費版天天處理日誌限制500M之內。對於簡單分析,500M也能夠挖掘出不少信息了。本文使用免費版splunk分析Apache離線日誌。網站

  先要到splunk官網註冊用戶,註冊用戶填寫的信息除郵箱外不須要真實,公司瞎填便可。註冊完成到下載頁面選擇Linux 64位版本,this

  

網站日誌分析最完整實踐

 

  選擇命令行下載,會給出一個wget的指令,

  

網站日誌分析最完整實踐

 

  複製wgt指令,到Linux上執行,獲得壓縮包。 (wget指令splunk-8.0.5-xxx的xxx每一個人都不一樣)

  [root@localhost splunk]# wget -O splunk-8.0.5-xxx-Linux-x86_64.tgz 'https://www.splunk.com/bin/splunk/DownloadActivityServlet?architecture=x86_64&platform=linux&version=8.0.5&product=splunk&filename=splunk-8.0.5-xxx-Linux-x86_64.tgz&wget=true'

  解壓壓縮包,到bin目錄下執行

  ./splunk start

  看見協議條款按q,是否贊成協議位置輸入y

  Do you agree with this license? [y/n]: y

  用戶名輸入 admin

  密碼輸入 adminroot

  出現

  The Splunk web interface is at http://192.168.56.106:8000

  表示啓動成功。相比於開源工具(ELK,graylog)確實省心太多了。確保Linux防火牆是關閉狀態,而後瀏覽器輸入前面8000地址打開登陸。首次會有引導教程指導如何上傳文件。平常若是想上傳文件,直接點擊左上角splunk->enterprise進入主界面,而後選擇添加數據,

  

網站日誌分析最完整實踐

 

  有多種添加數據的方式,這裏選擇上載,就是日誌文件已經在我電腦裏了,像上傳附件同樣傳給splunk。過程所有默認,上載文件須要等一段時間。Apache日誌設置「來源類型」時選擇web裏的access_combined。

  

網站日誌分析最完整實踐

 

  下一步,「檢查」,「提交」都是默認。顯示文件上載成功,點擊「開始搜索」按鈕,搜索剛纔上傳的日誌數據。

  

網站日誌分析最完整實踐

 

  搜索框是放搜索限制條件的,右下方是原始日誌,左側是各個字段的名稱,這些字段是工具內置的,知足格式的日誌會自動被解析出這些字段,好比每條日誌開頭都有個客戶端的ip,就是左側的clientip,鼠標點擊clientip會看見統計結果,默認是出現頻率最高的前10個ip。若是要統計更多,須要在搜索框用對應語法查詢。

  

網站日誌分析最完整實踐

 

  splunk搜索語言介紹(SPL語法)

  語法用於在搜索框中使用,達到限制範圍,統計所須要指標的目的。語法像「搜索引擎 + SQL + shell」的混合體。若是能熟練運用功能很是強大。

  基本語法,

  source="access2020-09-11.log" host="basicserver" sourcetype="access_combined"

  source表示數據來源文件名,host是splunk所在的主機名稱,sourcetype是導入時配置的。這些均可以變換,我想統計10號的數據,將access2020-09-10.log做爲source就達到了效果。若是想查看basicserver裏的全部數據不分日期,把source條件去掉,只保留host和sourcetype兩個條件。搜索框最少要有一個條件。

  訪問頻率最高的200個ip

  host="basicserver" | top clientip limit=200

  客戶端ip的地理信息

  host="basicserver" | iplocation clientip

  執行後左側下方「感興趣的字段」會比剛纔多出City Country Region字段,這些和客戶端ip的地理位置是對應的。

  訪問頻率最高的十個城市

  host="basicserver" | iplocation clientip | top City limit=10

  地圖查看ip分佈

  host="basicserver" | iplocation clientip | geostats count

  

網站日誌分析最完整實踐

 

  有多少不一樣的ip訪問網站

  host="basicserver" | stats dc(clientip)

  全部日誌記錄按時間正序排列

  host="basicserver" | sort _time

  默認按照倒序,最新的日誌排在最前面

  訪問次數最少的ip

  host="basicserver" | rare clientip

  被訪問最多的uri

  host="basicserver" | top uri limit=20

  clientip不等於某兩個網段的記錄

  host=basicserver clientip!="158.111.2.*" clientip!="192.190.2.*"

  補充一句,搜索框能夠輸入不少條件,條件增多搜索框會隨着變大,不要擔憂條件多裝不下。

  數據可視化

  搜索欄下方依次有 事件、模式、統計信息、可視化 選項,最後的可視化選項能生成圖表,最好是在搜索命令計算了某個統計指標,而後點擊可視化。若是沒計算指標直接點擊可視化,配置會比較繁瑣才能生成圖表。

  假設搜索欄統計某天訪問次數最高的20個clientip,命令爲

  source="access2020-09-11.log" | top clientip limit=20

  執行完會在統計信息下方列出前20個ip,點擊可視化,選擇柱狀圖。

  

網站日誌分析最完整實踐

 

  柱狀圖出來後,點擊格式能夠配置讓座標ip豎着顯示,看着更舒服。

  

網站日誌分析最完整實踐

 

  ip地址的地理信息數據庫如何更新

  統計ip的地理位置依賴於地理信息庫,安裝時有個內置的庫,不是最新的。若是要更新到最新的須要到https://dev.maxmind.com/zh-hans/geoip/geoip2/geolite2/下載最新的GeoLite2-City.mmdb(要先註冊),把這個文件複製到splunk/share目錄下覆蓋原來的同名文件便可。

  刪除數據

  刪除全部數據./splunk clean eventdata -f

  刪除屬於索引indexname的數據 ./splunk clean eventdata -index indexname -f

  Apache日誌須要注意的

  common和combined兩種格式

  日誌格式有common和combined兩種格式,combined格式信息更全面,比common格式多了refer和useragent信息。下面是apache/conf下的httpd.conf文件裏對兩種格式的定義

  LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined

  LogFormat "%h %l %u %t \"%r\" %>s %b" common

  若是common日誌知足不了分析要求,能夠把格式改爲common格式。方法是修改apache/conf下的httpd.conf文件,把裏面CustomLog末尾配置爲combined

  CustomLog "|/opt/apache/bin/rotatelogs /opt/apache/logs/access%Y-%m-%d.log 86400" combined

  沒法直接看到用戶真實ip怎麼辦

  若是網站前方有反向代理或者網關,或者網站作了CDN加速,那麼日誌的clientip是代理服務器、網關或者CDN加速服務器的ip,沒什麼分析價值。

  

網站日誌分析最完整實踐

 

  要獲取用戶真實ip能夠修改httpd.conf的LogFormat,加上%{X-FORWARDED-FOR}i (簡稱XFF),我直接將XFF加到了%h的後面,

  LogFormat "%h %{X-FORWARDED-FOR}i %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined  鄭州看男科醫院哪家好http://www.120zzxbyy.com/

  LogFormat "%h %{X-FORWARDED-FOR}i %l %u %t \"%r\" %>s %b" common

  假設網站有CDN加速(其它狀況同理分析),按上面格式,每條日誌首先打印的是CDN加速服務器ip,而後是XFF的ip(也就是用戶真實ip)。若是用戶沒有通過CDN直接訪問,那麼XFF就是一條橫線"-"。  鄭州割包皮哪一個醫院好http://www.zztongji120.com/

  

網站日誌分析最完整實踐

 

  Apache動態載入配置文件

  修改完配置文件,不須要重啓Apache,到Apache/bin下執行./apachectl graceful能夠動態載入配置文件,不中止服務,新的配置馬上生效。

  splunk如何解析XFF字段

  splunk內置的access_combined和access_common格式都沒法解析XFF,若是要正確解析須要修改splunk/etc/system/default/transforms.conf

  新增[xff]段配置XFF的正則

相關文章
相關標籤/搜索