rsyslogd与logrotate日志管理
rsyslogd与logrotate日志管理
Rsyslogd 与 Logrotate 笔记整理
一、Rsyslogd(系统日志服务)
作用:Linux 系统默认的日志管理服务,负责收集、过滤、转发系统及应用产生的日志。
1. 核心概念
- 配置文件:
/etc/rsyslog.conf
和/etc/rsyslog.d/*.conf
- 日志分类:
- Facility(日志类型):如
auth
(认证)、kern
(内核)、mail
(邮件)等。 - Priority(优先级):
debug
(最低)到emerg
(最高)。
- Facility(日志类型):如
- 日志存储路径:默认在
/var/log/
目录下(如/var/log/messages
)。
2. 常用配置语法
1
2
3
4
5
# 格式:[Facility].[Priority] [目标]
*.* /var/log/all.log # 记录所有日志到文件
auth.* -/var/log/auth.log # 记录认证日志(异步写入)
*.info;mail.none /var/log/messages # 记录info及以上级别日志,排除mail
user.=error /dev/console # 用户程序的error级别日志输出到控制台
3. 高级功能
- 远程日志转发:
1 2
# 发送日志到远程服务器(@表示UDP,@@表示TCP) *.* @192.168.1.100:514
- 模板定制日志格式:
1 2
$template MyFormat,"%timestamp% %hostname% %msg%\n" *.* /var/log/custom.log;MyFormat
- 过滤条件:
1
if $msg contains "error" then /var/log/errors.log
4. 常用命令
1
2
systemctl restart rsyslog # 重启服务
logger "Test Message" # 手动生成测试日志
二、Logrotate(日志轮转工具)
作用:自动切割、压缩、删除旧日志文件,避免日志占满磁盘。
1. 核心概念
- 主配置:
/etc/logrotate.conf
(全局配置) - 子配置:
/etc/logrotate.d/*
(按服务独立配置,如 Nginx、Apache) - 触发方式:通过
cron
每日自动执行(/etc/cron.daily/logrotate
)。
2. 常用配置参数
1
2
3
4
5
6
7
8
9
10
11
12
/var/log/app.log {
daily # 按天轮转
missingok # 日志不存在时忽略错误
rotate 30 # 保留30个历史文件
compress # 压缩旧日志(默认gzip)
delaycompress # 延迟压缩(下一次轮转时压缩)
size 100M # 按大小轮转(与daily/weekly等互斥)
create 0644 root root # 新日志文件权限与所有者
postrotate # 轮转后执行的命令(如通知服务重新打开日志)
systemctl restart app
endscript
}
3. 配置示例
- Nginx 日志轮转(
/etc/logrotate.d/nginx
):1 2 3 4 5 6 7 8 9 10 11 12
/var/log/nginx/*.log { daily missingok rotate 14 compress delaycompress notifempty sharedscripts postrotate nginx -s reopen > /dev/null 2>&1 endscript }
4. 手动执行与调试
1
2
logrotate -vf /etc/logrotate.d/nginx # 强制执行并显示详细日志
logrotate -d /etc/logrotate.conf # 调试模式(模拟运行)
5. 常见问题排查
- 日志未轮转:
- 检查
cron
是否正常运行。 - 查看 Logrotate 状态文件:
/var/lib/logrotate/status
。
- 检查
- 权限问题:确保配置中
create
参数的用户/组与日志文件一致。
本文由作者按照
CC BY 4.0
进行授权