Linux syslog日志存储的主要方式
这是syslog最传统的存储方式,通过配置将不同类型、优先级的日志写入/var/log目录下的特定文件,便于分类查阅。具体规则由配置文件(如rsyslog的/etc/rsyslog.conf或/etc/rsyslog.d/*.conf)定义,例如:
*.info;mail.none;authpriv.none;cron.none /var/log/messages:记录除邮件、认证、计划任务外的所有info及以上级别日志;authpriv.* /var/log/secure:存储认证相关安全日志(如登录尝试);cron.* /var/log/cron:记录计划任务的执行日志;kern.* /var/log/kern.log:存储内核环缓冲区的日志(如硬件交互信息)。内核通过printk()函数生成的内核消息首先存入内核环形缓冲区(/proc/kmsg),这是一个固定大小的循环缓冲区,用于临时存储内核启动、硬件错误等实时信息。
dmesg命令从缓冲区提取日志(默认显示最近的内核消息);/var/log/kern.log)。早期Linux系统使用klogd(内核日志守护进程)和syslogd(系统日志守护进程)组合:
klogd负责从/proc/kmsg或syslog接口读取内核日志,传递给syslogd;syslogd根据配置文件将日志分发到对应文件(如/var/log/syslog)。rsyslog替代传统组合,其集成了内核日志处理功能,支持更灵活的过滤和转发规则。为防止日志文件无限增长占用磁盘空间,需通过logrotate工具定期轮转日志:
/etc/logrotate.conf(全局配置)或/etc/logrotate.d/rsyslog(rsyslog专用配置);daily(每天轮转)、rotate 7(保留7个旧日志)、compress(压缩旧日志)、notifempty(空日志不轮转)。/var/log/syslog重命名为/var/log/syslog.1,并创建新文件,保留最近7天的压缩日志。针对分布式或大型系统,可通过配置rsyslog/syslog-ng将日志发送到远程集中式日志服务器(如ELK Stack、Graylog),实现统一管理和分析:
*.* @remote_server_ip:514(UDP传输)或*.* @@remote_server_ip:514(TCP传输);