linux 服务器简单的日志集中存放

思路:通过自带的 logrotate进行日志切割,然后再使用rsync同步,同一个机器或者不同机器也可以同步收集到一块

 

这文章有个小问题,看最后

 

创建配置文件

/etc/logrotate.d/nginx 内容 名字可以自定义,自己知道就好了

/data0/web/logs/nginx/*.log {  #日志存放路径 *是所有.log文件,也可以写一个

        su root root #提升权限

        missingok #如果日志丢失,不报错继续滚动下一个日志

        compress #压缩

        notifempty #如果是空不变

        daily #周期是每日

        dateext #以日期格式为后缀

        rotate 5 #保留几份备份文件

        create 0644 #权限

        postrotate #在logrotate转储之后需要执行的指令

        /usr/local/nginx/sbin/nginx -s reload #执行的指令

        endscript #结束指令

}

linux 服务器简单的日志集中存放_第1张图片

linux 服务器简单的日志集中存放_第2张图片

logrotate -d /etc/logrotate.d/nginx

-d debug看看有没有报错

linux 服务器简单的日志集中存放_第3张图片

执行切割看看

logrotate -f /etc/logrotate.d/nginx

rsync配置了一个log模块

linux 服务器简单的日志集中存放_第4张图片

如果rsync不熟,可以看看这个文章

/usr/bin/rsync -vzrtopg --progress --password-file=/etc/server.pas [email protected]::log/*.gz /logs/1.2/

将1.2机器上rsync配置的log目录下的.gz都给同步到本地的/logs/1.2目录下

然后给rsync和logrotate加定时

几台机器的话,这么做还是挺方便的,机器多了就不清楚了~

 

 

 

 

第二天发现了个问题,日志都是几M,到了3点多就没了,后来找原因发现,logrotate的本身在03:39的时候进行了切割,然后将/etc/logrotate.d/下的都执行了一次,

这个东西的本身的机制,于是乎,第一次执行(我的定时01:01),几个G的日志,切割了之后,生产了a.log-XXXX.gz,a.log从几百K开始计算,

然后到了03:39进行了第二次,a.log-XXXX.gz命名一样被覆盖了,就剩下几十M,压缩剩下几M,2点才进行rsync同步,所以看到的是几M,

给文件放到了其他位置,明天观察看看(应该是OK了)。

总结:

1.如果自己定义时间切割,需要把配置文件放在其他目录,不放在/etc/logrotate.d/下,避免两次执行导致数据丢失

2.如果自己不定义时间切割,那就不用加定时,直接放在/etc/logrotate.d/目录下,等自己执行,然后在进行rsync同步

3.估计好切割时间大概要多久,最好刚切割完几分钟后就进行rsync同步,第一时间拿到.gz文件

 

 

 

 

 

 

 

 

 

 

 

 

 

 

你可能感兴趣的:(rsync,服务器,linux,rsync,运维)