日志文件管理
记录系统、程序运行中发生的各种事件
阅读日志,有助于诊断和解决系统故障
1. 分类
内核及系统日志
由系统服务rsyslog统一进行管理,日志格式基本相似
主配置文件/etc/rsyslog.conf
用户日志
记录系统用户登录及退出系统的相关信息
程序日志
由各种应用程序独立管理的日志文件,记录格式不统一
2. 内核日志消息优先级别
数字越小优先级越高,消息越重要
优先级由开发者自行定义,也就是你想要哪部分的信息内容,可以自信添加修改
级别 | 消息 | 现象 |
---|---|---|
0 | EMERG(紧急) | 会导致主机系统不可用,如系统崩溃 |
1 | ALERT (警告) | 必须马上采取紧急措施解决的问题,如数据库被破坏 |
2 | CRIT(严重) | 计较严重的情况,如硬盘错误,可能会阻碍程序的部分功能 |
3 | ERR(错误) | 运行出现错误,不是非常紧急,尽快修复的 |
4 | WARNING(提醒) | 可能影响系统功能,需要提醒用户的重要事件,不是错误,如磁盘使用了80%等 |
5 | NOTICE(注意) | 不影响正常功能,但需要注意的事件,无需处理 |
6 | INFO(信息) | 一般信息,正常的系统信息 |
7 | DEDUG(调试) | 程序或系统调试信息等,包含详细开发的信息,调试程序时使用 |
none(没有优先级) | 不记录任何日志信息 |
3. 设施 facility
在linux的系统中,设施(facility)是指信息源的分类,每个消息都来自于一个特定的设施,如内核、邮件、用户等。在日志记录中,可以根据设施进行过滤,以便查看特定的设施生成的消息。
举例:
命令 | 含义 |
---|---|
mail.info /var/log/maillog | 比指定的级别更高的日志级别,包括指定级别自身,保存到/var/log/maillog中 |
maillog.=info /var/log/maillog | 明确指定日志级别为info,保存至/var/log/maillog中 |
maillog.!info /var/log/maillog | 除了指定的日志级别info外,其他所有级别的日志文件都保存至/var/log/mailog中 |
mail.*info /var/log/maillog | mail的所有日志级别信息,都保存至/var/log/maillog中 |
*.info /var/log/maillog | 所有的facility的info级别,保存至/var/log/maillog中 |
mail.notice;new.info 表示mail的notice以上的日志级别和new的info以上的日志级别
mail,new.info 表示mail和new的info以上级别
-/var/log/... - 表示异步模式
异步:一个线程或多个线程,不必等待回应就可以执行下一步
同步:必须等到对方回应才可以执行下一步
4. 保存位置
默认位置:/var/log目录下
主要日志文件:
日志文件名称 | 目录 |
---|---|
内核及公共消息日志 | /var/log/messages |
计划任务日志 | /var/log/cron |
系统引导日志 | /var/log/dmesg |
邮件系统日志 | /var/log/maillog |
最近的用户登录事件 | /var/log/lastlog |
用户登录、注销及系统开、关机事件 | /var/log/wtmp |
当前登录的每个用户的详细信息 | /var/log/utmp |
与用户验证相关的安全性事件 | /var/log/secure |
5. 日志内容格式
事件发生时间 主机名 进程(系统,内核) 消息具体内容
May 16 15:30:01 localhost systemd: Starting Session 58 of user root.
分析工具
users、who、w、last、lastb
users 显示当前登录的用户
w 显示当前登录的用户
last 显示当前系统登录过的用户(lastb 登录失败的用户)
6. 日志文件保留时间
程序日志:一般只保留当天,一般留个2天左右(例如:http、nginx)
数据日志:数据库,最少保留半年
用户信息日志:永久保存
企业根据业务需要,自定义保留时间
7. 内核及系统日志统一管理工具
vim /etc/rsyslog.conf
注:自定义程序 local0-7
8. 自定义服务的日志文件位置
自定义ssh的日志文件路径为/var/log/sshd.log
# 添加自定义模块local6
[root@localhost ~]# vim /etc/rsyslog.conf
local6 /var/log/sshd.log
# 为ssh服务配置模块
[root@localhost ~]# vim /etc/ssh/sshd_config
# 在Logging模块
SyslogFacility AUTHPRIV # 将此条命令内容注释掉
SyslogFacility LOCAL6 # 添加此条命令内容
# 重启sshd服务和rsyslog服务
[root@localhost ~]# systemctl restart sshd
[root@localhost ~]# systemctl restart rsyslog.service
# 关闭防火墙和selinux的安全机制(仅针对实验环境 )
[root@localhost ~]# systemctl stop firewalld.service
[root@localhost ~]# setenforce 0
# 检验
# 进入另一台主机,用ssh服务登录此主机
[root@localhost ~]# ssh root@192.168.23.5
root@192.168.23.5's password:
Last login: Tue May 16 16:04:57 2023 from 192.168.23.1
# 回到第一台主机查看sshd日志文件
[root@localhost ~]# cd /var/log
[root@localhost log]# cat sshd.log
May 16 17:41:11 localhost sshd[10884]: Accepted password for root from 192.168.23.10 port 37034 ssh2
9. 集中管理日志
将服务器的日志文件发到统一的日志文件服务器
实验环境要求:
两台不同的主机
主机1:ip 192.168.23.5
主机2:ip 192.168.23.10