常见Web日志切割方法

合集下载

Shell脚本中的日志分割技巧

Shell脚本中的日志分割技巧

Shell脚本中的日志分割技巧在Shell脚本开发中,日志是非常重要的组成部分。

随着日志的产生,日志文件的大小也会逐渐增大。

为了便于管理和查找,经常需要对日志进行分割。

本文将介绍几种日志分割的技巧,帮助你更加高效地处理日志文件。

一、按日期分割日志按日期分割日志是最常见的一种方式。

通过将日志文件按照日期命名,可以按照日期进行查找和管理。

以下是一个示例脚本,演示如何按照日期将日志进行分割。

```#!/bin/bash# 定义日志文件路径和名称logfile="/var/log/mylog.log"# 获取当前日期date=$(date +%Y%m%d)# 备份日志文件cp $logfile "$logfile.$date"# 清空日志文件> $logfile```在上述脚本中,首先定义了日志文件的路径和名称。

通过使用`date`命令获取当前日期,然后将日志文件进行备份,并清空原始的日志文件。

这样就实现了按照日期分割日志的功能。

二、按大小分割日志除了按照日期分割日志,有时候也可以考虑按照日志文件的大小进行分割。

这样可以控制每个日志文件的大小,避免过大的文件。

以下是一个示例脚本,演示如何按照大小将日志进行分割。

```#!/bin/bash# 定义日志文件路径和名称logfile="/var/log/mylog.log"# 定义日志文件大小限制,单位为兆(M)size_limit=10# 获取日志文件大小size=$(du -m $logfile | cut -f1)# 判断日志文件大小是否超过限制if [ $size -gt $size_limit ]; then# 获取当前日期date=$(date +%Y%m%d)# 备份日志文件cp $logfile "$logfile.$date"# 清空日志文件> $logfilefi```在上述脚本中,首先定义了日志文件的路径和名称,以及日志文件大小的限制。

Logrotate实现Catalina.out日志每俩小时切割示例

Logrotate实现Catalina.out日志每俩小时切割示例

Logrotate实现Catalina.out⽇志每俩⼩时切割⽰例⼀.Logrotate⼯具介绍Logrotate是⼀个⽇志⽂件管理⼯具,它是Linux默认⾃带的⼀个⽇志切割⼯具。

⽤来把旧⽂件轮转、压缩、删除,并且创建新的⽇志⽂件。

我们可以根据⽇志⽂件的⼤⼩、天数等来转储,便于对⽇志⽂件管理,⼀般都是通过cron计划任务来完成的,让⽇志切割实现按⼩时分割,按天分割等。

⼆.Logrotate运⾏机制系统会定时运⾏logrotate,⼀般是每天⼀次。

系统是这么实现按天执⾏的。

crontab会每天定时执⾏/etc/cron.daily⽬录下的脚本,⽽这个⽬录下有个⽂件叫logrotate。

[root@test01 ~]# cat /etc/cron.daily/logrotate#!/bin/sh/usr/sbin/logrotate -s /var/lib/logrotate/logrotate.status /etc/logrotate.confEXITVALUE=$?if [ $EXITVALUE != 0 ]; then/usr/bin/logger -t logrotate "ALERT exited abnormally with [$EXITVALUE]"fiexit 0实际运⾏时,Logrotate会调⽤配置⽂件/etc/logrotate.conf三.Logrotate的组成/usr/sbin/logrotate #程序所在位置;/etc/cron.daily/logrotate #默认让Cron每天执⾏logrotate⼀次;/etc/logrotate.conf #全局配置⽂件;/etc/logrotate.d/ #应⽤⾃个的配置⽂件存放⽬录,覆盖全局配置;注意:logrotate.d 是⼀个⽬录,该⽬录⾥的所有⽂件都会被主动的读⼊/etc/logrotate.conf中执⾏。

Linux使用logrotate来切割日志文件

Linux使用logrotate来切割日志文件

Linux使⽤logrotate来切割⽇志⽂件程序在运⾏的时候为了了解运⾏状态,会输出⽇志⽂件,时间久了⽇志⽂件会变得⾮常⼤,甚⾄达到GB级别。

我在golang应⽤⾥使⽤logrus包来打⽇志,配置和使⽤都很⽅便,就是没有⽇志分割的功能,应⽤在线上运⾏⼀个⽉后⽇志⽂件都已经达到上百兆。

后来发现了logrotate,这是centos⾃带的⽇志分割⼯具,都不⽤安装额外组件就能实现定时分割⽇志。

1.运⾏原理logrotate由系统的cron运⾏,位置在/etc/cron.daily/logrotate#!/bin/sh/usr/sbin/logrotate -s /var/lib/logrotate/logrotate.status /etc/logrotate.confEXITVALUE=$?if [ $EXITVALUE != 0 ]; then/usr/bin/logger -t logrotate "ALERT exited abnormally with [$EXITVALUE]"fiexit 0可以看到⼊⼝配置⽂件是/etc/logrotate.conf,依次运⾏/etc/logrotate.conf.d⾥的配置⽂件如果发现配置的logrotate没有执⾏,可以看下系统的crond服务有没有开启2.配置如果有安装nginx,可以参考nginx⾥的配置例⼦/var/log/nginx/*log {create 0644 nginx nginxdailyrotate 10missingoknotifemptycompresssharedscriptspostrotate/bin/kill -USR1 `cat /run/nginx.pid 2>/dev/null` 2>/dev/null || trueendscript}第⼀⾏定义的是⽇志⽂件的路径,可以⽤*通配,⼀般可以定义成*.log来匹配所有⽇志⽂件。

nginx日志自动切割方法

nginx日志自动切割方法

nginx⽇志⾃动切割⽅法说明:⽇志配置Nginx ⽇志分⽂件有以下两个:access.log 记录哪些⽤户,哪些页⾯以及⽤户浏览器,IP等访问信息;error.log 记录服务器错误的⽇志;⼀、利⽤脚本⽇志切割(按天进⾏⽇志切割)以下脚本任选⼀个就⾏;A.编写脚本#!/bin/bashyear=`date +%Y`month=`date +%m`day=`date +%d`logs_backup_path="/usr/local/nginx/logs_backup/$year$month" #⽇志存储路径logs_path="/usr/local/nginx/logs/" #要切割的⽇志路径logs_access="access" #要切割的⽇志logs_error="error"pid_path="/usr/local/nginx/logs/nginx.pid" #nginx的pid[ -d $logs_backup_path ]||mkdir -p $logs_backup_pathrq=`date +%Y%m%d`#mv ${logs_path}${logs_access}.log ${logs_backup_path}/${logs_access}_${rq}.logmv ${logs_path}${logs_error}.log ${logs_backup_path}/${logs_error}_${rq}.logkill -USR1 $(cat /usr/local/nginx/logs/nginx.pid)B.编写脚本#! /bin/bash## 假设nginx的⽇志存放路径为/data/logs/d=`date -d "-1 day" +%Y%m%d` ⽣成昨天的⽇期logdir="/data/logs"定义存放位置nginx_pid="/usr/local/nginx/logs/nginx.pid"定义位置,找他的pidcd $logdir 进⼊⽬录下for log in `ls *.log` 做个for循环domv $log $log-$d 做⼀个改名操作done/bin/kill -HUP `cat $nginx_pid` 重新加载⼀下,⽣成新的⽇志⽂件设置定时任务# crontab –e5923 * * * bash /usr/local/nginx/cut_ngnix_log.sh #每天23:59分开始执⾏;⼆、利⽤logrotate管理⽇志(1)默认centos系统安装⾃带logrotate,软件包信息说明;# rpm -ql logrotate/etc/cron.daily/logrotate/etc/logrotate.conf # 主配置⽂件/etc/logrotate.d # 配置⽬录(2)使⽤Logrorate切割⽇志# vim /etc/logrotate.d/nginx/var/log/nginx/*.log #此处为nginx存储⽇志的地⽅;{daily #指定转储周期为每天rotate 30 #转储次数,超过将会删除最⽼的那⼀个missingok #如果⽇志⽂件丢失,不要显⽰错误compress #通过gzip 压缩转储以后的⽇志delaycompress #当前转储的⽇志⽂件到下⼀次转储时才压缩notifempty #当⽇志⽂件为空时,不进⾏轮转postrotate #执⾏的指令if [ -f /var/run/nginx/nginx.pid ]; thenkill -USR1 `cat /var/run/nginx/nginx.pid`fiendscript #PID路径根据实际路径填写;}(3)保存好配置⽂件后,测试效果:# logrotate -vf /etc/logrotate.d/nginxaccess.log access.log.1 error.log error.log.1(4)定时任务执⾏#crontab –e0 0 * * * /usr/sbin/logrotate -vf /etc/logrotate.d/nginx #每天凌晨00:00⾃动执⾏⽇志切割任务;。

logrotate容器中Nginx日志的切割滚动

logrotate容器中Nginx日志的切割滚动

logrotate容器中Nginx⽇志的切割滚动⽆论是对于系统还是对于应⽤⽽⾔,⽇志是⼀个极其重要的部分,在出现问题需要追踪的时候,⽇志⽂件就发挥它的价值了。

通常⽇志信息会保存在⽂件中,显然随着时间的推移,⽇志⽂件⽂件体积会变成很⼤、记录时间跨度也变得很⼤。

如果需要打开⽇志追溯问题时变得异常困难,所以我们需要对我们的⽇志进⾏管理,通过某种策略对⽇志进⾏分割以降低⽇志⽂件的体积和跨度。

logrotate就是这样的⼀个⼯具。

对于系统⽇志⽽⾔,并没有做这样的策略。

对于应⽤⽽已,我们会要求开发者将⽇志写⼊到以时间命令的⽇志⽂件中。

⼀个⽇志⽂件保存⼀天时间的⽇志,这是⼀种⽐较⽅便快捷的⽅式。

我们⼀般在容器中的nginx⽇志会通过卷的⽅式挂载在宿主机上,⽇志也会随着时间推移变的越来越⼤。

我们将在宿主机上进⾏⽇志切割容器中的nginx⽇志。

logrotate命令 linux系统默认安装了logrotate的⼯具。

# docker exec web logrotate -vlogrotate 3.7.4 - Copyright (C) 1995-2001 Red Hat, Inc.This may be freely redistributed under the terms of the GNU Public LicenseUsage: logrotate [-dfv?] [-d|--debug] [-f|--force] [-m|--mail command][-s|--state statefile] [-v|--verbose] [-?|--help] [--usage][OPTION...] <configfile>我们在容器⾥⾯定义的切割规则为:# cat /etc/logrotate.d/nginx/data/logs/*.log { #表⽰nginx⽇志存储路径daily #指定转储周期为每天rotate 5 #指定⽇志⽂件删除之前转储的次数,0 指没有备份,5 指保留5 个备份missingok #如果⽇志丢失,不报错继续滚动下⼀个⽇志notifempty #当⽇志⽂件为空时,不进⾏轮转sharedscripts #运⾏postrotate脚本,作⽤是在所有⽇志都轮转后统⼀执⾏⼀次脚本。

Tomcat的日志分割三种方法

Tomcat的日志分割三种方法

Tomcat的⽇志分割三种⽅法⼀、Tomcat的⽇志分割三种⽅法⼀、⽅法⼀:⽤cronolog分割tomcat的catalina.out⽂件 Linux ⽇志切割⼯具cronolog详解: 1、编译安装cronologwget /download/cronolog-1.6.2.tar.gztar zxvf cronolog-1.6.2.tar.gzcd cronolog-1.6.2./configuremake && make install 2、查看cronolog安装后所在⽬录(验证安装是否成功)which cronolog⼀般情况下显⽰为:/usr/local/sbin/cronolog 3、编辑tomcat⽬录bin下的catalina.sh⽂件 找到下⾯这⾏,类似这样的⾏有2处:org.apache.catalina.startup.Bootstrap "$@" start \>> "$CATALINA_OUT"2>&1 &1. 第⼀处:tomcat是带“-security”参数的启动,2. 第⼆处:默认tomcat启动⽅式,也就是else下⾯的那部分,我们只修改这⾥。

3. 另外还要把touch “$CATALINA_OUT"这⾏注释掉。

# touch "$CATALINA_OUT"if [ "$1" = "-security" ] ; thenif [ $have_tty -eq 1 ]; thenecho"Using Security Manager"fishift"$_RUNJAVA""$LOGGING_CONFIG" $LOGGING_MANAGER $JAVA_OPTS $CATALINA_OPTS \-Djava.endorsed.dirs="$JAVA_ENDORSED_DIRS" -classpath "$CLASSPATH" \-Djava.security.manager \-Djava.security.policy=="$CATALINA_BASE"/conf/catalina.policy \-Dcatalina.base="$CATALINA_BASE" \-Dcatalina.home="$CATALINA_HOME" \-Djava.io.tmpdir="$CATALINA_TMPDIR" \org.apache.catalina.startup.Bootstrap "$@" start \>> "$CATALINA_OUT"2>&1 &else"$_RUNJAVA""$LOGGING_CONFIG" $LOGGING_MANAGER $JAVA_OPTS $CATALINA_OPTS \-Djava.endorsed.dirs="$JAVA_ENDORSED_DIRS" -classpath "$CLASSPATH" \-Dcatalina.base="$CATALINA_BASE" \-Dcatalina.home="$CATALINA_HOME" \-Djava.io.tmpdir="$CATALINA_TMPDIR" \org.apache.catalina.startup.Bootstrap "$@" start 2>&1 | /usr/local/sbin/cronolog /usr/local/tomcat/logs/catalina.%Y%m%d.out >> /dev/null & # >> "$CATALINA_OUT" 2>&1 &fi 4、重启tomcat 查看⽇志⽬录是否⽣成catalina.yymmdd.out的⽇志⽂件 -rw-r--r-- 1 root root 10537 Jul 30 10:50 catalina.20140730.out 配置cronolog完成了,观察每天是否有⼀个新的catalina.yymmdd.out的⽇志⽂件⽣成,定期删除⽇期较旧的⽇志⽂件。

web日志分析常用方法及应用

web日志分析常用方法及应用

Web日志挖掘分析的方法日志文件的格式及其包含的信息①2006-10-17 00:00:00②202.200.44.43 ③218.77.130.24 80 ④GET⑤/favicon.ico⑥Mozilla/5.0+(Windows;+U;+Windows+NT+5.1;+zh-CN;+rv:1.8.0.3)+Gecko/20060426+Firefox/1.5.0.3。

①访问时间;②用户IP地址;③访问的URL,端口;④请求方法(“GET”、“POST”等);⑤访问模式;⑥agent,即用户使用的操作系统类型和浏览器软件。

一、日志的简单分析1、注意那些被频繁访问的资源2、注意那些你网站上不存在资源的请求。

常见的扫描式攻击还包括传递恶意参数等:3、观察搜索引擎蜘蛛的来访情况4、观察访客行为应敌之策:1、封杀某个IP2、封杀某个浏览器类型(Agent)3、封杀某个来源(Referer)4、防盗链5、文件重命名作用:1.对访问时间进行统计,可以得到服务器在某些时间段的访问情况。

2.对IP进行统计,可以得到用户的分布情况。

3.对请求URL的统计,可以得到网站页面关注情况。

4.对错误请求的统计,可以更正有问题的页面。

二、Web挖掘根据所挖掘的Web 数据的类型,可以将Web 数据挖掘分为以下三类:Web 内容挖掘(Web Content Mining)、Web 结构挖掘(Web Structure Mining)、Web 使用挖掘(Web Usage Mining)(也称为Web日志挖掘)。

①Web内容挖掘。

Web内容挖掘是指从文档的内容中提取知识。

Web内容挖掘又分为文本挖掘和多媒体挖掘。

目前多媒体数据的挖掘研究还处于探索阶段,Web文本挖掘已经有了比较实用的功能。

Web文本挖掘可以对Web上大量文档集合的内容进行总结、分类、聚类、关联分析,以及利用Web文档进行趋势预测等。

Web文档中的标记,例如<Title>和<Heading>等蕴含了额外的信息,可以利用这些信息来加强Web文本挖掘的作用。

nginx日志切割的2种方法

nginx日志切割的2种方法

nginx⽇志切割的2种⽅法nginx泡得太久,⽇志就越来越⼤,有必要对其切割下,也便于按天统计访问量神马的。

没啥难度,短短⼏⾏的脚本即可#!/bin/bash# Description: rotate nginx access logsNGX_PID=`cat /usr/local/nginx/logs/nginx.pid`LOGS_DIR="/home/wwwlogs"WWW_LOG_NAME=".log"B2B_LOG_NAME=".log"MOBILE_LOG_NAME=".log"PLIST_LOG_NAME=".log"cd $LOGS_DIR/usr/bin/mv $WWW_LOG_NAME $(date +%F -d 'yesterday')_$WWW_LOG_NAME/usr/bin/mv $B2B_LOG_NAME $(date +%F -d 'yesterday')_$B2B_LOG_NAME/usr/bin/mv $MOBILE_LOG_NAME $(date +%F -d 'yesterday')_$MOBILE_LOG_NAME/usr/bin/mv $PLIST_LOG_NAME $(date +%F -d 'yesterday')_$PLIST_LOG_NAME/bin/kill -USR1 $NGX_PID加到cron计划任务中echo "0 0 * * * /home/scripts/rotate-nginx-logs.sh > /dev/null 2>&1" >> /var/spool/cron/root=========================================================2016-07-14今天⼩伙伴给了我另⼀种更简洁的⽅式,只要安装logrotate这个软件即可。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

WebDig网站流量分析决策系统 1 常见Web日志切割方法

本文档就IIS、Apache、Tomcat常见Web服务下的日志切割及发布进行说明。

配置前说明 --------------------------------------------------------------------------------------- 2 日志正确格式 ------------------------------------------------------------------------------------ 3 IIS服务器 ---------------------------------------------------------------------------------------- 3

1、日志文件切割 ------------------------------------------------------------------ 3 2、配置网站日志 ------------------------------------------------------------------ 4 3、日志文件获取方法 ------------------------------------------------------------ 7 4、Win2003 Server log文件可下载配置 -------------------------------------- 9 5、设置虚拟目录IP访问限制 ------------------------------------------------ 11 IIS 7服务器 ------------------------------------------------------------------------------------ 12 1、日志文件切割 ---------------------------------------------------------------- 12 2、配置网站日志 ---------------------------------------------------------------- 12 3、日志文件获取方法 ---------------------------------------------------------- 14 Apache服务器 --------------------------------------------------------------------------------- 15 1、日志分割设置 ---------------------------------------------------------------- 15 2、设置虚拟目录来发布日志 ------------------------------------------------- 16 Tomcat服务器 -------------------------------------------------------------------------------- 18 1、日志分割设置 ---------------------------------------------------------------- 18 2、设置虚拟目录来发布日志 ------------------------------------------------- 19 WebDig网站流量分析决策系统

2 配置前说明

1、日志内容:有关记录字段 日志根据记录网民访问时的不同信息,每一类信息在日志中形成独立字段,在IIS、Apache等常见Web服务配置中均可进行选择。在以日志为数据源的访问分析中,关键字段缺失(WebServer的默认字段)将有可能导致无法分析或者数据失真,其它字段不进行记录将导致部分分析项目无法获取分析数据。 建议:日志字段记录尽量完整。

2、切割及切割时间点 日志文件按不同域名以“天”为时间段记录更加有利于日志文件的管理和数据分析。天的切割点则为北京时间0点,这样更加有利于分析网民的行为习惯。 建议:日志配置时关注网站Web服务器的时间是否为当前时间。

3、下载权限 为了提高日志下载的安全性,在通过Http、Ftp方式发布日志时,可增加用户名密码及指定IP下载的设置。 建议:局域网下载可降低权限设置。

4、是否采取压缩 当日志需要通过互联网(非内网)传输时来进行异地分析时,对于较大的日志文件压缩后更加有利于日志传输。 WebDig系统压缩要求:采用.gz/.zip格式进行压缩,单个文件进行压缩。①请不要将多个日志压缩在同一个压缩包中;②请不要使用.rar压缩;③请不要增加文件夹进行压缩。

5、空间问题 由于日志较大,网站维护人员请注意维护Web服务器空间,以免由于空间满导致日志无法正常记录而影响数据分析。 WebDig网站流量分析决策系统 3 日志正确格式

1、Apache日志 60.186.20.73 - - [22/Jul/2006:00:00:10 +0800] "GET /zhuanti2005/node_5840598.htm HTTP/1.1" 304 29 "http://www.china.cn/news/txt/2006-07/21/content_7019603.htm" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)" 61.49.22.93 - - [22/Jul/2006:00:00:12 +0800] "HEAD /images/logo.gif HTTP/1.1" 200 314 "-" "-" 60.10.24.28 - - [22/Jul/2006:00:00:18 +0800] "GET /images/ch/030321/new2.gif HTTP/1.1" 200 471 "http://www.china.cn/" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; TencentTrave" 61.49.22.93 - - [22/Jul/2006:00:00:20 +0800] "HEAD /images/logo.gif HTTP/1.1" 200 311 "-" "-"

2、IIS日志 #Software: Microsoft Internet Information Services 6.0 #Version: 1.0 #Date: 2007-12-19 16:00:01 #Fields: date time s-ip cs-method cs-uri-stem cs-uri-query s-port cs-username c-ip cs-version cs(User-Agent) cs(Referer) sc-status sc-substatus sc-win32-status sc-bytes 2007-12-19 16:00:01 192.168.1.31 GET /A2/200712/t20071218_10015.html - 80 - 203.120.37.251HTTP/1.1Mozilla/4.0+(compatible;+MSIE+6.0;+Windows+NT+5.1;+SV1;+.NET+CLR+1.1.4322) http://www.caac.gov.cn/ 200 0 0 11461 2007-12-19 16:00:01 192.168.1.31 GET /I1/K3/200706/t20070618_5391.html - 80 - 203.206.167.186HTTP/1.1Mozilla/5.0+(compatible;+FunnelBack;+http://dev.funnelback.com/robot.html)+RPT-HTTPClient/0.3-3E - 404 0 2 1468

IIS服务器 1、日志文件切割 在Internet信息服务(IIS)管理器界面。屏幕左上角点击网站 — 右键属性。 WebDig网站流量分析决策系统

4 2、配置网站日志 (1)选择“启动日志记录选项”。 (2)“活动日志格式”选择为 “W3C扩展日志文件格式”。 WebDig网站流量分析决策系统

5 点击“W3C扩展日志文件格式”旁“属性”项(如上图所示),进入日志记录属性配置页面。 (1)配置常规选项: A.新日志计划可根据用户需要自行选择。 B.选择“文件命名和创建使用当地时间。” C.“日志文件目录”所显示路径C:\WINDOWS\system32\LogFiles为默认存储路径,用户可根据需求自己改变。 D.“日志文件名为不可更改。” WebDig网站流量分析决策系统

6 (2)配置“高级”选项。 除了默认选项外还应该选择上“Cookie和引用站点”选项。也可将所有选项均选择。 WebDig网站流量分析决策系统

7 3、日志文件获取方法

回到Internet信息服务(IIS)管理器页面。点击“默认网站” —右键属性 —新建虚拟目录。

“别名” 为用户自己所起名字,一般以logXX为命名规则。如:添加logs。 “路径” 此处所选择路径一定要和“日志记录属性配置页面”中所选路径一致。如果刚才用户选择的是默认路径“C:\WINDOWS\system32\LogFiles”这里也要选择此路径。

相关文档
最新文档