- 日志分析工具splunk如何使用?
- 日志格式信息不全,如何配置日志打印出全面信息?
- 有大量爬蟲訪問,并非真實(shí)流量,如何去掉這" />

国产成人精品无码青草_亚洲国产美女精品久久久久∴_欧美人与鲁交大毛片免费_国产果冻豆传媒麻婆精东

18143453325 在線咨詢 在線咨詢
18143453325 在線咨詢
所在位置: 首頁 > 營銷資訊 > 電子商務(wù) > 網(wǎng)站日志分析最完整實(shí)踐

網(wǎng)站日志分析最完整實(shí)踐

時間:2023-03-14 06:40:01 | 來源:電子商務(wù)

時間:2023-03-14 06:40:01 來源:電子商務(wù)

分析網(wǎng)站日志可以幫助我們了解用戶地域信息,統(tǒng)計用戶行為,發(fā)現(xiàn)網(wǎng)站缺陷。操作會面臨幾個問題
- 日志分析工具splunk如何使用?
- 日志格式信息不全,如何配置日志打印出全面信息?
- 有大量爬蟲訪問,并非真實(shí)流量,如何去掉這些流量?
- 如果網(wǎng)站用了CDN加速,反向代理,網(wǎng)關(guān)等,日志打印的是這些設(shè)備的ip,那么用戶的真實(shí)ip如何獲得呢?

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

splunk

splunk安裝使用

日志分析工具splunk是一款商業(yè)軟件,但有免費(fèi)版,免費(fèi)版每天處理日志限制500M以內(nèi)。對于簡單分析,500M也可以挖掘出很多信息了。本文使用免費(fèi)版splunk分析Apache離線日志。
先要到splunk官網(wǎng)注冊用戶,注冊用戶填寫的信息除郵箱外不需要真實(shí),公司瞎填即可。注冊完成到下載頁面選擇Linux 64位版本,


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


復(fù)制wgt指令,到Linux上執(zhí)行,得到壓縮包。 (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目錄下執(zhí)行

./splunk start看見協(xié)議條款按q,是否同意協(xié)議位置輸入y

Do you agree with this license? [y/n]: y用戶名輸入 admin
密碼輸入 adminroot
出現(xiàn)

The Splunk web interface is at http://192.168.56.106:8000表示啟動成功。相比于開源工具(ELK,graylog)確實(shí)省心太多了。確保Linux防火墻是關(guān)閉狀態(tài),然后瀏覽器輸入前面8000地址打開登錄。首次會有引導(dǎo)教程指導(dǎo)如何上傳文件。日常如果想上傳文件,直接點(diǎn)擊左上角splunk->enterprise進(jìn)入主界面,然后選擇添加數(shù)據(jù),


有多種添加數(shù)據(jù)的方式,這里選擇上載,就是日志文件已經(jīng)在我電腦里了,像上傳附件一樣傳給splunk。過程全部默認(rèn),上載文件需要等一段時間。Apache日志設(shè)置“來源類型”時選擇web里的access_combined。

下一步,“檢查”,“提交”都是默認(rèn)。顯示文件上載成功,點(diǎn)擊“開始搜索”按鈕,搜索剛才上傳的日志數(shù)據(jù)。


搜索框是放搜索限制條件的,右下方是原始日志,左側(cè)是各個字段的名稱,這些字段是工具內(nèi)置的,滿足格式的日志會自動被解析出這些字段,比如每條日志開頭都有個客戶端的ip,就是左側(cè)的clientip,鼠標(biāo)點(diǎn)擊clientip會看見統(tǒng)計結(jié)果,默認(rèn)是出現(xiàn)頻率最高的前10個ip。如果要統(tǒng)計更多,需要在搜索框用對應(yīng)語法查詢。

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

語法用于在搜索框中使用,達(dá)到限制范圍,統(tǒng)計所需要指標(biāo)的目的。語法像“搜索引擎 + SQL + shell”的混合體。如果能熟練運(yùn)用功能非常強(qiáng)大。
- 基本語法,

source="access2020-09-11.log" host="basicserver" sourcetype="access_combined"source表示數(shù)據(jù)來源文件名,host是splunk所在的主機(jī)名稱,sourcetype是導(dǎo)入時配置的。這些都可以變換,我想統(tǒng)計10號的數(shù)據(jù),將access2020-09-10.log作為source就達(dá)到了效果。如果想查看basicserver里的所有數(shù)據(jù)不分日期,把source條件去掉,只保留host和sourcetype兩個條件。搜索框最少要有一個條件。

host="basicserver" | top clientip limit=200host="basicserver" | iplocation clientip執(zhí)行后左側(cè)下方“感興趣的字段”會比剛才多出City Country Region字段,這些和客戶端ip的地理位置是對應(yīng)的。 - 訪問頻率最高的十個城市

host="basicserver" | iplocation clientip | top City limit=10host="basicserver" | iplocation clientip | geostats counthost="basicserver" | stats dc(clientip)host="basicserver" | sort _time默認(rèn)按照倒序,最新的日志排在最前面 - 訪問次數(shù)最少的ip

host="basicserver" | rare clientiphost="basicserver" | top uri limit=20host=basicserver clientip!="158.111.2.*" clientip!="192.190.2.*"補(bǔ)充一句,搜索框可以輸入很多條件,條件增多搜索框會隨著變大,不要擔(dān)心條件多裝不下。

數(shù)據(jù)可視化

搜索欄下方依次有 事件、模式、統(tǒng)計信息、可視化 選項(xiàng),最后的可視化選項(xiàng)能生成圖表,最好是在搜索命令計算了某個統(tǒng)計指標(biāo),然后點(diǎn)擊可視化。如果沒計算指標(biāo)直接點(diǎn)擊可視化,配置會比較繁瑣才能生成圖表。
假設(shè)搜索欄統(tǒng)計某天訪問次數(shù)最高的20個clientip,命令為

source="access2020-09-11.log" | top clientip limit=20執(zhí)行完會在統(tǒng)計信息下方列出前20個ip,點(diǎn)擊可視化,選擇柱狀圖。

柱狀圖出來后,點(diǎn)擊格式可以配置讓坐標(biāo)ip豎著顯示,看著更舒服。

ip地址的地理信息數(shù)據(jù)庫如何更新

統(tǒng)計ip的地理位置依賴于地理信息庫,安裝時有個內(nèi)置的庫,不是最新的。如果要更新到最新的需要到https://dev.maxmind.com/zh-hans/geoip/geoip2/geolite2/下載最新的GeoLite2-City.mmdb(要先注冊),把這個文件復(fù)制到splunk/share目錄下覆蓋原來的同名文件即可。

刪除數(shù)據(jù)

刪除所有數(shù)據(jù)./splunk clean eventdata -f
刪除屬于索引indexname的數(shù)據(jù) ./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/"" combinedLogFormat "%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

無法直接看到用戶真實(shí)ip怎么辦

如果網(wǎng)站前方有反向代理或者網(wǎng)關(guān),或者網(wǎng)站做了CDN加速,那么日志的clientip是代理服務(wù)器、網(wǎng)關(guān)或者CDN加速服務(wù)器的ip,沒什么分析價值。

要獲取用戶真實(shí)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/"" combinedLogFormat "%h %{X-FORWARDED-FOR}i %l %u %t /"%r/" %>s %b" common假設(shè)網(wǎng)站有CDN加速(其它情況同理分析),按上面格式,每條日志首先打印的是CDN加速服務(wù)器ip,然后是XFF的ip(也就是用戶真實(shí)ip)。如果用戶沒有經(jīng)過CDN直接訪問,那么XFF就是一條橫線"-"。 下圖是用戶直連網(wǎng)站的情況,clientip就是用戶真是IP。

Apache動態(tài)載入配置文件

修改完配置文件,不需要重啟Apache,到Apache/bin下執(zhí)行./apachectl graceful可以動態(tài)載入配置文件,不停止服務(wù),新的配置立刻生效。

splunk如何解析XFF字段

splunk內(nèi)置的access_combined和access_common格式都無法解析XFF,如果要正確解析需要修改splunk/etc/system/default/transforms.conf
新增[xff]段配置XFF的正則

[xff]REGEX = /d{1,3}(/./d{1,3}){2,3}修改[access-extractions]段,在clientip后增加([[nspaces:xff]]/s++)?,用來匹配XFF

[access-extractions]REGEX = ^[[nspaces:clientip]]/s++([[nspaces:xff]]/s++)?[[nspaces:ident]]/s++[[nspaces:user]]/s++[[sbstring:req_time]]/s++[[access-request]]/s++[[nspaces:status]]/s++[[nspaces:bytes]](?:/s++"(?<referer>[[bc_domain:referer_]]?+[^"]*+)"(?:/s++[[qstring:useragent]](?:/s++[[qstring:cookie]])?+)?+)?[[all:other]][xff]段的位置不重要,寫在哪里都行。配置完成,重啟splunk,上傳帶有XFF的日志,左側(cè)會看見“感興趣的字段”出現(xiàn)了xff


xff字段的分析統(tǒng)計和clientip完全一樣,只不過這是真實(shí)用戶的ip了。

如何對付爬蟲

通過分析日志,下列行為可以判斷為爬蟲

搜索引擎的爬蟲訪問網(wǎng)站是為了收錄網(wǎng)站數(shù)據(jù)。有一些惡意的爬蟲會做壞事,除了抓數(shù)據(jù)還嘗試登陸執(zhí)行腳本等。爬蟲訪問的頻率都很高會給網(wǎng)站帶來負(fù)載,應(yīng)該根據(jù)網(wǎng)站情況進(jìn)行不同程度的限制。限制惡意爬蟲只能封對方ip。搜索引擎的爬蟲可以通過配置robots.txt文件,以及在該引擎的站長平臺配置或投訴來限制。

robots.txt

搜索引擎抓取數(shù)據(jù)會先讀取網(wǎng)站根目錄下的robots.txt文件,文件根據(jù)robots協(xié)議書寫規(guī)則,文件的規(guī)則就是搜索引擎要遵守的規(guī)則。比如打開https://www.taobao.com/robots.txt可以看到淘寶的協(xié)議規(guī)定百度爬蟲任何數(shù)據(jù)都不可以爬。

User-agent: BaiduspiderDisallow: /如果要任何爬蟲都不能爬任何數(shù)據(jù),就寫成

User-agent: *Disallow: /復(fù)雜的規(guī)則如指定引擎可以爬取某些目錄,某些目錄不可以爬,robots協(xié)議也是支持的。 robots協(xié)議是“君子協(xié)定”,它并沒有通過技術(shù)手段限制爬蟲,要靠爬蟲的自覺遵守。 按我經(jīng)驗(yàn),百度、谷歌、360、字節(jié)、都能遵守協(xié)議,搜狗很流氓,不遵守協(xié)議。


有些請求的useragent寫的是Baiduspider,但可能是冒充百度爬蟲,useragent是可以自己設(shè)置的。要想判斷一個ip是否是搜索引擎的爬蟲可以使用,nslookup或者h(yuǎn)ost命令。這兩個命令返回的域名信息可以看出來是否是爬蟲。

# nslookup 49.7.21.76Server: 219.141.136.10Address: 219.141.136.10#53Non-authoritative answer:76.21.7.49.in-addr.arpa name = sogouspider-49-7-21-76.crawl.sogou.com.# host 111.206.198.6969.198.206.111.in-addr.arpa domain name pointer baiduspider-111-206-198-69.crawl.baidu.com.另外,各大搜索引擎的站長平臺會教如何判斷ip是否是自己的爬蟲,百度站長平臺就有“輕松兩步,教你快速識別百度蜘蛛”,介紹了百度蜘蛛useragent的格式和判斷方法。

站長平臺

搜索引擎都有站長平臺,里面有很多相關(guān)的教程幫助更好的使用搜索引擎。注冊站長平臺時要證明自己有網(wǎng)站的管理權(quán)限,驗(yàn)證方法是可以將指定文件放置到網(wǎng)站根目錄。成為站長后可以查詢自己網(wǎng)站的索引收錄情況,查詢搜索引擎給網(wǎng)站帶來的流量等指標(biāo)。還可以投訴爬蟲抓取頻繁,設(shè)定抓取頻率。有些平臺公布郵箱可以投訴。

封IP

對于惡意或者不遵守robots協(xié)議的爬蟲,只能封ip。網(wǎng)站源站用防火墻來封,CDN加速服務(wù)器也都提供了封ip功能。配置了CDN加速的網(wǎng)站一定要封xff的IP,因?yàn)榇蟛糠謈lientip都是CDN加速服務(wù)器的地址,封了這些地址很多正常用戶就不能正常訪問了。

總結(jié)

日志分析是從理性方面了解系統(tǒng),分析結(jié)果可能會顛覆之前對系統(tǒng)的固有認(rèn)知。對開發(fā),運(yùn)維,運(yùn)營都能提供有價值的信息,建議大家有機(jī)會嘗試一下。如果不想封禁爬蟲ip,可以在搜索欄排除爬蟲ip的訪問記錄(xff!="爬蟲ip"),這樣既能排除干擾,還能和爬蟲和平共處。

關(guān)鍵詞:完整,實(shí)踐,分析,日志

74
73
25
news

版權(quán)所有? 億企邦 1997-2025 保留一切法律許可權(quán)利。

為了最佳展示效果,本站不支持IE9及以下版本的瀏覽器,建議您使用谷歌Chrome瀏覽器。 點(diǎn)擊下載Chrome瀏覽器
關(guān)閉