日志
记录系统活动信息的文件,记录系统在什么时候由哪个进程做了什么样的操作。
Linux常用日志文件
#开机启动的时候系统内核会去检测与启动硬件,接下来启动各种内核支持的功能,这些信息会记录在以下文件,只记录本次开机启动的信息
[root@base ~]# tail /var/log/boot.log
#查看文件日志动态显示追加信息
[root@base ~]# tail -f /var/log/messages
#安全日志
[root@base ~]# tail /var/log/secure
#yum日志
[root@base ~]# tail /var/log/yum.log
#邮件日志postfix
[root@base ~]# tail /var/log/maillog
#和系统启动有关
[root@base ~]# tail /var/log/dmesg
#任务计划crond、at进程产生的日志
[root@base ~]# tail /var/log/cron
#所有用户的登录情况
[root@base ~]# tail /var/log/lastlog
#对应命令
[root@base ~]#lastlog
#最近登录的用户
[root@base ~]# tail /var/log/btmp
#对应命令
[root@base ~]# last
#记录正确登录系统者的账户信息
[root@base ~]# tail /var/log/wtmp
#当前登录的用户
[root@base ~]# w
19:17:10 up 1:01, 2 users, load average: 0.00, 0.01, 0.05
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root pts/0 192.168.88.1 18:32 6.00s 0.07s 0.00s w
root pts/1 192.168.88.1 18:56 8:30 0.03s 0.00s -bash
#审计日志
[root@base ~]# tail /var/log/audit/audit.log
rsyslog
Centos通过rsyslog.service服务来统一管理日志文件
#查看日志进程
[root@base ~]# ps aux | grep rsyslog
root 1236 0.0 0.1 222716 4960 ? Ssl 17:57 0:00 /usr/sbin/rsyslogd -n
root 1751 0.0 0.0 112704 964 pts/1 S+ 18:19 0:00 grep --color=auto rsyslog
#查看日志服务状态
[root@base ~]# systemctl status rsyslog
● rsyslog.service - System Logging Service
Loaded: loaded (/usr/lib/systemd/system/rsyslog.service; enabled; vendor preset: enabled)
Active: active (running) since Tue 2022-01-25 17:57:04 EST; 23min ago
Docs: man:rsyslogd(8)
http://www.rsyslog.com/doc/
Main PID: 1236 (rsyslogd)
CGroup: /system.slice/rsyslog.service
└─1236 /usr/sbin/rsyslogd -n
Jan 25 17:57:04 base systemd[1]: Starting System Logging Service...
Jan 25 17:57:04 base rsyslogd[1236]: [origin software="rsyslogd" swVersion="8.24.0"...art
Jan 25 17:57:04 base systemd[1]: Started System Logging Service.
Hint: Some lines were ellipsized, use -l to show in full.
#rsyslog配置文件
[root@base ~]# grep -Ev '^(#|$)' /etc/rsyslog.conf
$ModLoad imuxsock # provides support for local system logging (e.g. via logger command)
$ModLoad imjournal # provides access to the systemd journal
$WorkDirectory /var/lib/rsyslog
$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat
$IncludeConfig /etc/rsyslog.d/*.conf
$OmitLocalLogging on
$IMJournalStateFile imjournal.state
*.info;mail.none;authpriv.none;cron.none /var/log/messages
authpriv.* /var/log/secure
mail.* -/var/log/maillog
cron.* /var/log/cron
*.emerg :omusrmsg:*
uucp,news.crit /var/log/spooler
local7.* /var/log/boot.log
#mail.* -/var/log/maillog中的
【-】表示异步的方式执行存放,先将信息存储到内存,等积攒到一定量时一起写入磁盘
【*】表示任何级别
【.】代表【比后面还要严重的等级含该等级都被记录下来】,如mail.info表示等级严重于info则进行记录
【.=】代表所需要的等级就是后面接的等级
【.!】代表不等于,除了该等级外的其他等级都记录,一般使用【.】
authpriv表示认证设备(登录,验证,用户添加)
设备类型Facility
系统对某种类型APP事件的定义,用来收集同类程序日志。
LOG_SYSLOG - syslog自身产生的日志
LOG_AUTHPRIV - 安全认证设备
LOG_CRON - 调试程序(cron和at)
LOG_MAIL - 邮件系统
LOG_USER - 用户相关
LOG_DAEMON - 后台进程
LOG_FTP - 文件服务器ftp_daemon
LOG_KERN - 内核设备
LOG_LPR - 打印机设备
LOG_LOCAL0 through LOG_LOCAL7 - 用户自定义设备
日志级别Level
LOG_EMERG - 紧急、致命、服务无法继续运行,如配置文件丢失
LOG_ALERT - 报警,需要立即处理,如磁盘使用95%
LOG_CRIT - 致命行为
LOG_ERR - 错误行为
LOG_WARNING - 警告信息
LOG_NOTICE - 普通、重要的标准信息
LOG_INFO - 标准信息
LOG_DEBUG - 调试信息,排错所需,一般不建议使用
logrotate
logrotate工具来自动化处理日志文件容量和更新,logrotate将旧的日志文件更改名称,然后建立一个空的日志文件,新的文件重新开始记录。
日志:记录了程序运行时的各种信息
通过日志分析用户行为,记录运行轨迹,查找程序问题
可惜磁盘空间有限
日志论战就像飞机里的黑匣子,记录的信息再重要也只能记录最后一段时间发生的事
为了节省空间和整理方便,日志文件经常需要按!时间或!大小等维度分成多份,删除时间久远的日志文件
#配置文件
#主配置文件:/etc/logrotate.conf
#子配置:/etc/logrotate.d/*
#-----------配置文件参数----------
# 每周滚动日志
weekly
#保留4份滚动日志
rotate 4
#日志滚动后创建一个新的日志
create
#使用日期后缀
dateext
#是否压缩
compress
/var/log/wtmp {
#一个月轮转一次(其它可用值为'daily','weekly'或者'yearly')
monthly
#轮转创建文件,并设置权限,属主属组
create 0664 root utmp
#最小到达1M才轮转,与monthy是且关系
minsize 1M
rotate 1
}
#在日志轮循期间,任何错误将被忽略,例如“文件无法找到”之类的错误。
missingok
#
在所有其它指令完成后,postrotate和endscript里面指定的命令将被执行。在这种情况下,rsyslogd 进程将立即再次读取其配置并继续运行。
postrotate/endscript
#空文件也轮转
notifempty
#先把原始文件拷贝一份重命名,然后把原始文件清空
copytruncate
#启动logrotate之前进行的命令
sharedscripts
prerotate
####填写要执行的命令
endscript
#执行完logrotate之后执行的命令
sharedscripts
postrotate
endscript
#-----------配置文件参数----------
配置远程记录日志
#服务器端
# Provides UDP syslog reception
#$ModLoad imudp
#$UDPServerRun 514
#打开TCP514端口监听
#Provides TCP syslog reception
$ModLoad imtcp
$InputTCPServerRun 514
#客户端
#在/etc/rsyslog.conf配置文件中添加以下行[服务器监听tcp端口]
*.* @@192.168.88.102
#服务器监听udp端口
*.* @192.168.88.102