Linux:apache优化(7)—— 日志分割|日志合并

**作用:**随着网站访问量的增加,访问日志中的信息会越来越多, Apache 默认访问日志access_log单个文件会越来越大,日志文件体积越大,信息都在一个文件中,查看及分析信息会及不方便。


分割

实现方式:

1.利用 apache 自带的日志轮循程序 rotatelogs

复制代码
ErrorLog "|rotatelogs 命令的绝对路径 -l logs/error_%Y%m%d_%H%M%S.log 秒数"

CustomLog "| rotatelogs 命令的绝对路径-l logs/access_%Y%m%d_%H%M%S.log 秒数"

Combined

2.利用一个发展已经比较成熟的日志轮循工具 cronolog

复制代码
ErrorLog "|cronolog 绝对路径 -l /usr/local/httpd/logs/error_%Y%m%d%H%M%S.log "

CustomLog "|cronnolog绝对路径 -l /usr/local/httpd/logs/access_%Y%m%d%H%M%S.log" combined

3.利用定时任务和 shell 脚本做日志切割

方式一: 利用 apache 自带的日志轮循程序 rotatelogs日志分割:

root@linuxa \~\]# vi /usr/local/httpd/conf/httpd.conf ##10秒切割一次日志文件(切割日志时间频率可以自行改变,根据PV来决定,),-l选项是小写的L表示local time(本地时间) 215行插入 CustomLog "|/usr/local/httpd/bin/rotatelogs -l /usr/local/httpd/logs/access_%Y%m%d%H%M%S.log 10" combined :wq *** ** * ** *** **方式二:**利用一个发展已经比较成熟的日志轮循工具 cronolog \[root@linuxa \~\]# tar xf cronolog-1.6.2.tar.gz -C /usr/src/ \[root@linuxa \~\]# cd /usr/src/cronolog-1.6.2/ \[root@linuxa cronolog-1.6.2\]# ./configure \&\& make \&\& make install \[root@linuxa cronolog-1.6.2\]# cd \[root@linuxa \~\]# which cronolog /usr/local/sbin/cronolog \[root@linuxa \~\]# vi /usr/local/httpd/conf/httpd.conf ##可以跟据文件名中的变量来设置分割的频率,Y表示四位年份、m表示月份、d表示月份中的天数 213行 CustomLog "|usr/local/sbin/cronolog /usr/local/httpd/logs/access_%Y%m%d.log" combined :wq \[root@linuxa \~\]# /usr/local/httpd/bin/apachectl restart \[root@linuxa \~\]# ls /usr/local/httpd/logs/ access_20171206.log access_log error_log httpd.pid *** ** * ** *** **方式三:**脚本完成(定期移动httpd日志文件,并且保存期限为30天): \[root@linuxa \~\]# vi /opt/cut_httpd_log.sh #!/bin/bash logpath="/usr/local/httpd/logs" datetime=$(date -d "-1 day" "+%Y%m%d") \[ -d $logpath/backup \] \|\| mkdir $logpath/backup mv $logpath/access_log $logpath/backup/access_log-$datetime /usr/local/httpd/bin/apachectl graceful ##重新加载apache的配置,不会中断请求 find $logpath/backup/ -mtime +30 \| xargs rm --f find /usr/local/httpd/logs/backup/ -type f -mtime +30 -exec rm -rf {} \\; \[root@linuxa \~\]# chmod +x /opt/cut_httpd_log.sh \[root@linuxa \~\]# echo "00 00 \* \* \* /bin/bash /opt/cut_httpd_log.sh \&\> /dev/null" \>\>/var/spool/cron/root \[root@linuxa \~\]# service crond restart

当成功分割之后如果要进行合并


合并

可以将每个服务器每天的日志文件通过 rsync 下载到专门进行访问统计分析的服务器上进行合并。合并多个服务器的日志文件,例如: log1 log2 log3 并输出到 log_all 中的方法是:

复制代码
sort  -k 4 -o log_all access_log1 access_log2 access_log3

-m 使用 merge 优化算法

-t 指定排序的分割符

-k 4 指定排序时行中多列时,排序的依据列为哪列,表示根据时间进行排序

-o 表示将排序结果存放到指定的文件中

所以这里使用

复制代码
sort -k 4 -o accessall access_20240102051040.log  access_20240102051050.log  
相关推荐
是小胡嘛2 小时前
C++之Any类的模拟实现
linux·开发语言·c++
口袋物联2 小时前
设计模式之工厂模式在 C 语言中的应用(含 Linux 内核实例)
linux·c语言·设计模式·简单工厂模式
qq_479875433 小时前
X-Macros(1)
linux·服务器·windows
笨笨聊运维4 小时前
CentOS官方不维护版本,配置python升级方法,无损版
linux·python·centos
ζั͡山 ั͡有扶苏 ั͡✾4 小时前
EFK 日志系统搭建完整教程
运维·jenkins·kibana·es·filebeat
jun_bai5 小时前
python写的文件备份网盘程序
运维·服务器·网络
HIT_Weston5 小时前
39、【Ubuntu】【远程开发】拉出内网 Web 服务:构建静态网页(二)
linux·前端·ubuntu
欢喜躲在眉梢里5 小时前
CANN 异构计算架构实操指南:从环境部署到 AI 任务加速全流程
运维·服务器·人工智能·ai·架构·计算
weixin_537765806 小时前
【容器技术】虚拟化原理与Docker详解
运维·docker·容器
胡斌附体6 小时前
docker健康检查使用
运维·docker·依赖·健康检查