Linux日志管理
系统日志保存目录: /var/log
[root@CentOS01 ~]# ls /var/log
anaconda firewalld secure
audit grubby_prune_debug secure-20220428
boot.log iptraf-ng spooler
boot.log-20220428 lastlog spooler-20220428
boot.log-20220504 maillog tallylog
btmp maillog-20220428 tomcat
btmp-20220504 messages tuned
cron messages-20220428 wtmp
cron-20220428 mysqld.log yum.log
dmesg rhsm
dmesg.old sa
系统常用的日志
日志文件 | 说明 |
---|---|
/var/log/boot.log | 系统启动日志 |
/var/log/cron | 定时任务日志 |
/var/log/lastlog | 记录系统中所有用户最后一次登录时间的日志。日志是二进制文件,需要用lastlog命令查看 |
/var/log/mailog | 邮件信息日志 |
/var/log/message | 记录系统重要消息的日志,会记录linux系统的绝大多数重要信息,系统出现问题着重检查该日志 |
/var/log/secure | 记录验证和授权方面的信息,只要涉及账户和密码的程序都会记录,比如系统登录、ssh登录、su切换用户、sudo授权,添加用户和修改密码也会记录 |
/var/tun/ulmp | 记录当前登录用户的信息,文件会随着用户的登录和注销而不断变化,只记录当前用户的信息,文件不能用vi查看,而要实用w,who,users等命令查看 |
/var/log/cups | 打印信息日志 |
/var/log/dmesg | 系统开机自检信息,可用dmesg命令查看 |
/var/log/btmp | 记录错误登录的日志,实用lastb命令查看 |
/var/log/wtmp | 记录用户的登录注销信息,记录系统的启动、关机、重启事件,使用last命令查看 |
日志管理服务 rsyslogd
#检查rsyslog服务是否开机自启动
[root@CentOS01 log]# systemctl list-unit-files | grep rsyslog
rsyslog.service enabled
#
[root@CentOS01 log]# ps -ef | grep rsyslog
root 995 1 0 21:02 ? 00:00:00 /usr/sbin/rsyslogd -n
root 1603 1176 0 21:58 pts/0 00:00:00 grep --color=auto rsyslog
配置文件位置:/etc/rsyslog.conf
编辑文件时的格式为:*.* 存放的日志文件
其中第一个*
代表日志类型,第二个*
代表日志级别
日志类型 | 描述 |
---|---|
auth | pam产生的日志 |
authpriv | ssh、ftp等登录信息的验证信息 |
corn | 时间任务相关 |
kern | 内核 |
lpr | 打印 |
邮件 | |
mark(syslog)-rsyslog | 服务内部的信息,时间标识 |
news | 新闻组 |
user | 用户程序产生的相关信息 |
uucp | unix to unix copy主机之间的通信 |
local 1-7 | 自定义的日志设备 |
日志级别 | 描述 |
---|---|
debug | 有调试信息的,日志通信最多 |
info | 一般信息日志,最常用 |
notice | 最具有重要性的普通条件的信息 |
warning | 警告级别 |
err | 错误级别,可导致某个功能或者模块不能正常工作的信息 |
crit | 严重级别,可导致整个系统或软件不能正常运行的信息 |
alert | 需要立刻修改的信息 |
emerg | 内核崩溃等重要信息 |
none | 什么都不记录 |
从上到下,级别越来越高,记录的信息越来越少
案例
[root@CentOS01 log]# vim /etc/rsyslog.conf
#增加自定义日志,保存所有类型所有级别的日志到xhs.log
*.* /var/log/xhs.log
#重新登录系统后发现日志记录
[root@CentOS01 log]# cat xhs.log | grep sshd
May 5 22:27:04 CentOS01 sshd[993]: Server listening on 0.0.0.0 port 12222.
May 5 22:27:04 CentOS01 sshd[993]: Server listening on :: port 12222.
May 5 22:27:10 CentOS01 sshd[1231]: Accepted password for root from 192.168.2.41 port 52638 ssh2
May 5 22:27:10 CentOS01 sshd[1231]: pam_unix(sshd:session): session opened for user root by (uid=0)
Linux日志轮替
配置文件:/etc/logrotate.conf
# rotate log files weekly 默认每周轮替一次
weekly
# keep 4 weeks worth of backlogs 保存4个日志文件
rotate 4
# create new (empty) log files after rotating old ones 每周轮替时创建新的日志文件
create
# use date as a suffix of the rotated file 使用日期作为轮替日志文件的后缀
dateext
# uncomment this if you want your log files compressed 日志文件是否压缩,取消注释的话轮替时压缩老日志文件
#compress
# RPM packages drop log rotation information into this directory 导入子配置文件
include /etc/logrotate.d
# no packages own wtmp and btmp -- we'll rotate them here 单独设置某项日志的轮替规则,优先级高于默认规则
/var/log/wtmp {
monthly
create 0664 root utmp
minsize 1M
rotate 1
}
/var/log/btmp {
missingok
monthly
create 0600 root utmp
rotate 1
}
日志轮替配置参数
参数 | 说明 |
---|---|
daily | 轮替周期为每天 |
weekly | 轮替周期为每周 |
monthly | 轮替周期为每月 |
rotate 数字 | 保留日志文件个数,0为不备份 |
compress | 日志轮替时压缩旧日志 |
create mode owner group | 建立新日志,同时指定新日志的权限与所有者和组 |
mail address | 日志轮替时,通过邮件发送到指定邮件地址 |
missingok | 如果日志不存在,则忽略该日志的警告信息 |
notifempty | 如果日志为空文件,则不进行日志轮替 |
minsize 大小 | 日志轮替的最小值,日志达到这个值后才会进行轮替 |
dateext | 使用日期作为轮替文件的后缀 |
sharedscripts | 在此关键字之后的脚本只执行一次 |
prerotate/endscript | 在日志轮替之前执行脚本 |
postrotate/endscript | 在日志轮替之后执行脚本 |
自定义日志轮替案例
[root@blog logrotate.d]# vim xhs
/var/log/xhs.log {
missingok
notifempty
daily
rotate 7
}