关于Auditsys服务端日志与日志切割logrotate
当前4.9环境服务产生的日志文件:
| 服务名称 | 应用服务器 | 控制台Center | ES服务器 |
| 日志路径 | /var/log/auditsys/ | /var/log/auditsys/ | /app/es/logs(以实际情况为准) |
| 日志文件名 | auditsys.log-* | auditsys_center.log-* auditsys_manage.log-* |
cluster-202*.log.gz cluster-202*.json.gz |
| 字符编码 | utf-8 | utf-8 | utf-8 |
| 日志切割方式 (周/天/小时/大小) |
每周切割或文件大于200M切割 | 每天切割或文件大于1000M切割 | 每天切割并压缩 |
| 当前系统日志清理机制 | 保留最近4份日志 | 保留最近4份日志 | 通过脚本定时任务清理 |
| 备注 | 切割方式与清理机制可以调整 | 切割方式与清理机制可以调整 | 清理机制可以通过脚本调整 |
当前我们系统center和server产生的日志会通过linux中的logrotate做切割清理。es服务产生的log文件,又es服务本身管理,可以通过log4j控制日志清理,也可以用脚本定期清理。
1、为什么日志默认只保留4份
center和server的日志在服务器通过logrotate默认是保留4个日志文件,这个文件清理不会影响控制台查看管理员日志与系统日志。
因为这些日志文件会通过rsyslog传给es保存,从控制台查看的都是es索引中的数据。所以服务器上的日志清理不影响查看,本地的日志文件只相当于缓存。
2、控制台ES配置中的日志数据保留时间
控制台ES配置中的日志数据保留时间指的是日志内容在es索引中保留的时间,这个会影响在控制台可以看到的日志时间范围
3、为什么center和server运行中产生的日志会写入到messages中?
由于我们程序记录日志,需要通过rsyslog方式输入到的指定日志文件,message自动监控了所有的rsyslog日志,所以在写入到日志文件之前就已经写入了messages中(个别场景可能会有写入messages文件过大的情况,需要注意)
关于logrotate切割功能
logrotate是一个用于管理日志文件的工具,它可以自动地旋转、压缩、删除旧的日志文件,并创建新的日志文件。它可以帮助系统管理员有效地管理日志文件,避免日志文件过大导致磁盘空间不足的问题。logrotate可以通过配置文件来指定需要管理的日志文件,以及旋转、压缩、删除等操作的规则
logrotate的日志切割配置文件路径:/etc/logrotate.d/
center中日志的logrotate配置:/etc/logrotate.d/auditsys

配置文件中格式为:日志文件绝对路径,大括号{}中写具体参数配置
参数配置介绍:
- maxsize:用于指定日志文件的最大大小。当日志文件大小达到maxsize时,logrotate会自动轮换该文件并创建一个新的日志文件。
- monthly: 日志文件将按月轮循。其它可用值为
daily(天),weekly(周)或者yearly(年)。 - rotate 5: 一次将存储 5 个归档日志。对于第六个归档,时间最久的归档将被删除(也就是保留多少个旧的日志文件)。
- compress: 在轮循任务完成后,已轮循的归档将使用 gzip 进行压缩。
- delaycompress: 总是与 compress 选项一起用,delaycompress 选项指示 logrotate 不要将最近的归档压缩,压缩 将在下一次轮循周期进行。这在你或任何软件仍然需要读取最新归档时很有用。
- missingok: 在日志轮循期间,任何错误将被忽略,例如 “文件无法找到” 之类的错误。
- notifempty: 如果日志文件为空,轮循不会进行。
- notifempty :如果是空文件的话,不转储
- copytruncate:用于还在打开中的日志文件,把当前日志备份并截断
- create 644 root root: 以指定的权限创建全新的日志文件,同时 logrotate 也会重命名原始日志文件。
- postrotate/endscript: 在所有其它指令完成后,postrotate 和 endscript 里面指定的命令将被执行(主要用于重新启动日志写入到新的日志文件)。在这种情况下,rsyslogd 进程将立即再次读取其配置并继续运行。
- sharedscripts选项是用来指定在所有日志文件都被轮换之后,是否执行一次脚本。如果设置为sharedscripts,则在所有日志文件轮换之后,只会执行一次脚本。如果未设置sharedscripts,则每个日志文件轮换时都会执行一次脚本。这个选项通常用于需要在所有日志文件轮换之后执行一次脚本的情况,比如重启服务或者发送通知邮件等。
参考文档:
Linux日志切割神器logrotate原理介绍和配置详解 – 知乎 (zhihu.com)
你真的搞懂logrotate了吗? 原-腾讯云开发者社区-腾讯云 (tencent.com)