使用Logrotate管理日志

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: Linux使用某些软件的时候会产生日志文件,而这些软件本身对日志不进行分割或者压缩处理,久而久之会导致日志文件异常巨大,影响机器性能,配置不高的机器上尤为严重。

Linux使用某些软件的时候会产生日志文件,而这些软件本身对日志不进行分割或者压缩处理,久而久之会导致日志文件异常巨大,影响机器性能,配置不高的机器上尤为严重。而logrotate就是管理这些日志文件的神器。

Logrotate功能

logrotate会周期性的读,压缩,备份,创建新的日志文件。你想对日志文件做的操作,它基本上可以做到。

  • 防止单个日志文件过于庞大
  • 删除旧的日志文件,以防旧日志文件填满你的磁盘。
  • 对单个日志文件或者某个目录下的文件按时间/大小进行切割压缩操作;指定日志保存数量;还可以在切割之后运行自定义命令。

许多Linux软件都已经内置了logrotate了,例如httpd默认就使用logrotated来帮你管理日志文件。


img_24a6c0199e5918fb71bd074d7cabb498.png
httpd logrotate

Logrotate配置

  1. 首先看logrotate软件包的内容


    img_aeeef326cd094e433dadb8d08f16bb6e.png
    logrotate包目录

一般第三方软件包的日志文件管理都放在/etc/logrotate.d目录下。

httpd

[root@250 nginx]# cat /etc/logrotate.d/httpd
/var/log/httpd/*log {
    daily
    missingok
    notifempty
    sharedscripts
    delaycompress
    postrotate
        /bin/systemctl reload httpd.service > /dev/null 2>/dev/null || true
    endscript
}

这份配置会处理/var/log/httpd/目录下后缀为log的文件。

  • monthly: 日志文件将按月轮循。其它可用值为‘daily’,‘weekly’或者‘yearly’。

  • missingok: 在日志轮循期间,任何错误将被忽略,例如“文件无法找到”之类的错误。

  • notifempty: 如果日志文件为空,轮循不会进行。

  • sharedscripts: 在所有的日志文件都轮询之后运行postrotate脚本,如果没设置默认会在每个匹配的文件轮询之后运行一次postrotate脚本。

  • compress: 在轮循任务完成后,已轮循的归档将使用gzip进行压缩。

  • delaycompress: 总是与compress选项一起用,delaycompress选项指示logrotate不要将最近的归档压缩,压缩将在下一次轮循周期进行。这在你或任何软件仍然需要读取最新归档时很有用。

  • postrotate/endscript: 在所有其它指令完成后,postrotate和endscript里面指定的命令将被执行。在这种情况下,rsyslogd 进程将立即再次读取其配置并继续运行。

这里解释仅做参考,logrotate中的每个参数可单独进行搜索,明确具体的含义,man手册中也有详细说明。

排障

logrotate [-dv] [-f|--force] [-s|--state file] config_file
[root@250 nginx]# logrotate --help
用法: logrotate [OPTION...] <configfile>
  -d, --debug               Don't do anything, just test (implies -v)
  -f, --force               Force file rotation
  -m, --mail=command        Command to send mail (instead of `/bin/mail')
  -s, --state=statefile     Path of state file
  -v, --verbose             Display messages during rotation
  -l, --log=STRING          Log file
  --version                 Display version information
  1. 以debug模式运行某个logrotate配置文件


    img_1417ece3aa1e6e85e3780ee297652d68.png
    logrotate debug模式
  2. 强制使用logrotate近轮询日志文件


    img_f611b70f432f3bc4793c9b3293f0d617.png
    logrotate 强制轮询
  3. logrotate记录轮询状态的文件


    img_c79da642a855145be1d9c90a54bf1a28.png
    logrotate状态文件格式

    记录某轮询日志到logrotate状态文件中

logrotate -vf -s /var/lib/logrotate/logrotate.status  /etc/logrotate.d/httpd

最后

logrotate在日志处理上功能十分强大,但却十分容易上手,本文只是作为抛砖引玉的作用。在使用logrotate的时候,根据man手册可查寻找想要了解的各种配置信息。

希望能帮助到大家。

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
8月前
|
存储 Oracle 关系型数据库
postgresql数据库|wal日志的开启以及如何管理
postgresql数据库|wal日志的开启以及如何管理
1360 0
|
8月前
|
负载均衡
|
8月前
|
运维 监控 关系型数据库
百度搜索:蓝易云【MYSQL四种管理日志详细介绍】
这四种管理日志对于MySQL服务器的性能监控、故障排查以及主从复制等方面都非常重要。在使用这些日志时,应根据具体需求来选择开启和配置,并定期清理和维护日志文件,以免占用过多磁盘空间。
88 0
|
8月前
|
监控 Shell Linux
【Shell 命令集合 系统管理 】Linux 自动轮转(log rotation)日志文件 logrotate命令 使用指南
【Shell 命令集合 系统管理 】Linux 自动轮转(log rotation)日志文件 logrotate命令 使用指南
176 0
|
7月前
|
监控 应用服务中间件 Linux
轻松解决日志文件积压问题:掌握logrotate的技巧
轻松解决日志文件积压问题:掌握logrotate的技巧
507 1
|
5月前
|
监控 关系型数据库 Linux
Linux日志管理工具:Logrotate(二)
Linux日志管理工具:Logrotate(二)
287 2
|
5月前
|
存储 监控 安全
Linux日志管理工具:Logrotate(一)
Linux日志管理工具:Logrotate(一)
382 0
|
7月前
Liunx怎么安装spdlog(这是用来管理日志部分)
Liunx怎么安装spdlog(这是用来管理日志部分)
147 7
|
6月前
|
存储 弹性计算 运维
可观测性体系问题之ECS管控对其所有日志的管理如何解决
可观测性体系问题之ECS管控对其所有日志的管理如何解决
52 0
|
7月前
|
监控 网络协议 Linux
技术好文共享::Linux系统日志管理日志转储
技术好文共享::Linux系统日志管理日志转储
114 0