【运维小分享】整理Apache日志

网站的日志文件随着每天的访问记录积累,会越来越大,特别是大型网站。

日志越来越大不仅影响储存容量从而影响网站性能,而且对我们做日志分析造成困难。

因此,我要对日志进行规范整理。

方法一:使用rotatelogs实现log轮转

rotatelogs是一个配合Apache管道日志功能使用的简单程序。

PS:管道日志功能

Apache提供了不把日志直接写入文件,而是通过管道发送给另外一个程序的能力。这样就大大加强了对日志进行处理的能力。这个通过管道得到的程序可以是任意程序,如日志分析、压缩日志等。要实现将日志写到管道的操作,只需要将配置中日志文件部分的内容替换为"|程序名"即可,例如:

# compressed logs
$ CustomLog
"|/usr/bin/gzip -c >> /var/log/access_log.gz" common

rotatelogs语法

rotatelogs [ -l ] logfile [ rotationtime [
offset ]] | [ filesizeM ]

logfile它加上基准名就是日志文件名。如果logfile中包含"%",则它会被视为用于strftime()的格式字符串;否则它会被自动加上以秒为单位的".nnnnnnnnnn"后缀。这两种格式都表示新的日志开始使用的时间。rotationtime日志文件滚动的以秒为单位的间隔时间。offset相对于UTC的时差的分钟数。如果省略,则假定为"0"并使用UTC时间。比如,要指定UTC时差为"-5小时"的地区的当地时间,则此参数应为"-300"。filesizeM指定以filesizeM文件大小滚动,而不是按照时间或时差滚动。在
Windows 下的设置例子如下:

#
限制错误日志文件为 1M

ErrorLog
"|bin/rotatelogs.exe -l logs/error-%Y-%m-%d.log 1M"

#
每天生成一个错误日志文件

#ErrorLog
"|bin/rotatelogs.exe  logs/error-%Y-%m-%d.log
86400"

#
限制访问日志文件为 1M

CustomLog
"|bin/rotatelogs.exe -l logs/access-%Y-%m-%d.log 1M" common

#
每天生成一个访问日志文件

#CustomLog
"|bin/rotatelogs.exe  logs/access-%Y-%m-%d.log
86400" common

正题(实际运用操作):

修改/usr/local/apache2/conf/httpd.conf文件

把ErrorLog
"logs/error_log" 用#备注了它然后

改为

ErrorLog
"|/usr/local/apache2/bin/rotatelogs
/usr/local/apache2/logs/%Y-%m-%d-error_log 84600 480"

把CustomLog
"logs/access_log" common 用#备注了它然后

改为

CustomLog
"|/usr/local/apache2/bin/rotatelogs
/usr/local/apache2/logs/%Y-%m-%d-access_log 84600 480" combined

然后重启Apache:/usr/local/apache2/bin/apachectl -k restart

到logs下就可看见改变了

-rw-r--r-- 1 root
root   13400 Dec  8 15:50 2016-12-08-access_log

-rw-r--r-- 1 root
root    3714 Dec  8 15:50 2016-12-08-error_log

可以把access_log和error_log删除了,以后日志都是按每天生成,对日志做分析时就方便了。

然后你还可以通过crontab定期把三天前的旧日志删除。(几天前自己在下面设置好)

crontab -e

00 00 * * *
/usr/bin/find /usr/local/apache2/logs/ -name ‘*_log‘ -mtime +3 -exec rm -rf {}
\;

方法二:写shell脚本通过crontab定期进行备份删除重启日志操作

vim cron_log.sh

#!/bin/bash
# This script run at 00:00
 
logs_path="/usr/local/apache2/logs/"
#How much days backup most
DAYS=3
 
#Core of script
cd $logs_path
DATE=`date +%Y-%m-%d-%H`
SRC_FILE="access.log"
TAR_FILE="access-$DATE.tar.gz"
tar -czf $TAR_FILE $SRC_FILE
rm -f $SRC_FILE

find ./ -name "access-*" -type f -mtime +$DAYS -exec rm {} \;
/usr/local/apache2/bin/apachectl -k restart
exit 0;

添加到crontab中定期执行

crontab -e

00 00 * * *
/usr/local/crontab/cron_log.sh

时间: 2024-12-28 22:08:30

【运维小分享】整理Apache日志的相关文章

【运维小分享】Apache日志分析命令汇总

很多像我这样刚入门的小菜鸟,不知道日常怎么对自己的网站的日志进行分析,得出谁访问过我网站,访问什么,响应效果如何等等,在这里我对相关基础分析命令作个总结,大家可以参考一下&给修改意见. 在讲分析命令之前,首先要明确日志格式,每个人的格式不一定一样,如果与我的格式不一样则分析命令的列数号要作对应调整 141.10.225.94 - - [09/Dec/2016:15:42:45 +0800] "GET /wp-content/uploads/2016/12/56.jpg HTTP/1.1&

【运维小分享】记个人博客网站受针对xmlrpc.php的暴力破解攻击

起因: 今天忽然打开个人blog,就发现打开很慢,然后出现了下图的反馈:服务器服务不可用!waht?刷新了几次都不行,赶紧登陆服务器后台查看情况. 确认攻击: 登陆后台后通过netstat发现连接数极多,相对于平时来说多了好几倍吧,赶紧通过日志load出疯狂访问的ip # cat 2016-12-16-access_log | awk '{print $1}' | sort | uniq -c | sort -rn | head -n 10   30305 191.96.249.53   290

运维经验分享(七)-- Linux Shell之ChatterServer服务控制脚本第三次优化

运维经验分享作为一个专题,目前共7篇文章 <运维经验分享(一)-- Linux Shell之ChatterServer服务控制脚本> <运维经验分享(二)-- Linux Shell之ChatterServer服务控制脚本二次优化> <运维经验分享(三)-- 解决Ubuntu下crontab不能正确执行Shell脚本的问题(一)> <运维经验分享(四)--关于 java进程管理的服务控制脚本编程思路分析> <运维经验分享(五)-- 改进的java进程管

运维小知识之nginx---nginx配置Jboss集群负载均衡

codyl 2016-01-26 00:53:00 浏览385 评论0 负载均衡 转自 运维小知识之nginx---nginx配置Jboss集群负载均衡-博客-云栖社区-阿里云https://yq.aliyun.com/articles/17925 运维小知识之nginx---nginx配置Jboss集群负载均衡 背景 紧接着上一篇博客<运维小知识---CentOS6.5安装nginx配置nginx sticky>安装完成之后剩下的工作就是配置了,其实如果我们想要去做负载均衡session共享

Open edX 学习、开发、运维相关链接整理

http://edustack.org/manual/edx/ Open edX 学习.开发.运维相关链接整理 http://edustack.org/manual/edx/open-edx-%E5%AD%A6%E4%B9%A0%E3%80%81%E5%BC%80%E5%8F%91%E3%80%81%E8%BF%90%E7%BB%B4%E7%9B%B8%E5%85%B3%E9%93%BE%E6%8E%A5%E6%95%B4%E7%90%86/

运维小屌丝的初程关于RedHat启动流程

2013年,头一次听说除了windows系统居然还有其它系统,上网小小的问了下度娘,发现居然已经有在个人电脑上应用的linux系统了,于是很是兴奋的认为,说不定它可以给更多的电脑用户带来不同的体验,虽不能百家争鸣,但总比得上微软一家独大. 可随着接触,发现越来越不是那么一回事,尽管许多的技术大牛嘲讽windows太低端,可linux无论作为电子商务还是个人电脑都有其不足.更多的是大部分的游戏厂商还是愿意在windows下运行. 我想学学看,至少也能多门技术吧.废话不多写点有用的东西吧. 关于系统

运维百科,分享运维过程中的精华

运维百科 是由多名IDC机房资深运维共同建设的一个基于互联网传播的运维知识分享平台,分享运维过程中的精华,记录运维人点滴生活.   感兴趣的朋友,可以打开www.idcyunwei.org了解! 运维百科,分享运维过程中的精华,布布扣,bubuko.com

运维经验分享(六)-- 深究crontab不能正确执行Shell脚本的问题(二)

运维经验分享作为一个专题,目前共7篇文章 <运维经验分享(一)-- Linux Shell之ChatterServer服务控制脚本> <运维经验分享(二)-- Linux Shell之ChatterServer服务控制脚本二次优化> <运维经验分享(三)-- 解决Ubuntu下crontab不能正确执行Shell脚本的问题(一)> <运维经验分享(四)--关于 java进程管理的服务控制脚本编程思路分析> <运维经验分享(五)-- 改进的java进程管

运维经验分享(四)--关于 java进程管理的服务控制脚本编程思路分析

运维经验分享作为一个专题,目前共7篇文章 <运维经验分享(一)-- Linux Shell之ChatterServer服务控制脚本> <运维经验分享(二)-- Linux Shell之ChatterServer服务控制脚本二次优化> <运维经验分享(三)-- 解决Ubuntu下crontab不能正确执行Shell脚本的问题(一)> <运维经验分享(四)--关于 java进程管理的服务控制脚本编程思路分析> <运维经验分享(五)-- 改进的java进程管