场景描述:一个Web应用,前端设置了8个具有相同配置的Tomcat服务器,跑在Nginx反向代理后。每个Tomcat服务器运行在一个虚拟机上,要求能对Tomcat服务器的访问日志汇总存储并提供一定的分析能力。
需要的开源软件:Logstash和Elasticsearch。通过在各个虚拟机上安装Logstash收集Tomcat的日志数据,并存储在Elasticsearch中达到日志集中收集和分析的目的。
过程有两个步骤:
一、配置Tomcat的日志存储格式。编辑Tomcat目录下serverxml,填写如下内容
<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true">
<!-- Access log processes all example
Documentation at: /docs/config/valvehtml
Note: The pattern used is equivalent to using pattern="common" -->
<Valve className="orgapachecatalinavalvesAccessLogValve" directory="logs" prefix="localhost_access_log" suffix="txt" pattern="%h %l %u %t "%r" %s %b %D "%{Referer}i" "%{User-Agent}i"" />
</Host>
directory表示访问日志存储在Tomcat的logs目录中。
prefix表示日志文件名以localhost_access_log开头。
suffix表示日志文件名以txt截尾。
pattern="%h %l %u %t "%r" %s %b %D "%{Referer}i" "%{User-Agent}i""
pattern这一句非常重要,用于表示日志的存储格式,一般为了方便会使用common或者combined,这两种自定义格式已经可以记录足够详细的信息,我这里使用了自定义方式。在这个pattern描述里:
%h表示访问来源的主机名或者IP地址;
%l表示客户端的标示,通常是 -;
%u表示得到了授权的访问者标示,通常都是 -;
%t表示日志事件的发生时间戳,用 [ 和 ] 括起来的;
"%r"表示用双引号"括起来的访问命令和链接,比如“GET /resource/logopng”;
%s表示>
%b是服务器返回的数据量,以字节为单位;
%D表示服务器的响应时间,可以用于分析页面的执行效率;
"%{Referer}i"表示用两个双引号括起来的网址,用于告诉服务器这个访问请求是从哪个页面链接过来的;
"%{User-Agent}i"表示用双引号括起来的浏览器的>
二、配置Logstash
1、在每个虚拟机上传logstash安装文件,安装logstash,以222版本为例
rpm -ivh logstash-222-1noarchrpm
2、创建Logstash的工作目录
mkdir /root/logstash_work_dir;mkdir /root/logstash_work_dir/config;mkdir /root/logstash_work_dir/logs;mkdir /root/logstash_work_dir/pid
其中/root/logstash_work_dir是工作目录,config目录用于存储Logstash的配置文件,logs目录用于存储Logstash的日志数据,pid目录用于存储Logstash的pid文件。
3、设置Logstash的运行脚本,修改/etc/initd/logstash中,替换其中的代码如下
LS_WORK_DIR=/root/logstash_work_dir
name=logstash
LS_USER=root
LS_GROUP=root
LS_HOME=/var/lib/logstash
LS_HEAP_SIZE="1g"
pidfile=${LS_WORK_DIR}/pid/$namepid
LS_LOG_DIR=${LS_WORK_DIR}/logs
LS_LOG_FILE=${LS_WORK_DIR}/logs/$namelog
LS_CONF_DIR=${LS_WORK_DIR}/config/root_tomcatconf
LS_OPEN_FILES=16384
LS_NICE=19
LS_OPTS=""
LS_USER和LS_GROUP指定了Logstash进程运行时的用户名和组,我这里使用了root,也可以使用其他权限更低的一般用户和组。
LS_CONF_DIR=${LS_WORK_DIR}/config/root_tomcatconf这一句最重要,指定了Logstash服务运行时的配置文件路径。
4、在/root/logstash_work_dir/config/目录中编写Logstash的配置文件root_tomcatconf,这是本系统最重要的文件。
input {
file {
path => "/root/tomcat/logs/localhost_access_logtxt"
sincedb_path => "/root/logstash_work_dir/config/sincedb_apache_access_logtxt"
type => "apache_access_log"
add_field => {"tomcatip" => "101281861"}
}
}
filter{
if [type] == "apache_access_log" {
grok{
match => { "message" => "%{IPORHOST:clientip} %{USER:ident} %{USER:auth} \[%{>
}
date{
match => [ "timestamp", "dd/MMM/yyyy:HH:mm:ss Z" ]
target => ["writetime"]
}
mutate {
convert => {
"response" => "integer"
"bytes" => "integer"
"responsetime" => "integer"
}
}
}
}
output {
if [type] == "apache_access_log" {
elasticsearch {
hosts => ["101281874:9200","101281875:9200","101281877:9200"]
index => "logstash-apacheaccesslog-%{+YYYYMMdd}"
}
}
}
Logstash的配置文件包括input、filter和output三部分。
input部分,使用了file插件。path指定了Logstash扫描的文件,每当有文件变化时,Logstash会读取文件尾部新增的数据;sincedb_path用于存储上一次文件读取的位置信息,如果这个文件不存在,则会从日志文件首部获取所有数据;type用于对这个配置插件做标识,当一个配置文件中有多个数据收集任务时尤其有用;add_field用于标识本机的ip地址,当数据存储在Elasticsearch后,用于区分来自哪一个Tomcat服务器。
filter插件,使用了grok、date和mutate三个插件。
grok插件用于解析Tomcat的访问日志,logstash自带了COMBINEDAPACHELOG等多个配置模式,但由于我使用了自定义的Tomcat日志配置,这里也自己编写;
date部分用于从日志中提取时间戳信息;
mutate中用convert将response、byte和responsetime三个解析得到的字符串转化为整数integer类型,这个步骤对于后续的分析比较重要,因为这样可以在Elasticsearch中做数值比较运算。
output插件,使用了elasticsearch插件,其中hosts指定了Elasticsearch集群的地址,本例子中指定了三个实例;index指定了数据存储在Elasticsearch中的索引名字,以logstash作为开头是因为Logstash自带的针对ELasticsearch的mapping映射中,对于所有的字符串类型都附带设置了一个raw不做解析的设置,这样便于在Elasticsearch中做底层的文本检索。
5、设置chkconfig的启动命令
chkconfig --add logstash
6、启动Logstash服务
service logstash start
一、什么是网站日志
1网站日志是记录web服务器接收处理请求以及运行时错误等各种原始信息的以·log结尾的文件。
2通过网站日志可以清楚的得知用户在什么IP、什么时间、用什么 *** 作系统、什么浏览器、什么分辨率设备下访问了网站的哪个页面,是否访问成功。
3搜索引擎也属于网站中的一类用户,我们今天的分享课,主要是针对搜索引擎这种用户在服务器留下的记录展开分析。
为了方便读懂搜索引擎日志,我们需要了解不同搜索引擎蜘蛛的标识,以下为4种搜索引擎的标识——百度蜘蛛:Baispider搜狗:SogouNewsSpider360:360Spider谷歌:Googlebot
二、如何看懂网站日志
(以下为一段日志记录)
58180251134--[25/Mar/2015:13:24:33+0800]"GET/m53256html
index-1s2i2p2""Mozilla/50
(WindowsNT61)AppleWebKit/53736(KHTML,likeGecko)
Chrome/3501916153Safari/53736SE2XMetaSr10""-""-""-"
以下为字段解读:
通常日志文件较大的情况下,需要借助shell与python结合起来,做数据提取与分析。所以读懂网站日志中的字段就有利于日常的分析。这个在此不赘述,有兴趣的童鞋可以继续深入了解。
大型网站通常可以用以上的方法来进行做日志分析。
普通的个人站点,或者企业网站,则可以通过光年日志分析工具结合百度站长平台一起使用。
三、为什么要做网站日志分析
先来了解SEO流量的获取流程:抓取-->索引--->排名--->点击--->流量
因此,要获得SEO流量的前提务必是,有价值的页面被搜索引擎抓取到。
四、怎么做网站日志分析
定期监控搜索引擎抓取量变化,历史数据的横向纵向对比才能发现异常情况。借助第三方站长平台,如百度站长平台,了解搜索引擎抓取频次变化。借助光年日志分析工具,定期做数据记录,了解重要栏目、重要页面的抓取量变化。
举个栗子:
老站点(建站1年且有人维护的网站):Seo流量出现异常波动。
分2种情况:
了解外界:了解外界的前提在于平时你得有一定的人脉基础,如果没有也没关系。泡2个地方——去搜索引擎站长平台或者加入搜索引擎站长群。比如,像百度搜索引擎,它拥有站长平台,也会相应建立站长QQ群。有人脉基础上,可以直接了解外界的情况——是否也出现类似幅度的波动?这个的前提要结合你短期做过的SEO *** 作一并考虑,避免误判。无人脉的情况,泡群、泡站长平台。通常如果是搜索引擎算法升级,会在群里或者站长平台有相关的小道信息出现。如果是搜索引擎自身算法升级导致的流量波动,那么就得根据新算法做相应的站内优化。比如,百度冰桶30版本提出:将严厉打击在百度移动搜索中,打断用户完整搜索路径的调起行为。如果站点有存在以上的情况就需要针对性的做优化:无论是通过对接的APPLINK调起,还是网页自主调起的应用,以及普通的网页,都应是可返回,可关闭的。用户校验搜索结果的准确性,不需要额外下载APP或者权限。
分析内在:
在分析内在之前,再次抛出这个公式:Seo流量=抓取量收录率(准确来说应该是索引率)首页率点击率
。当抓取频次出现异常必然引起抓取量的减少。因此,排除了外界的因素,就需要对网站的日志进行分析。如果你的站点是中文站点,且是百度站长平台的VIP用户。那么,你就可以先借助第三方站长平台的“抓取频次”工具(如,百度),先了解搜索引擎近期的抓取频次、抓取时间、异常页面。通常借助这个工具,我们可以对搜索引擎近期抓取情况有初步了解,并且可以借助这个工具,相应的找到一些解决办法。
在此先解释这个概念,方便理解:
1抓取频次:抓取频次是搜索引擎在单位时间内(天级)对网站服务器抓取的总次数,如果搜索引擎对站点的抓取频次过高,很有可能造成服务器不稳定,蜘蛛会根据网站内容更新频率和服务器压力等因素自动调整抓取频次。
2抓取时间:指的是搜索引擎每次抓取耗时。而影响抓取频次的可能原因有:
(1)抓取频次上限误调,调低了,则会直接影响到抓取量减少,抓取量减少则索引量少,流量相应减少。
小结一下:
老站如何做网站日志分析(针对中文站点):外界排除:
了解搜索引擎最新算法是否发生变动、同行是否也有类似变化。
内在分析:
(1)使用工具:百度站长平台(非VIP账户看后文介绍)
(2)分析方法:主要使用抓取频次分析工具进行分析,网站抓取频次、抓取时间、异常页面情况等数据变化。并与相关部门进行对接解决。
五、用光年日志分析工具
非百度VIP:
步骤:
1下载网站日志(如果是企业站点,可以直接让运维部门的童鞋帮忙下载,如果是个人站长,直接在你所购买的虚拟主机后台进行下载,文件以log为结尾的便是)
2打开光年日志分析工具,上传网站日志。
3查看分析结果。主要维度有这几个:
(1)概况分析:各种爬虫的总抓取量、总停留时间、总访问次数。
(2)目录分析:各种爬虫抓取各目录的情况分析。通过这个可以了解到搜索引擎对一些重要栏目的抓取情况,又抓取了哪些无效的页面。
(3)页面分析:通过页面分析可以了解到经常被重复抓取的页面有哪些,可以相应的做优化调整。比如,像网站的一些注册页面及登录页面,经常会发现多次被抓取,发现这种情况,我们通常会将登录/注册页面进行屏蔽处理。
(4)状态码分析主要分为2种,爬虫状态码以及用户状态码。主要反应用户/爬虫访问页面时的页面状态。通过页面状态码,我们可以了解到页面状态,做相应调整,如,当网站存在大量404页面。那就需要进一步排查,比如,有些团购页面,团购过期后,页面就直接变成404了,但并未向百度站长平台提交死链清单,则容易造成无效抓取。
控制面板->查看事件日志->事件查看器(本地)->Windows日志->安全,在右侧的列表会显示出全部安全信息,然后可以查找 事件ID为4776的条目,
点击开后,“源工作站:“后边的就是登陆本机的windows 客户端的主机名。
每次查看都需要搜索比较麻烦,可以设置自动记录到文件的方式创建登陆日志:
建立一个存放日志和监控程序的目录,如在C盘下建立一个RDP目录
在其目录下建立一个名为RDPlogtxt的文本文件和一个名为RDPlogbat的批处理文件
RDPlogbat是执行记录的脚本,RDPlogtxt是登录日志。RDPlogbat内容为:
date /t >>RDPlogtxttime /t >>RDPlogtxtnetstat -n -p tcp | find ":3389">>RDPlogtxtstart Explorer
进入系统管理工具中的“终端服务器配置”,进入到默认RDP-Tcp属性中、切换到“环境”页下,启用“用户登录时启用下列程序”在程序路径和文件名处填写:C:\RDP\rdplogbat;并在起始于填写:C:\RDP\
完成以上的配置步骤后,当再次登录服务器时就会记录当前登录者的时间和IP。
一个seo工作人员,特别是那些大型网站的seo人员来说,能独立分析网站日志是一种必不可少的技能,因为大型的网站栏目结构以及页面非常的繁杂,蜘蛛也是少不了会频繁访问,从蜘蛛给网站留下的一些痕迹上面能够掌控网站不少的信息,这对网站优化运营是一种非常必要的参考,今天肥猫科技就跟大家讲讲我们能从网站日志中获取哪些信息。
一、哪些搜索引擎来了我的网站抓取
从网站日志里面可以看出网站被哪些蜘蛛所抓取,每个搜索引擎都有自己的蜘蛛程序,各大搜索引擎的标头特征如下所示:
百度蜘蛛:spider
谷歌蜘蛛:Googlebot
360蜘蛛:360Spider
搜狗蜘蛛:sogouspider
二、网站目录的抓取数量
通过抓取总量的分析可以对比出网站哪个目录更受搜索引擎的关注,一般来说蜘蛛抓取越频繁的目录,site网站此目录的排名会相对靠前,我们也可通过目录的蜘蛛访问量来适当调整目录的结构,对于那些抓取压力较大但是不怎么重要的目录也可适当缩减链接入口,以免阻碍给其它重要目录的抓取。
三、网站页面的抓取数量
可以从中看出哪个页面蜘蛛是否抓取了一些没有被收录价值的页面,或者老是重复的抓取了这些页面等,那么同理要先采取措施予以频闭,要么是运用到nofollow标签,要么是robots文件等,这样就会降低因为搜索引擎抓取到大量相关性低或者质量度差的页面而影响到页面的权重传递这样的不利影响。
四、可以一览蜘蛛方面各网页的状态码
五、了解网站日志蜘蛛的来访时间
对网站日常日志分析总结中,可以很直观的看出每天具体是哪个时间段是蜘蛛访问的高峰时期,我们为了迎合搜索引擎,也可以相应调整网站的更新时间,争取在蜘蛛活跃度最高的时间段更新文章,这样对自己网站的收录会有非常大的帮助,甚至还有可能达到秒收的效果!
肥猫科技认为,分析网站日志是一个非常有意义的技能,特别是网站建立的初期和运营遇到状况的时候,分析日志这个方面就更是尤为重要,当然再碰到信息量特别大的时候,手动 *** 作效果不好,可以使用一些日志分析工具来查看。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)