设为首页 收藏本站
查看: 934|回复: 0

[经验分享] apache日志切割工具

[复制链接]

尚未签到

发表于 2018-11-25 14:47:15 | 显示全部楼层 |阅读模式
  用rotatelogs实现日志轮循
  Apache 提供了不把日志直接写入文件,而是通过管道发送给另外一个程序的能力。
  这样就大大加强了对日志进行处理的能力。这个通过管道得到的程序可以是任何程序,如日志分析、压缩日志等。
  要实现将日志写到管道的操作,只需要将配置中日志文件部分的内容替换为“|程序名”即可,例如:
  # compressed logs
  $ CustomLog "|/usr/bin/gzip -c >> /var/log/access_log.gz" common
  这样就可以使用Apache自带的轮循工具rotatelogs来对日志文件进行轮循。rotatelogs基本是按时间或大小来控制日志的。
  $ CustomLog "|/www/bin/rotatelogs /www/logs/secfocus/access_log 86400" common
  上面的示例中,Apache访问日志被发送给程序rotatelogs;rotatelogs将日志写入 /www/logs/secfocus/access_log,
  并每隔86400秒(1天)对日志进行一次轮循。轮循以后的文件名为 /www/logs/secfocus/access_log.nnn,
  这里nnn是开始记录日志的时间。因此,为了将日志按天对齐需要在凌晨00:00 启动服务,
  使得每天轮循得到的日志刚好是完整一天的日志,以提供给访问统计分析程序进行处理。
  如果是00:00开始生成新的日志,那么轮循得到的日志就是 access_log.0000。
  用cronolog实现日志轮循
  www.cronolog.org
  Cronolog是一个小巧高效的日志文件处理工具,可以实现自动的按规则生成周期性的日志文件
  首先需要下载和安装cronolog,可以到http://www.cronolog.org下载最新版本的cronolog。
  下载完毕以后,解压安装即可。方法如下所示:
  tar xvfz cronolog-1.6.2.tar.gz
  cd cronolog-1.6.2
  ./configure
  make
  make check
  make install
  这样就完成了cronolog的配置和安装,默认情况下cronolog是安装在/usr/local/sbin下。
  修改Apache日志配置命令如下所示:
  $ CustomLog "|/usr/local/sbin/cronolog /www/logs/secfocus/%w/access_log" combined
  这里%w表示按照日期在不同的目录下保存日志,这种方式会保存一周的日志。
  为了进行日志分析,需要每天将该日志文件拷贝(或移动,如果不希望保存一周的日志)到一个固定的位置,
  以方便日志分析统计文件进行处理(使用crontab -e)。添加定时任务如下:
  $ 5 0 * * * /bin/mv /www/logs/secfocus/`date -v-1d +\%w`/access_log /www/logs/secfocus/access_log_yesterday
  再使用日志统计分析程序,对文件access_log_yesterday进行处理。
  对于使用负载均衡技术的大型站点,就存在多个服务器的访问日志的合并处理问题。对于这种情况,
  各个服务器定义或移动日志文件时就不能使用 access_log_yesterday了,
  而应该带上服务器编号(例如服务器IP地址等信息)加以区分。然后在各个服务器上运行网站镜像和备份服务 rsyncd,
  再将每个服务器每天的安装配置文件通过rsync下载到专门进行访问统计分析的服务器上进行合并。
  合并多个服务器的日志文件(如log1、log2、log3),并输出到log_all中的方法是:
  $ sort -m -t " " -k 4 -o log_all log1 log2 log3
  -m表示使用merge优化算法;-k 4表示根据时间进行排序;-o表示将排序结果存放到指定的文件中
  %    %字符
  n    换行
  t    水平制表符
  时间域:
  H    小时(00..23)
  I    小时(01..12)
  p    该locale下的AM或PM标识
  M    分钟(00..59)
  S    秒 (00..61, which allows for leap seconds)
  X    该locale下时间表示符(e.g.: "15:12:47")
  Z    时区。若时区不能确定,则无意义
  日期域:
  a    该locale下的工作日简名(e.g.: Sun..Sat)
  A    该locale下的工作日全名(e.g.: Sunday .. Satur-ay)
  b    该locale下的月份简称(e.g.: Jan .. Dec)
  B    该locale下的月份全称(e.g.: January .. December)
  c    该locale下的日期和时间(e.g.: "Sun Dec 15 14:12:47 GMT 1996")
  d    当月中的天数 (01 .. 31)
  j    当年中的天数 (001 .. 366)
  m    月数 (01 .. 12)
  U    当年中的星期数,以周日作为一周开始,其中第一周为首个含星期天的星期(00..53)
  W    当年中的星期数,以星期一作为一周的开始,其中第一周为首个含星期天的星期(00..53)
  w    工作日数(0 .. 6, 0表示星期天)
  x    该locale下的日期表示(e.g. "13/04/97")
  y    两位数的年份(00 .. 99)
  Y    四位数的年份(1970 .. 2038)
  webalizer
  webalizer是一个高效、免费的Web服务器日志分析程序。其分析结果是HTML文件格式的,
  从而可以很方便地通过Web服务器进行浏览。Internet上的很多站点都使用webalizer进行Web服务器日志分析。
  Webalizer具有以下一些特性。
  ◆ 它是用C语言写的程序,具有很高的运行效率。在CPU主频为200MHz的机器上,webalizer每秒钟可以分析1万条记录,
  所以分析一个40MB大小的日志文件只需要15秒。
  ◆ webalizer支持标准的一般日志文件格式(Common Logfile Format)。除此之外,也支持几种组合日志格式的变种,
  从而可以统计客户情况及客户操作系统类型。现在webalizer已经可以支持wu-ftpd xferlog日志格式及squid日志文件格式。
  ◆ 支持命令行配置及配置文件。
  ◆ 可以支持多种语言,也可以自己进行本地化工作。
  ◆ 支持多种平台,比如Unix、Linux、NT、OS/2和MacOS等。
  1.安装
  在安装以前,首先需要确保系统已经安装有gd库,可以使用下段代码:
  # rpm -qa|grep gd
  # gd-devel-1.8.4-4
  # gdbm-devel-1.8.0-14
  # gdbm-1.8.0-14
  # sysklogd-1.4.1-8
  # gd-1.8.4-4
  用来确认系统已经安装有gd-deve和gd两个RPM包。
  安装webalizer有两种方式:一种是下载源代码来安装;一种是直接使用RPM包来安装。
  使用RPM包方式安装非常简单,从rpmfind.net找到webalizer包,下载以后运行以下代码,即可实现安装:
  $ rpm -ivh webalizer-2.01_10-1.i386.rpm
  对于源代码方式需要从http://www.mrunix.net/webalizer/下载,然后安装。首先解开源代码包:
  $ tar xvzf webalizer-2.01-10-src.tgz
  在生成的目录中有个lang目录。该目录中保存了各种语言文件,但是只有繁体中文版本,
  可以自己转换成简体,或者重新翻译一下,然后进入生成的目录:
  $ cd webalizer-2.01-10 $ ./configure $ make --with-language=Chinese $ make install
  编译成功后,会在/usr/local/bin/目录下安装一个webalizer可执行文件
  2.配置和运行
  对webalizer运行的控制可以通过配置文件或在命令行指定参数的两种方式进行。
  使用配置文件方式比较简单和灵活,适用于自动Web服务器日志统计分析的应用环境。
  webalizer 的默认配置文件为/etc/webalizer.conf,当启动webalizer时没有使用“-f“选项时,
  webalizer就会寻找文件 /etc/webalizer.conf,也可以使用“-f”来指定配置文件(当服务器有虚拟主机时,
  需要配置多份不同的webalizer配置文件。不同的虚拟主机的webalizer使用不同的配置文件。
  webalizer.conf配置文件中需要修改的配置选项如下:
  LogFile /www/logs/secfocus/access_log
  用来指示配置文件的路径信息,webalizer会将该日志文件作为输入进行统计分析:
  OutputDir /www/htdocs/secfocus/usage
  用来指示生成的统计报表的保存目录,在前面使用alias,使用户可以使用http://www.secfocus.com/usage/来访问统计报表。
  HostName www.secfocus.com
  上述代码用来指示主机名,统计报表中会引用该主机名。
  其它选项无需修改。配置文件修改完毕以后,需要定时webalizer,每天生成当日的统计分析。
  以root身份运行crontab -e进入定时运行任务编辑状态,加入如下任务:
  $ 5 0 * * * /usr/local/bin/webalizer -f /etc/secfocus.webalizer.conf
  $ 15 0 * * * /usr/local/bin/webalizer -f /etc/tomorrowtel.webalizer.conf
  这里假设系统运行有两个虚拟主机,并分别定义了日志分析配置文件secfocus.webalizer.conf和 tomorrowtel.webalizer.conf。
  这样定义在凌晨00:05对secfocus的日志进行统计分析;在凌晨00:15对 tomorrowtel的日志进行统计分析。
  第二天分别使用http://www.secfocus.com/usage和http://www.tomorrowtel.com/usage来查看各自的日志分析报表。
  保护日志统计分析报告不被未授权用户访问
  我们都不希望自己网站访问统计信息随意被别人浏览,因此需要将usage目录保护起来,只允许合法的用户访问。
  这里可以采用Apache自带的基本认证机制。
  1.条件
  在配置文件中对目录“/”应该设置为:
  DocumentRoot /www/htdocs/secfocus/
  AccessFileName .htaccess
  AllowOverride All
  2.需求
  需求是限制对http://www.secfocus.com/usage/的访问,要求用户认证才能访问。这里设置用户为“admin”,口令为“12345678”。
  使用htpasswd建立用户文件:
  $ htpasswd -c /www/.htpasswd admin
  此程序会询问用户“admin”的口令,输入“12345678”两次生效。
  3.建立.htaccess文件
  用vi在/www/logs/secfocus/usage/目录下建立一个文件.htaccess,写入以下几行代码:
  AuthName admin-only
  AuthType Basic
  AuthUserFile /www/.htpasswd
  require user admin
  测试
  通过浏览器访问http://www.secfocus.com/usage,就会弹出框请求输入用户名和口令,
  输入“admin”、“12345678”就可以访问访问日志统计分析报表


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-639494-1-1.html 上篇帖子: Webbech比Apache自带的ab压力测试工具好 下篇帖子: nagios在apache上安装配置
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表