手把手教你,嘴对嘴传达------Apache日志管理日志(rotatelogs分割工具、AWStats日志分析)
时间:2022-07-24
本文章向大家介绍手把手教你,嘴对嘴传达------Apache日志管理日志(rotatelogs分割工具、AWStats日志分析),主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
Apache日志管理
日志文件的产生
服务安装后,不会生成日志文件不会产生 服务启动后,生成日志文件 访问服务后,日志文件会生成内容
一、日志分割
随着网站的访问量增大,默认情况下Apache的单个日志文件也会越来越大 日志文件占用磁盘空间很大 查看相关信息不方便 对日志文件进行分割 Apache自带rotatelogs分割工具实现 第三方工具cronolog分割
二、rotatelogs分割工具
配置网站的日志文件转交给rotatelogs分割处理
配置格式为
ErrorLog "| rotatelogs 命令的绝对路径 -l 日志文件路径/网站名-error_%Y%m%d.log 86400" '//which rotatelogs命令查看绝对路径,%Y%m%d表示年月日,86400表示一天的秒数'
CustomLog "| rotatelogs 命令的绝对路径 -l 日志文件路径/网站名-access_%Y%m%d.log 86400" combined
配置实例如下
[root@promote ~]# vim /etc/httpd/conf/httpd.conf
CustomLog "| /usr/sbin/rotatelogs -l logs/access_%Y%m%d.log 86400" combined
ErrorLog "| /usr/sbin/rotatelogs -l logs/error_%Y%m%d.log 86400"
Listen 192.168.110.133:80
#Listen 80
ServerName www.shang.com:80
[root@promote ~]# setenforce 0
[root@promote ~]# systemctl stop firewalld
[root@promote ~]# systemctl restart httpd
[root@promote httpd]# ls
access_log error_20200805.log error_log
三、cronolog工具(第三方工具,推荐使用)
cronolog作为日志过滤程序,可用来切割linux日志文件,通过对输入的日志按文件名模板和当前日期重新编排,来按格式生成所需日志。cronolog 旨在和一个Web服务器一起使用,如Apache、Nginx
第一步:rpm安装一下cronolog软件(yum也可以安装)
[root@sheng opt]# rpm -ivh cronolog-1.6.2-14.el7.x86_64.rpm
[root@sheng opt]# which cronolog
/usr/sbin/cronolog
第二步:修改httpd主配置文件,按小时分割错误日志
[root@sheng httpd]# vim /etc/httpd/conf/httpd.conf
ErrorLog "| /usr/sbin/cronolog logs/www.yjs.com.error_%Y%m%d%H.log"
第三步:重启服务,验证错误日志已产生
[root@sheng httpd]# systemctl restart httpd
[root@sheng httpd]# ls
access_log error_log www.yjs.com.error_2020080610.log
四、AWStats日志分析
1、 AWStats概述
perl语言(骆驼语言)开发的一款开源日志分析系统 可用来分析Apache,Samba,vsftpd,IIS等服务器的访问日志 信息结合crond等计划任务服务,可对日志内容定期进行分析
2、部署AWStats环境准备
环境部署
VMware软件
一台centos7虚拟机
一台Windows虚拟机
环境准备
WindowsDNS解析地址指向centos7
centos7安装bind和httpd
3、部署AWStats过程
第一步、配置dns服务
[root@promote httpd]# yum -y install bind
[root@promote httpd]# vim /etc/named.conf
options {
listen-on port 53 { any; };
listen-on-v6 port 53 { ::1; };
directory "/var/named";
dump-file "/var/named/data/cache_dump.db";
statistics-file "/var/named/data/named_stats.txt";
memstatistics-file "/var/named/data/named_mem_stats.txt";
recursing-file "/var/named/data/named.recursing";
secroots-file "/var/named/data/named.secroots";
allow-query { any; };
[root@localhost ~]# vim /etc/named.rfc1912.zones
zone "shang.com" IN {
type master; file "shang.com.zone";
allow-update { none; };
};
[root@promote httpd]# cd /var/named/
[root@promote named]# ls
data named.ca named.localhost slaves
dynamic named.empty named.loopback
[root@promote named]# cp -p named.localhost shang.com.zone
[root@promote named]# vim shang.com.zone
$TTL 1D
@ IN SOA @ rname.invalid. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS @
A 127.0.0.1
www IN A 192.168.110.133
~
第二步、配置httpd
[root@localhost named]# vim /etc/httpd/conf/httpd.conf
'//修改此两行内容'
Listen 192.168.110.132:80
#Listen 80
'//修改为指定域名'
ServerName www.shang.com:80
[root@localhost named]# systemctl stop firewalld.service
[root@localhost named]# setenforce 0
[root@localhost named]# systemctl start httpd.service
[root@promote ~]# cd /usr/local/
[root@promote local]# ls
bin games lib libexec share
etc include lib64 sbin src
[root@localhost mnt]# cd /usr/local
[root@promote local]# mkdir awstats
[root@promote awstats]# tar zxvf awstats-7.6.tar.gz
[root@localhost mnt]# cd /usr/local/awstats
第三步、安装AWStats
[root@localhost awstats]# cd tools/
[root@localhost tools]# ls
[root@localhost tools]# ./awstats_configure.pl
> /etc/httpd/conf/httpd.conf '//第一次交互输入此路径'
y '//第二次交互输入y'
www.shang.com '//第三次交互输入指定域名'
'//第四五六次交互直接回车'
[root@localhost tools]# cd /etc/httpd/conf
[root@localhost conf]# vim httpd.conf
'//省略内容,直接到文件末尾修改此配置'
<Directory "/usr/local/awstats/awstats-7.6/wwwroot">
Options None
AllowOverride None
# Order allow,deny
# Allow from all
Require all granted
</Directory>
[root@localhost conf]# cd /etc/awstats/
[root@localhost awstats]# ls
awstats.www.shang.com.conf
[root@localhost awstats]# vim awstats.www.shang.com.conf
...省略内容
'//将下面两行内容修改'
LogFile="/var/log/httpd/access_log"
...省略内容
DirData="/var/lib/awstats"
[root@localhost awstats]# cd /var/lib
[root@localhost lib]# ls
[root@localhost lib]# mkdir awstats
[root@localhost lib]# systemctl restart httpd.service
第四步、测试
A SIMPLE config file has been created: yes/awstats.www.shang.com.conf
You should have a look inside to check and change manually main parameters.
You can then manually update your statistics for 'www.shang.com' with command:
> perl awstats.pl -update -config=www.shang.com
You can also read your statistics for 'www.shang.com' with URL:
> **http://localhost/awstats/awstats.pl?config=www.shang.com**
第五步、更新网页访问数据的统计
[root@localhost lib]# cd /usr/local/awstats/
[root@localhost awstats]# ls
docs README.md tools wwwroot
[root@localhost awstats]# cd tools/
[root@localhost tools]# ls
...省略内容
[root@localhost tools]# ./awstats_updateall.pl now
Jumped lines in file: 0
Parsed lines in file: 35
Found 0 dropped records,
Found 0 comments,
Found 0 blank records,
Found 0 corrupted records,
Found 0 old records,
Found 35 new qualified records.
- 详解OSSIM-OSSEC WIN 4771案例
- JSShell:一个基于python的交互式Shell
- golang中操作excel
- 企业安全漏洞通告引擎
- 通过httprouter和redis框架搭建restful api服务
- .NET Core 实现定时抓取博客园首页文章信息并发送到邮箱
- 基于 R 语言和 SPSS 的决策树算法介绍及应用
- Android 8.0 中的安全增强功能
- python2 群发 html 或文本邮件
- windows 安装 storm 及 eclipse 调试 TopN 实例
- shell 学习笔记(16)
- 根据ip查找ISP运营商和归属地的几种方法
- windows 安装 spark 及 pycharm 调试 TopN 实例
- storm kafka 编程指南
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- s6中class的一些基础知识和es5语法的对比
- 在CentOS 8上使用Elastic Stack: Elasticsearch/Kibana 7.8的部署与认证配置
- 做一个简单的京东购物栏
- 解决Elasticsearch SQL命令行启动报错 ./x-pack-env: No such file or directory
- MySql 入门到精通-sql查询语句的执行过程,你真的知道吗?
- 用 float 存储金额,老板说损失从工资里扣!
- 分布式追踪实战
- python的接班者之coconut
- Docker 垃圾回收机制补充
- 通过docker image 获取到 dockerfile
- Tensorflow2.0实现简单的RNN文本分析
- 利用Tensorflow2.0实现手写数字识别
- PyTorch,TensorFlow和NumPy中Stack Vs Concat | PyTorch系列(二十四)
- 为什么大家都说“SELECT *”效率低?
- 手把手教你如何搭建一套GPS定位系统平台