
1.Linux日志管理系统介绍无论管理什么系统对日志文件的监控、调用、管理都是其中重要的一部分。服务器问题的解决都是从查看系统错误日志开始的。系统日志是记录系统硬件状况、内核动作、软件启动、用户动作等各项信息的文件。Linux的系统日志主要保存在/var/log目录中当对一台服务器进行任何操作都会有日志产生如果服务器一年中没有特别重要的情况发生那么这些日志保留下来就会占用服务器的空间所以对系统日志的管理是非常重要的。1.1文件说明rsyslog是Linux默认自带的日志生成分类的服务。它生成的日志都被放在了/var/log中。以下就是rsyslog生成出来日志文件ls /var/log/ -alhsyslog存放着完整的系统日志信息。而不同功能模块【各自】的信息则存放在【各自对应】的分组内方便【针对性】地查看。rsyslog一个服务可被systemctl管理。重启日志服务命令如下sudo systemctl restart rsyslog sudo systemctl restart rsyslog.servicersyslog生成出来的日志只会保存在*.log以及syslog里。而*.1以及那些*.[2~n].gz并不是通过rsyslog生成。而是由logrotate程序生成和管理。1.2logrotatelogrotate(日志轮替)程序是一个Linux自带的默认日志文件管理工具。用于分割日志文件删除旧的日志文件并创建新的日志文件起到“转储”作用注意它仅仅是个程序而不是服务。logrotate管理日志文件的主要手段就是【日志轮替】。意思是每隔一个轮替周期(每小时/天/周/月)就去检查一下日志文件是否该【转存】或者【删除】。下方依旧以syslog来举例除了系统到【设定好的轮替周期】会执行轮替命令外还能通过下方命令【强行】执行轮替操作sudo logrotate -f /etc/logrotate.conf1.3cron由于logrotate只是个程序它不会主动触发只能通过cron被动调用。cron是一个定时服务意思就是cron服务会【按照一定周期】去执行【一些程序】而logrotate就是其中之一。cron有四种周期分别是小时、日、周、月。分别对应的位置在/etc/cron.hourly、/etc/cron.daily、/etc/cron.weekly、/etc/cron.monthly。比如放在/etc/cron.daily/里的脚本就会【每天】被执行一次。ls /etc/cron.*而正好logrotate是被放在daily里面因此【日志轮替每天只会发生一次】。若想把logrotate改成【小时】周期级别则可以把/etc/cron.daily/logrotate放进/etc/cron.hourly里mv /etc/cron.daily/logrotate /etc/cron.hourly重启定时服务sudo systemctl restart cron sudo systemctl restart cron.service2.使用日志轮替(转)工具限制日志大小2.1配置文件说明logrotate程序涉及到的配置有/etc/logrotate.conf、/etc/logrotate.d/rsyslog。通过修改其中的/etc/logrotate.d/rsyslog配置以达到管理日志行为的目的执行以下指令可以看到/etc/logrotate.d/ rsyslog配置文件内容:sudo vim /etc/logrotate.d/rsyslog若想要限制系统日志的大小可以在该文件内增加参数【size 大小】注意1.logrotate是被cron调用才会执行因此即便达到设定sizesyslog也不会马上变成syslog.1。如果想实现达到size后【马上】执行轮替需要在用户的应用里加入对logrotate程序的调用。2.logrotate调用命令sudo logrotate /etc/logrotate.conf3.若还需修改其他参数可参考以下logrotate配置参数说明表。2.2logrotate配置参数说明logrotate配置文件的主要参数如下表所示3.调试手段补充3.1轮替操作记录cat /var/lib/logrotate/status3.2logger通过logger往syslog写入数据#!/bin/sh for i in {1..100000}; do logger TEST LOG MESSAGE $i: ---- done3.3实时查看syslog大小watch -n 1 ls -lh /var/log/syslog