发布于 

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 打印
mail 邮件
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
}