随着网站的访问量越来越大,默认情况下 Apache 服务器产生的单个日志文件也会越来越大,所以需要对日志进行分割。通过apache自带的rotatelogs和第三方的cronolog工具,,以及部署awstats系统都能很好的对网站日志进行分割和管理工具。
前言
随着网站的访问量越来越大,默认情况下 Apache 服务器产生的单个日志文件也会越来越大,如果不对日志进行分割,那么如果日志文件占用磁盘空间很大的话势必会将整个日志文件删除,这样也丢失了很多对网站比较宝贵的信息,而这些日志可以用来进行访问分析、网络安全监察、网络运行状况监控等。
另外,如果服务器遇到故障时,运维人员要打开日志文件进行分析,打开的过程会消耗很长时间,也势必会增加处理故障的时间。因此管理好这些海量的日志对网站的意义很大,我们会将 Apache 的日志进行按每天的日期自动分割。下面介绍两种方法均可实现。
一:Apache日志分隔
日志分割对于网站的意义重大,以下两种工具将apache的日志按每天的日期进行自动分割:Apache自带的rotatelogs分割工具与第三方工具cronolog分割日志
1.1:对日志文件进行分割的两种工具
- Apache自带rotatelogs分割工具实现
- 第三方工具cronolog分割
二:rotatelogs分割工具
ErrorLog "|/usr/local/bin/rotatelogs -l /var/log/httpd/error_%Y%m%d.log 86400"
CustomLog "|/usr/local/bin/rotatelogs -l /var/log/httpd/access_%Y%m%d.log 86400" common
在实际生产环境中,一个服务器绝大多数对应N个子域名站点,为了方便同意管理,可以用虚拟主机的方式进行配置,并用网站名标识日志文件
例如:ErrorLog “| rotatelogs(命令的绝对路径) -l 日志文件路径/网站名-error_%Y%m%d.log
86400”
ErrorLog 表示错误日志名;Customlog访问日志;/user/sbin/rotalogs 表示命令的绝对路径;-l 指定日志文件的路径 ;%Y%m%d.log 86400 表示按天的分割,一天时间为86400秒
2.1:rotatelogs分隔日志实操
- 安装服务
[root@server3 ~]# yum -y install httpd #安装apache
[root@server3 ~]# which rotatelogs #寻找路径
/usr/sbin/rotatelogs
[root@www ~]# mkdir /var/log/httpd/
- 编辑httpd配置文件
[root@www ~]# vim /usr/local/httpd/conf/httpd.conf
Listen 192.168.158.30:80 #开启ipv4监听本地
#Listen 80 #注释ipv6
ServerName www.tom.com:80
- 重启服务查看端口
[root@server3 ~]# netstat -anpt | grep 80
tcp 0 0 192.168.158.30:80 0.0.0.0:* LISTEN 5258/httpd
- 查看日志文件
[root@server3 ~]# ls /var/log/httpd/
access_log error_log #错误日志跟登录日志 不启动服务是没有日志文件的这里要注意下
- 使用第三方工具 cronolog 分割
2.2、编译安装cronolog工具
[root@server3 ~]# tar xf cronolog-1.6.2.tar.gz
[root@server3 ~]# cd cronolog-1.6.2/
[root@server3 cronolog-1.6.2]# ./configure
[root@server3 cronolog-1.6.2]# make && make install
2.3、设置 cronolog 工具工具分割 apache 日志
ErrorLog "|/usr/local/bin/rotatelogs -l /var/log/httpd/tom-error_%Y%m%d.log 86400"
CustomLog "|/usr/local/bin/rotatelogs -l /var/log/httpd/tom-access_%Y%m%d.log 86400" common
2.4客户机测试
[root@server3 ~]# cd /var/log/httpd/
[root@server3 httpd]# ll
总用量 0
[root@server3 httpd]# systemctl stop firewalld.service
[root@server3 httpd]# setenforce 0
[root@server3 httpd]# systemctl restart httpd
[root@server3 httpd]# ll
总用量 4
-rw-r--r--. 1 root root 288 10月 12 02:44 tom-error_20201012.log
[root@server3 httpd]# ll
总用量 8
-rw-r--r--. 1 root root 154 10月 12 02:45 tom-access_20201012.log
-rw-r--r--. 1 root root 288 10月 12 02:44 tom-error_20201012.log
[root@server3 httpd]# cat tom-access_20201012.log
192.168.158.1 - - [12/Oct/2020:02:45:01 +0800] "GET / HTTP/1.1" 200 45
192.168.158.1 - - [12/Oct/2020:02:45:01 +0800] "GET /favicon.ico HTTP/1.1" 404 209
192.168.158.1 - - [12/Oct/2020:02:45:49 +0800] "-" 408 -
三:cronolog 分割
- 源码编译安装cronolog工具
- 配置网站日志文件转交给cronolog分割处理
- 配置格式
ErrorLog "I cronolog命令的绝对路径 日志文件路径/网站名-error_ %Y%m%d.log"
CustomLog "I cronolog命令的绝对路径 日志文件路径/网站名_%Y %m%d.log" combined
3.1: 编译安装cronolog工具
[root@server3 ~]# tar xf cronolog-1.6.2.tar.gz
[root@server3 ~]# cd cronolog-1.6.2/
[root@server3 cronolog-1.6.2]# ./configure
[root@server3 cronolog-1.6.2]# make && make install
3.2: 设置 cronolog 工具工具分割 apache 日志
[root@server3 httpd]# vi /etc/httpd/conf/httpd.conf
Errorlog "| /usr/local/sbin/cronolog logs/error_%Y%m%d.log"
Customlog "| /usr/local/sbin/cronolog logs/access_%Y%m%d.log" combined
#/usr/local/sbin/cronolog为cronolog的路径,用which cronolog可以查看,error_%Y%m%d.log这部分为日志文件名。
3.4:去宿主机点击刷新一下
2.5:再次查看已经生成新的日志文件了
[root@server3 httpd]# ll
总用量 8
-rw-r--r--. 1 root root 451 10月 25 13:03 access_20201025.log
-rw-r--r--. 1 root root 1617 10月 25 13:03 error_20201025.log
四:Awstats分析系统
概述
在 httpd 服务器的访问日志文件 access_log 中,记录了大量的客户机访问信息,通过 分析这些信息,可以及时了解 Web 站点的访问情况,如每天或特定时间段的访问 IP 数量, 点击量最大的页面等。
AWStats是使用Perl语言开发的一款开源日志分析系统,它不仅可用来分析Apache 网 站服务器的访问日志,也可以用来分析 Samba、Vsftpd、IIS 等服务的日志信息。结合 crond 等计划任务服务,可以对不断增长的日志内容定期进行分析。
4.1.安装 AWStats 软件包
[root@server3 ~]# mkdir /usr/local/awstats
[root@server3 ~]# tar xf awstats-7.7.tar.gz -C /usr/local/awstats
[root@server3 ~]# cd /usr/local/awstats
[root@server3 awstats-7.7]# ls
docs README.md tools wwwroot
[root@server3 awstats-7.7]# cd tools/
4.2.为要统计的站点建立配置文件
[root@server3 tools]# ./awstats_configure.pl
Config file path ('none' to skip web server setup):
> /etc/httpd/conf/httpd.conf //输入配置文件
Your web site, virtual server or profile name:
> www.tom.com //输入域名
其他全部是y 或者 回车
4.3.修改httpd的配置文件
[root@server3 tools]# vi /usr/local/httpd/conf/httpd.conf
Listen 192.168.158.30:80
#Listen 80
<IfModule !mpm_prefork_module>
LoadModule cgid_module modules/mod_cgid.so //去掉前面的”#”号
</IfModule>
<IfModule mpm_prefork_module>
LoadModule cgi_module modules/mod_cgi.so //去掉前面的”#”号
……省略部分
<Directory "/usr/local/awstats/wwwroot"> //主配置文件中自动生成了awstats模块
Options None
AllowOverride None
# Order allow,deny //注释掉
# Allow from all //注释掉
Require all granted //新增这条,允许所有访问
</Directory>
4.4.修改站点统计配置文件
[root@server3 tools]# systemctl restart httpd
[root@server3 tools]# vi /etc/awstats/awstats.www.tom.com.conf
……省略部分
LogFile="/usr/local/httpd/logs/access_log" //指定访问日志文件路径
……省略部分
DirData="/var/lib/awstats" //设置awstats数据文件目录,默认为/var/lib/awstats
[root@server3 tools]# mkdir /var/lib/awstats //创建awstats分析系统的数据文件目录
[root@server3 tools]# chmod +x awstats_updateall.pl
[root@server3 tools]# ./awstats_updateall.pl //启动更新
----- awstats_updateall 1.0 (build 20140126) (c) Laurent Destailleur -----
awstats_updateall launches update process for all AWStats config files (except
awstats.model.conf) found in a particular directory, so you can easily setup a
cron/scheduler job. The scanned directory is by default /etc/awstats.
Usage: awstats_updateall.pl now [options]
Where options are:
-awstatsprog=pathtoawstatspl
-configdir=directorytoscan
-excludeconf=conftoexclude[,conftoexclude2,...] (Note: awstats.model.conf is always excluded)
#上面若不行,也可用这条/usr/local/awstats/wwwroot/cgi-bin/awstats.pl -update -config=www.51xit.top
4.5:在 /usr/local/awstats/tools 目录下 更新数据
[root@server3 tools]# ./awstats_updateall.pl now
Running '"/usr/local/awstats/wwwroot/cgi-bin/awstats.pl" -update -config=www.tom.com -configdir="/etc/awstats"' to update config www.tom.com
Create/Update database for config "/etc/awstats/awstats.www.tom.com.conf" by AWStats version 7.7 (build 20180105)
From data in log file "/usr/local/httpd/logs/access_log"...
Phase 1 : First bypass old records, searching new record...
Direct access after last parsed record (after line 154)
Jumped lines in file: 154
Found 154 already parsed records.
Parsed lines in file: 0
Found 0 dropped records,
Found 0 comments,
Found 0 blank records,
Found 0 corrupted records,
Found 0 old records,
Found 0 new qualified records.
4.6:数据更新
数据更新必须在 /usr/local/awstats/tools 目录下输入命令:./awstats_updateall.pl now 才行,更新有些繁琐,可以通过crontab来设置周期性任务。
[root@server3 tools]# crontab -e
*/1 * * * * /usr/local/awstats/tools/awstats_updateall.pl now
#每间隔1分钟更新一次日志
4.7:访问测试
设定
浏览器访问 http://192.168.158.30/awstats/awstats.pl?config=www.tom.com
如果对您有用的话,给博主点个赞吧!!!