怎么查看linux日志里请求量最高的url访问最多的_网站日志分析最完整实践

news/2024/5/9 19:13:16/文章来源:https://blog.csdn.net/weixin_39717443/article/details/110154431

分析网站日志可以帮助我们了解用户地域信息,统计用户行为,发现网站缺陷。操作会面临几个问题
- 日志分析工具splunk如何使用?
- 日志格式信息不全,如何配置日志打印出全面信息?
- 有大量爬虫访问,并非真实流量,如何去掉这些流量?
- 如果网站用了CDN加速,反向代理,网关等,日志打印的是这些设备的ip,那么用户的真实ip如何获得呢?

阅读本文能帮您有效解决上述问题

splunk

splunk安装使用

日志分析工具splunk是一款商业软件,但有免费版,免费版每天处理日志限制500M以内。对于简单分析,500M也可以挖掘出很多信息了。本文使用免费版splunk分析Apache离线日志。
先要到splunk官网注册用户,注册用户填写的信息除邮箱外不需要真实,公司瞎填即可。注册完成到下载页面选择Linux 64位版本,

d1f38f7062fa64ca865b07f03d2c8dc3.png

选择命令行下载,会给出一个wget的指令,

02507650caff76eb56ad87d913d28f4a.png

复制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进入主界面,然后选择添加数据,

83717ff6e2473ddb0d43e0d39e2875b9.png

有多种添加数据的方式,这里选择上载,就是日志文件已经在我电脑里了,像上传附件一样传给splunk。过程全部默认,上载文件需要等一段时间。Apache日志设置“来源类型”时选择web里的access_combined。

477a4ecd0e45cb856ef9509f6a04fa3b.png

下一步,“检查”,“提交”都是默认。显示文件上载成功,点击“开始搜索”按钮,搜索刚才上传的日志数据。

4984ad2252414d33a4ed3f20019b39f0.png

搜索框是放搜索限制条件的,右下方是原始日志,左侧是各个字段的名称,这些字段是工具内置的,满足格式的日志会自动被解析出这些字段,比如每条日志开头都有个客户端的ip,就是左侧的clientip,鼠标点击clientip会看见统计结果,默认是出现频率最高的前10个ip。如果要统计更多,需要在搜索框用对应语法查询。

79a44be985d5704eeb23cf68c48a4ddf.png

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

98d50496b436830bb3e4c87ff83c613f.png
  • 有多少不同的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,点击可视化,选择柱状图。

6d0fa44f5935d6e757fed0baaefb1fd2.png

柱状图出来后,点击格式可以配置让坐标ip竖着显示,看着更舒服。

1ae98d28f11a757568a72479345fa554.png

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,没什么分析价值。

e58ea988127412bd5da5e56eb6b92714.png

要获取用户真实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
LogFormat "%h %{X-FORWARDED-FOR}i %l %u %t "%r" %>s %b" common

假设网站有CDN加速(其它情况同理分析),按上面格式,每条日志首先打印的是CDN加速服务器ip,然后是XFF的ip(也就是用户真实ip)。如果用户没有经过CDN直接访问,那么XFF就是一条横线"-"。 下图是用户直连网站的情况,clientip就是用户真是IP。

4b247d5b282e124582484a1cba920ee0.png

Apache动态载入配置文件

修改完配置文件,不需要重启Apache,到Apache/bin下执行./apachectl graceful可以动态载入配置文件,不停止服务,新的配置立刻生效。

splunk如何解析XFF字段

splunk内置的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的日志,左侧会看见“感兴趣的字段”出现了xff

253d1a3394aa732d63538e865a0ea689.png

xff字段的分析统计和clientip完全一样,只不过这是真实用户的ip了。

如何对付爬虫

通过分析日志,下列行为可以判断为爬虫

  • 该ip访问占比特高
  • useragent明确说自己是哪家搜索引擎爬虫
  • 访问的uri明显不需要那么频繁访问
  • 非必要的凌晨访问(不睡觉吗?)
  • 访问频率高(两分钟访问上千个url)

搜索引擎的爬虫访问网站是为了收录网站数据。有一些恶意的爬虫会做坏事,除了抓数据还尝试登陆执行脚本等。爬虫访问的频率都很高会给网站带来负载,应该根据网站情况进行不同程度的限制。限制恶意爬虫只能封对方ip。搜索引擎的爬虫可以通过配置robots.txt文件,以及在该引擎的站长平台配置或投诉来限制。

robots.txt

搜索引擎抓取数据会先读取网站根目录下的robots.txt文件,文件根据robots协议书写规则,文件的规则就是搜索引擎要遵守的规则。比如打开https://www.taobao.com/robots.txt可以看到淘宝的协议规定百度爬虫任何数据都不可以爬。

User-agent: Baiduspider
Disallow: /

如果要任何爬虫都不能爬任何数据,就写成

User-agent: *
Disallow: /

复杂的规则如指定引擎可以爬取某些目录,某些目录不可以爬,robots协议也是支持的。 robots协议是“君子协定”,它并没有通过技术手段限制爬虫,要靠爬虫的自觉遵守。 按我经验,百度、谷歌、360、字节、都能遵守协议,搜狗很流氓,不遵守协议。

f20b78e7ce025c611da59d14fe8044b9.gif

有些请求的useragent写的是Baiduspider,但可能是冒充百度爬虫,useragent是可以自己设置的。要想判断一个ip是否是搜索引擎的爬虫可以使用,nslookup或者host命令。这两个命令返回的域名信息可以看出来是否是爬虫。

# nslookup 49.7.21.76
Server:         219.141.136.10
Address:        219.141.136.10#53
Non-authoritative answer:
76.21.7.49.in-addr.arpa name = sogouspider-49-7-21-76.crawl.sogou.com.# host 111.206.198.69
69.198.206.111.in-addr.arpa domain name pointer baiduspider-111-206-198-69.crawl.baidu.com.

另外,各大搜索引擎的站长平台会教如何判断ip是否是自己的爬虫,百度站长平台就有“轻松两步,教你快速识别百度蜘蛛”,介绍了百度蜘蛛useragent的格式和判断方法。

站长平台

搜索引擎都有站长平台,里面有很多相关的教程帮助更好的使用搜索引擎。注册站长平台时要证明自己有网站的管理权限,验证方法是可以将指定文件放置到网站根目录。成为站长后可以查询自己网站的索引收录情况,查询搜索引擎给网站带来的流量等指标。还可以投诉爬虫抓取频繁,设定抓取频率。有些平台公布邮箱可以投诉。

封IP

对于恶意或者不遵守robots协议的爬虫,只能封ip。网站源站用防火墙来封,CDN加速服务器也都提供了封ip功能。配置了CDN加速的网站一定要封xff的IP,因为大部分clientip都是CDN加速服务器的地址,封了这些地址很多正常用户就不能正常访问了。

总结

日志分析是从理性方面了解系统,分析结果可能会颠覆之前对系统的固有认知。对开发,运维,运营都能提供有价值的信息,建议大家有机会尝试一下。如果不想封禁爬虫ip,可以在搜索栏排除爬虫ip的访问记录(xff!="爬虫ip"),这样既能排除干扰,还能和爬虫和平共处。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_788224.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

制作index.HTML千履千寻,网站测试与发布

个主页空间&#xff0c;该空间即网站在Internet中存放的位置&#xff0c;网上用户在浏览器中输入该位置的地址后即可访问网站。1.注册并申请主页空间网上可申请主页空间的网站比较多&#xff0c;各个网站上的申请操作也基本相同&#xff0c;下面以在“虎翼网”上申请免费主页空…

php网站部署 代码泄露,PHP如何修复“页面异常导致本地路径泄露”

以下是OMG小编为大家收集整理的文章&#xff0c;希望对大家有所帮助。自从1月份网站更换空间后&#xff0c;网站程序运行稳定&#xff0c;并及时升级后台程序&#xff0c;360检测的分数都是100分。不过最近查看360收录的时候&#xff0c;发现网站的分数是91分&#xff0c;提示&…

php网站 只显示sinsiu_网站灯笼特效,增加喜庆气氛

很早以前就看见(过年前)&#xff0c;果核剥壳网站挂起了灯笼。今日查资料偶然发现一点优化也有&#xff0c;仔细看&#xff0c;那个穗尾的位置也不对。蒲公英博客的穗尾的位置也不对&#xff0c;看来两者引用的可能是同一源码。经过上网简单查阅相关资料&#xff0c;特别是爱搜…

java 爬虫 图片_我用java爬虫爬了一个图片网站

我用java爬虫爬了一个图片网站最近想建立个网站&#xff0c;不想搞技术博客之类的网站了&#xff0c;因为像博客园还有CSDN这种足够了。平时的问题也都是这些记录一下就够了。那搞个什么网站好玩呢&#xff1f;看到一个图片网站还不错&#xff0c;里面好多图片(当然有xxx图片了…

iis怎么切换网站php版本,windows服务器iis7.5安装多个php版本切换设置

因为某个网站程序的配置是在php5.3上面运行的&#xff0c;不兼容我现在的php5.5.所以就只能再安装个5.3的了。在安装过程中&#xff0c;忘记截图了。。。就直接写吧。准备工作&#xff1a;1&#xff1a;php版本&#xff0c;这个根据自己需要的&#xff0c;自己去下载吧&#xf…

java短信验证码功能发送的验证码如何校验_如何在网站中添加手机短信验证码注册功能?...

这个功能大家都非常熟悉了&#xff0c;就不废话了&#xff0c;直接入正题!下面以使用榛子云短信为例:1. 首先注册一个榛子云账号&#xff0c;注册地址: http://sms_developer.zhenzikj.com/zhenzisms_user/register.html2. 注册完毕后从个人登录入口进入&#xff0c;地址:http:…

做网站用java 还是php_做网站用java还是php

做网站用java还是php&#xff1f;做网站用PHP会更合适&#xff0c; 因为php主要就是用于web网站开发方面&#xff0c;开发比较快速。1&#xff0c;PHP适合于快速开发&#xff0c;中小型应用系统&#xff0c;开发成本低&#xff0c;能够对变动的需求作出快速的反应。而Java适合于…

php网站转为app的工具,网站打包成APP,可以直接将一个网站转成安卓App的Hbuilder工具...

我们有时候会想把自己的网站做成一个app&#xff0c;但是原生的自己没有基础又不会&#xff0c;网上找到的云打包之类的倒是可以直接把网站打包成app&#xff0c;但是免费版的避免不了会有广告或者体验时间限制&#xff0c;收费的又不想花钱&#xff0c;很愁人&#xff0c;今天…

h5网页网站制作代码_h5网页制作和普通网页有什么区别?

h5网页制作和普通网页有什么区别?通常企业在咨询网站建设时&#xff0c;网站建设公司的商务都会把网站流程和前期需要准备的资料&#xff0c;更会详细的介绍一下H5网页制作的一些优势和趋势。其实H5是指第5代HTML网页技术&#xff0c;HTML5是目前互联网前端开发的主流语言&…

pil获得图片_「实践」如何优雅地给网站图片加水印

很多论坛、博客在进行图片上传之后&#xff0c;都会给自己的图像加上水印&#xff0c;这样可以证明这张图片「属于我」或者是「来自我的博客/网站」。那么使用 Serverless 技术来加水印的方法比传统方法好在哪儿呢&#xff0c;本文将对此进行一个简单的分享。传统的加水印的方法…

某高校校园卡网站模拟登陆(php)

让我们先来看登陆界面&#xff0c;这里可以使用卡号或学号&#xff0c;这里我们使用卡号&#xff0c;其实是一样的输入卡号后&#xff0c;点击密码输入框&#xff0c;弹出一个密码键盘输入密码以后&#xff0c;点击验证码框出现验证码输入验证码以后正常登陆下面来看看这个登陆…

关于动态网站的简单爬虫实现

1.XPath的使用 用来解析XML&#xff0c; 也可以用来解析HTML。同Beautiful Soup一样&#xff0c;在XPath中提供了非常简洁的节点选择的方法&#xff0c;Beautiful Soup主要是通过.的方式来进行子节点或者子孙节点的选择&#xff0c;而在XPath中则主要通过/的方式来选择节点。 …

jsp oracle 网站建设_网站建设5大基础知识,你知道吗?

原标题&#xff1a;网站建设5大基础知识&#xff0c;你知道吗&#xff1f;现在网站建设普及度越来越广&#xff0c;做网站建设的企业也越来越多&#xff0c;引起不少对网站建设知识学习的追求者&#xff0c;一时间各种建站系统遍布互联网。在做网站优化中&#xff0c;也许对网站…

多布局怎么搭建_怎么建设文创饰品网站?需要多少钱?

近几年文创周边产品很受欢迎&#xff0c;因此也诞生了不少文化艺术、文创饰品类企业。文创产品要想顺利销售出去&#xff0c;就需要广拓渠道&#xff0c;尤其要注重互联网窗口的建设&#xff0c;因此建设一个自己的官方网站自然是少不了的。「上线了」建站案例文创饰品公司要建…

python3网站攻击_Python实现DDos攻击实例详解

SYN 泛洪攻击 SYN泛洪攻击是一种比较常用的Dos方式之一。通过发送大量伪造的 TCP 连接请求&#xff0c;使被攻击主机资源耗尽&#xff08;通常是 CPU 满负荷或内存不足&#xff09;的攻击方式 我们都知道建立 TCP 连接需要三次握手。正常情况下客户端首先向服务器端发送SYN报文…

node获取图片路径_在Node.js上接入Paddle Lite,让你的网站具备AI推理能力

【飞桨开发者说】李睿&#xff0c;北京邮电大学学生&#xff0c;人工智能和移动开发爱好者。随着桌面端Electron技术逐步崛起&#xff0c;基于Electron开发的代码编辑器、聊天软件、游戏等层出不穷。对于习惯使用Node.js进行后端开发的朋友来说&#xff0c;开发一套漂亮的桌面U…

bootstrap获取下拉框数据_网站SEO优化推广关键词可以通过哪些途径获取,分析百度搜索原理...

一、百度下拉框&#xff0c;从百度下拉框里可以获取用户在搜索引擎搜索过的关键词&#xff0c;这类词符合用户的搜索习惯。二、百度相关搜索&#xff0c;在搜索引擎页面底部&#xff0c;有个百度相关搜索&#xff0c;这些词也可以选择&#xff0c;这是百度算法根据用户浏览过的…

静态网站生成器

静态网站生成器 静态网站相比动态网站具备无需依赖应用服务器&#xff0c;性能优越&#xff0c;部署简单等特点。特别适合生成静态文档&#xff0c;个人博客&#xff0c;饱受开发者的青睐。相比学会使用&#xff0c;掌握工作原理也尤为重要。 一个静态网站生成器的工作流程通…

SEO优化来了

搜索引擎工作原理 当我们在输入框中输入关键词&#xff0c;点击搜索或查询时&#xff0c;然后得到结果。深究其背后的故事&#xff0c;搜索引擎做了很多事情。 在搜索引擎网站&#xff0c;比如百度&#xff0c;在其后台有一个非常庞大的数据库&#xff0c;里面存储了海量的关…

织梦网站地图更新自由列表html,织梦自由列表更新使用教程

当我们用织梦网站建立了一个自由列表后就相当于建立了一个类似其它栏目的一个列表&#xff0c;跟其它栏目建立了一个最终列表页一样&#xff0c;当建立完自由列表后&#xff0c;也需要生成列表html&#xff0c;也就是自由列表的更新&#xff0c;如下图所示&#xff1a;(此图片来…