rsyslog日志服务
rsyslog作为传统的系统日志服务,把所有收集到的日志都记录到/var/log/目录下的各个日志文件中。
常见的日志文件如下:
/var/log/messages 绝大多数的系统日志都记录到该文件
/var/log/secure 所有跟安全和认证授权等日志都会记录到此文件
/var/log/maillog 邮件服务的日志
/var/log/cron crond计划任务的日志
/var/log/boot.log 系统启动的相关日志
1. logrotate日志轮循
logrotate是基于CRON来运行的,其脚本是/etc/cron.daily/logrotate,日志轮转是系统自动完成的。
2. logrotate配置文件:
/etc/logrotate.conf
/etc/logrotate.d/*
注意:以xorg为例
创建xorg配置文件:/etc/logrotate.d/xorg
特定配置文件写法:
/var/log/Xorg.0.log {
create //轮替后,建立新的文件存储
rotate 1 //轮替一份
daily //每天轮替一次
weekly //每周轮替一次
monthly //每月轮替一次
dateext //轮替文件名添加日期
size 10M //文件大小超过10M才轮替
compress //压缩轮替文件
missingok //文件不存在不报错
notifempty //当日志为空时,不进行轮替
}
3. 测试:
logrotate -d /etc/logrotate.d/xorg
systemd-journald日志服务
systemd-journald是一个改进型日志管理服务,可以收集来自内核、系统早期启动阶段的日志、系统守护进程在启动和运行中的标准输出和错误信息,还有syslog的日志。该日志服务仅仅把日志集中保存在单一结构的日志文件/run/log/journal中,由于日志是经历过压缩和格式化的二进制数据,所以在查看和定位的时候很迅速。默认情况下并不会持久化保存日志,只会保留一个月的日志。
1. 分区开启日志服务
sudo tune2fs -O has_journal /dev/sda1
2. 查看分区是否开启日志服务
sudo tune2fs -l /dev/sda1
在输出中,你将看到一行类似于 "Filesystem features" 或 "Filesystem flags" 的内容。如果其中包含 "has_journal",则表示日志功能已经开启。
3. 配置文件/etc/systemd/journald.conf
[Journal]
#Storage=auto
#Compress=yes
#Seal=yes
#SplitMode=uid
#SyncIntervalSec=5m
#RateLimitIntervalSec=30s
#RateLimitBurst=10000
SystemMaxUse=50M
#SystemKeepFree=
#SystemMaxFileSize=
#SystemMaxFiles=100
#RuntimeMaxUse=
#RuntimeKeepFree=
#RuntimeMaxFileSize=
#RuntimeMaxFiles=100
MaxRetentionSec=1min
#MaxFileSec=60s
#ForwardToSyslog=yes
#ForwardToKMsg=no
#ForwardToConsole=no
#ForwardToWall=yes
#TTYPath=/dev/console
#MaxLevelStore=debug
#MaxLevelSyslog=debug
#MaxLevelKMsg=notice
#MaxLevelConsole=info
#MaxLevelWall=emerg
#LineMax=48K
#ReadKMsg=yes
4. 日志默认存储路径/var/log/journal
root@ok3568:/var/log/journal# du -h /var/log/journal/
63M /var/log/journal/4de78ae887efec63b6de680064469be7
63M /var/log/journal/
5. 查看磁盘占用sudo journalctl --disk-usage
root@ok3568:/var/log/journal# sudo journalctl --disk-usage
Archived and active journals take up 62.5M in the file system.
6. 重启服务sudo systemctl restart systemd-journald.service