Linux下自动分割Nginx日志文件(二)-----Cronolog

简介:

一,简介:cronolog 是一个简单的过滤程序,读取日志文件条目从标准输入和输出的每个条目并写入指定的日志文件的文件名模板和当前的日期和时间。当扩展文件名的变化,目前的文件是关闭,新开辟的。cronolog 旨在和一个Web服务器一起使用,如Apache,分割访问日志为每天或每月的日志。


二,特点:cronolog主要和Web服务器配置使用,特别是Apache服务器,Apache 默认日志文件是不分割的,一个整文件既不易于管理,也不易于分析统计。安装cronolog后,可以将日志文件按时间分割,易于管理和分析。下面是与Apache配置的一些指令。


三,下载并安装cronolog:

1,下载cronolog程序

[root@localhost ~]#wget http://cronolog.org/download/cronolog-1.6.2.tar.gz 

2,解压tar包

[root@localhost ~]#tar zxvf cronolog-1.6.2.tar.gz

3,进入该目录并安装

[root@localhost ~]#cd cronolog-1.6.2

[root@localhost ~]#./configure --prefix=/usr/local/cronolog-1.6.2/

[root@localhost ~]#make

[root@localhost ~]#make install

[root@localhost ~]#which cronolog

即可安装完成


四,cronolog的简单使用:

[root@localhost ~]# /usr/local/cronolog-1.6.2/sbin/cronolog -V

cronolog version 1.6.2

[root@localhost ~]# /usr/local/cronolog-1.6.2/sbin/cronolog -h

usage: /usr/local/cronolog-1.6.2/sbin/cronolog [OPTIONS] logfile-spec


   -H NAME,   --hardlink=NAME maintain a hard link from NAME to current log

   -S NAME,   --symlink=NAME  maintain a symbolic link from NAME to current log

   -P NAME,   --prev-symlink=NAME  maintain a symbolic link from NAME to previous log

   -l NAME,   --link=NAME     same as -S/--symlink

   -h,        --help          print this help, then exit

   -p PERIOD, --period=PERIOD set the rotation period explicitly

   -d DELAY,  --delay=DELAY   set the rotation period delay

   -o,        --once-only     create single output log from template (not rotated)

   -x FILE,   --debug=FILE    write debug messages to FILE

                              ( or to standard error if FILE is "-")

   -a,        --american         American date formats

   -e,        --european         European date formats (default)

   -s,    --start-time=TIME   starting time

   -z TZ, --time-zone=TZ      use TZ for timezone

   -V,      --version         print version number, then exit

[root@localhost ~]# loggenerator | cronolog log_file_pattern

其中,loggenerator为产生log的程序,而log_file_pattern是日志文件的路径,可以在其中加入cronolog所支持的时间相关的pattern字符,如/www/log/%y/%m/%d/access.log。其pattern为%字符后跟一特殊字符,简述如下:
 


五,cronolog实战(一)----分割nginx日志

1,安装cronolog程序,前边有,省略。

2,创建一个命名管道

[root@localhost ~]#mkfifo  /usr/local/nginx/logs/access_log_pipe

3.配置nginx.conf文件

[root@localhost ~]# vim /usr/local/nginx/conf/nginx.conf

http { 

    include       mime.types;  

    default_type  application/octet-stream;

    

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '

                      '$status $body_bytes_sent "$http_referer" '

                      '"$http_user_agent" "$http_x_forwarded_for"';

                       access_log  /usr/local/nginx/logs/access_log_pipe;#(生产的日志写到管道文件里)

 4,测试写看是否有报错,无报错继续下一步。

[root@localhost ~]/usr/local/nginx/sbin/nginx -t 

5,输入一下命令在nginx重启前,

[root@localhost logs]#  nohup cat /usr/local/nginx/logs/access_log_pipe | nohup /usr/local/cronolog-1.6.2/sbin/cronolog /usr/local/nginx/logs/%Y%m%d/access_%Y%m%d%H.log &

[1] 15718

[root@localhost logs]# nohup: ignoring input and redirecting stderr to stdout

nohup: appending output to `nohup.out'


解析: /usr/local/nginx/logs/access_log_pipe(生产的日志文件写到管道里) | nohup /usr/local/cronolog-1.6.2/sbin/cronolog (cronolog程序的绝对路径) /usr/local/nginx/logs/%Y%m%d/access_%Y%m%d%H.log & (存放分割文件的路径以当时的时间点为文件夹)

6,查看是否有生产的其日志文件。

[root@localhost logs]# ll

total 38992

drwxr-xr-x. 2 root  root      4096 Nov 19 16:19 20151119



六,cronolog实战(二)----分割Apache日志

1,安装省略

2,修改apache配置文件

CustomLog "|/usr/local/sbin/cronolog /usr/local/apache2/logs/access_log.%Y%m%d" combined

需要特别注意的是,这里的日志必须使用绝对路径,否则不会生成日志文件

3,将上面的 /usr/local/ /usr/local/apache2/logs/%m/access_log.%Y%m%d改为按月保存

 /usr/local/apache2/logs/%m/access_log.%Y%m%d

4,重启下Apache,即可看见生成的日志。


七,cronolog实战(三)----分割tomcat的catalina.out日志

1,下载cronolog程序

[root@localhost ~]#wget http://cronolog.org/download/cronolog-1.6.2.tar.gz 

2,解压tar包

[root@localhost ~]#tar zxvf cronolog-1.6.2.tar.gz

3,进入该目录并安装

[root@localhost ~]#cd cronolog-1.6.2

[root@localhost ~]#./configure --prefix=/usr/local/cronolog-1.6.2/

[root@localhost ~]#make

[root@localhost ~]#make install

[root@localhost ~]#which cronolog

/usr/local/sbin/cronolog


4,cronolog的简单使用:

[root@localhost ~]# /usr/local/cronolog-1.6.2/sbin/cronolog -V

cronolog version 1.6.2

[root@localhost ~]# /usr/local/cronolog-1.6.2/sbin/cronolog -h

usage: /usr/local/cronolog-1.6.2/sbin/cronolog [OPTIONS] logfile-spec


   -H NAME,   --hardlink=NAME maintain a hard link from NAME to current log

   -S NAME,   --symlink=NAME  maintain a symbolic link from NAME to current log

   -P NAME,   --prev-symlink=NAME  maintain a symbolic link from NAME to previous log

   -l NAME,   --link=NAME     same as -S/--symlink

   -h,        --help          print this help, then exit

   -p PERIOD, --period=PERIOD set the rotation period explicitly

   -d DELAY,  --delay=DELAY   set the rotation period delay

   -o,        --once-only     create single output log from template (not rotated)

   -x FILE,   --debug=FILE    write debug messages to FILE

                              ( or to standard error if FILE is "-")

   -a,        --american         American date formats

   -e,        --european         European date formats (default)

   -s,    --start-time=TIME   starting time

   -z TZ, --time-zone=TZ      use TZ for timezone

   -V,      --version         print version number, then exit

5,修改tomcat bin目录下的catalina.sh文件中的

  1. org.apache.catalina.startup.Bootstrap “$@” start  \  

  2. >> “$CATALINA_BASE”/logs/catalina.out 2>&1 & 

为:

  1. org.apache.catalina.startup.Bootstrap "$@" start  2>&1 \  

  2.     | /usr/local/sbin/cronolog "$CATALINA_BASE"/logs/catalina.%Y-%m-%d.out >> /dev/null &  


touch “$CATALINA_BASE”/logs/catalina.out

这一行也可以注释掉

  shift

  touch "$CATALINA_OUT"


本文转自 lqbyz 51CTO博客,原文链接:http://blog.51cto.com/liqingbiao/1714777

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
18天前
|
Linux Shell
Linux手动清理Linux脚本日志定时清理日志和log文件执行表达式
Linux手动清理Linux脚本日志定时清理日志和log文件执行表达式
72 1
|
28天前
|
监控 Shell Linux
【Shell 命令集合 系统管理 】Linux 自动轮转(log rotation)日志文件 logrotate命令 使用指南
【Shell 命令集合 系统管理 】Linux 自动轮转(log rotation)日志文件 logrotate命令 使用指南
48 0
|
11天前
|
存储 监控 安全
Linux系统日志
【4月更文挑战第6天】Linux系统日志,关键用于记录系统状态和事件,包括内核、系统、安全和应用日志,助力管理员诊断问题、确保系统正常运行。日志管理涉及收集、分析、备份等,常用工具如rsyslog、systemd-journal和logrotate(用于日志轮转)。重视日志文件的存储管理,防止空间占用过多。
16 1
Linux系统日志
|
4天前
|
SQL 监控 安全
Linux&Windows 日志分析 陇剑杯 CTF
Linux&Windows 日志分析 陇剑杯 CTF
29 0
|
11天前
|
运维 监控 应用服务中间件
LNMP详解(十四)——Nginx日志详解
LNMP详解(十四)——Nginx日志详解
16 2
|
18天前
|
运维 监控 安全
linux日志分析与追踪
在Linux中,日志分析涉及检查 `/var/log` 下的不同文件,如`messages`、`auth.log`、`kern.log`等,以及Web服务器和数据库日志。使用`tail`、`grep`、`awk`等工具实时查看和搜索日志,`logrotate`管理日志大小,`journalctl`处理Systemd日志,而`Splunk`等工具则用于集中式分析。分析技巧包括异常检测、时间关联和阈值监控。安全事件追踪结合登录失败日志、网络嗅探和IDS/IPS。日志链路追踪在分布式系统中尤为重要,帮助定位服务调用问题。有效的日志管理和分析能增强系统安全和故障排除能力。
20 7
|
28天前
|
监控 Shell Linux
【Shell 命令集合 系统管理 】Linux 实时监控日志文件 swatch命令 使用指南
【Shell 命令集合 系统管理 】Linux 实时监控日志文件 swatch命令 使用指南
33 1
|
存储 监控 网络协议
Linux日志分析工具之AWStats
AWStats是一款功能强大且功能强大的免费工具,可以图形方式生成高级Web,流媒体,ftp或邮件服务器统计信息。此日志分析器用作CGI或命令行, 并在几个图形网页中显示您的日志包含的所有可能信息。
Linux日志分析工具之AWStats
|
监控 Linux
15.8 Linux日志分析工具
日志是非常重要的系统文件,管理员每天的重要工作就是分析和查看服务器的日志,判断服务器的健康状态。但是日志管理又是一项非常枯燥的工作,如果需要管理员手工查看服务器上所有的日志,那实在是一项非常痛苦的工作。有些管理员就会偷懒,省略日志的检测工作,但是这样做非常容易导致服务器出现问题。
276 0
15.8 Linux日志分析工具