一 时间戳
在生产系统的表中要求加入gmt_modify字段来表示行级变更日期,然后编写触发器如下
CREATE TRIGGER `
AFTER UPDATE
ON
FOR EACH ROW
BEGIN
case when updating then
IF :new.validflag!=:old.validflag then
update
set gmt_modify=sysdate
end if ;
end case ;
END TRIGGER ;
当行级记录出现变动 则打上时间戳,只要在特定时间比如1天的12点把指定区间内的数据导入数据仓库即可。
二 日志增量
目前网站上普遍使用的日志log格式是标准的Apache combined格式,格式如下:
LogFormat "%h %l %u %t \"%m /%{HOST}i%U%q %H\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
由于我们采用了将日志直接导入数据库,利用数据库进行日志分析的技术方式,为了方便导入,我们对标准的日志格式做了修改,将每一项用分隔符”^”分开 , 格式如下:
LogFormat "%h^%{%Y-%m-%d %H:%M:%S}t^%m^/%{HOST}i%U^%q^%H^%>s^%b^%{Referer}i^%{User-Agent}i^%{apay_id}n^%{apay_sid}n^%{apay_aid}n^%{ali_apache_tracktmp}C^_ad=%{_ad}n;_adType=%{_adType}n;src=%{src}n;_chn=%{_chn}n" combined
其中每项的意义是:
%h: 服务器的IP地址
%{%Y%m%d %H:%M:%S}t :访问的时间
%m:请求的方法 (GET,POST)
%{HOST}i:用户访问的域名
%U:用户所请求的URL路径
%q:查询字符串(如果存在查询字符串,则包含“?”后面的部分;否则,它是一个空字符串。)
%H:请求的协议
%>s:HTTP状态
%b:CLF格式的已发送字节数量,不包含HTTP头。
%{Referer}i:用户访问的Referer
%{User-Agent}i:用户的浏览器的标识字符串
%{apay_id}n: 永久的cookie id,用户只要曾经上过我们网站,而没有清空自己的cookie的话,下次来,我们就可以得到这个ID,从而进行长期的分析
%{apay_sid}n: 临时的cookie,用户在30分钟内如果保持活动的话,这个值就不变,如果用户30分钟以后才继续访问的话,这个ID会变,表示用户开始一个新的Session。
%{apay_aid}n: 临时的cookie,在用户关闭浏览器时失效,再次打开时这个ID会变,表示用户的另一次浏览器访问
%{ali_apache_tracktmp}n:临时cookie,主要是表示用户是否登陆。
_ad=%{_ad}n;_adType=%{_adType}n;src=%{src}n;_chn=%{_chn}n: 这是一些自定义的cookie,用于跟踪用户的推广效果,做用户的访问行为分析
一条combined log示例:
172.17.199.203^2009-08-19 09:21:13^GET^/dwcookie-pool.xyi.alipay.com/index.html^?IP=172.17.198.18&&rnd=1892658947&screen=1152x864&color=32-bit&utmhn=%2Fsecuritycenter%2Fsc_index.htm^HTTP/1.1^200^44^https://www.alipay.com/securitycenter/sc_index.htm^Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; QQDownload 538; .NET CLR 2.0.50727)^713983076.1250644873431207.1250644873431207.1250644873431207.1^713983076.1250644873431207.1|1250646673^1250644873431207^-^_ad=-;_adType=-;src=yy_kt_rz;_chn=-
有了以上分析 就可以做日志分析了
(待续)
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/24619106/viewspace-676230/ ,如需转载,请注明出处,否则将追究法律责任。