日志文件分析

文章目录


日志文件

日志的功能


用于记录系统、程序运行中发生的各种事件

通过阅读日志,有助于诊断和解决系统故障

日志文件的分类

内核及系统日志==:由系统服务syslog统─进行管理,日志格式基本相似配置文件/etc/rsyslog.conf

用户日志:
记录系统用户登录及退出系统的相关信息

程序日志:

程序在允许的过程中,有什么报错,就会记录下来


日志的保存位置:/var/log 目录下

主要日志文件介绍

日志文件分析

/var/log/messages:记录Linux内核消息以及各种应用程序的公共日志信息,包括启动,IO错误,网络错误,程序故障等,对于未使用独立日志文件的应用程序或服务,一般都可以从该日志文件中获得相关的事件记录信息

/var/log/cron:记录crond计划任务产生的事件信息

/var/log/dmesg:记录Linux系统在引导过程中的各种事件信息

/var/log/maillog:记录进入或发出系统的电子邮件活动

/var/log/secure:记录用户认证相关的安全事件信息

/var/log/lastlog:记录每个用户最近的登录事件,二进制格式

/var/log/wtmp:记录每个用户登录,注销及系统启动和停机事件,二进制格式

/var/run/btmp:记录失败的,错误的登录尝试及验证事件,二进制格式

/var/run/utmp:当前登录的每个用户的详细信息

内核以及系统日志

由系统服务 reyslog 统一管理,配置文件保存在 /etc/rsylog.conf

日志文件分析

*.info #表示info等级及以上的所有等级的信息都写到对应的日志文件里
mail.none #表示某事件的信息不写到日志文件里(这里比如是邮件)

设备字段说明:
auth				#用户认证时产生的日志

authpriv 		    #ssh、 ftp等登录信息的验证信息
daemon				#—些守护进程产生的日志
ftp					#ETP产生的日志
lpr	       			#打印相关活动
rmark       		#rsyslog服务内部的信息,时间标识
news         		#网络新闻传输协议(nntp)产生的消息。
syslog		 		#系统日志
uucp		 		#Unix-to-Unix Copy两个unix之间的相关通信
console		 		#针对系统控制台的消息。
cron         		#系统执行定时任务产生的日志。
kern         		#系统内核日志
localo~      		#白定义程序使用
rnail        		#邮件日志
user		 		#用户进程

Linux系统内核日志消息的优先级别(数字等级越小,优先级越高,消息越重要)

0		EMERG(紧急):会导致主机系统不可用的情况。如系统崩溃
1		ALERT(警告):必须马上采取措施解决的问题。如数据库被破坏
2		CRIT(严重):比较严重的情况。如硬盘错误,可能会阻碍程序的部分功能
3		ERR(错误):运行出现错误。不是非常紧急,尽快修复的
4		WARNING(提醒):可能影响系统功能,需要提醒用户的重要事件。不是错误,如磁盘用了			85%等
5		NOTICE(注意):不会影响正常功能,但是需要注意的事件。无需处理
6		INFO(信息):一般信息。正常的系统信息
7		DEBUG(调试):程序或系统调试信息等。包含详细开发的信息,调试程序时使用
		none:没有优先级,不记录任何日志消息。


日志记录的一般格式

more /var/log/messages

Nov 27 15:10:35 zzz NetworkManager[8821]: <info>  [1637997035.9410] dhcp4 (ens33):   plen 24 (255.255.255.0)

时间标签:Nov 27 15:10:35	消息发出的日期和时间
主机名:zzz	生成消息的计算机的名称
子系统名:NetworkManager[8821]:	发出消息的应用程序的名称
消息字段:<info>  [1637997035.9410]	
消息的具体内容:dhcp4 (ens33):   plen 24 (255.255.255.0)

分析工具

last 命令用于查询成功登录到系统的用户记录

[root@zzz log]# last
root     pts/1        192.168.232.1    Sat Nov 27 16:50   still logged in   
root     pts/4        192.168.232.1    Sat Nov 27 13:38   still logged in   
root     pts/3        :0               Sat Nov 27 13:37   still logged in   
root     pts/2        :0               Sat Nov 27 13:36   still logged in 

lastb 命令用于查询登录失败的用户记录

[root@zzz log]# lastb
root     ssh:notty    zzz              Sat Nov 27 17:08 - 17:08  (00:00)    
root     ssh:notty    zzz              Sat Nov 27 17:08 - 17:08  (00:00)    
root     ssh:notty    192.168.232.1    Wed Nov  3 17:08 - 17:08  (00:00)    
root     :0           :0               Sun Oct 31 17:02 - 17:02  (00:00) 

程序日志分析

由相应的应用程序独立进行管理,是由开发者写入的

比如 Web服务日志,位于/var/log/httpd/

access_log ##记录客户访问事件

error_log ##记录错误事件


日志管理策略

需要及时做好日志的备份和归档

延长日志保存期限

控制日志访问权限:日志中可能包含各类敏感信息,如账户,口令等

集中管理日志:将服务器的日志文件发到统一的日志文件服务器,便于日志信息的统一收集,整理和分析,杜绝日志信息的意外丢失,恶意篡改和删除


配置日志服务器收集日志

发送服务器:客户端 192.168.232.130

收集服务器:服务端 192.168.232.129

1.两个服务器先关闭防火墙 关闭深层防护

setenforce stop firewalld
systemctl stop firewalld
systemctl disable firewalld

2.进客户端 /etc/rsyslog.conf进行配置

把TCP 和UDP 两个注释取消掉,打开端口模块

日志文件分析

再将配置信息写入

日志文件分析

$template myFormat, "%timestamp% %hostname% %syslogseverity-text% %syslogtag% %msg%\n"
$ActionFileDefaultTemplate myFormat
*.info;mail.none;authpriv.none;cron.none              @@192.168.232.129:514

重启服务

[root@send ~]# systemctl restart rsyslog

查看端口信息

[root@send ~]# netstat -anutp | grep 514

客户端设置完毕


接下来设置服务端

1.进 /etc/rsyslog.conf 配置

还是TCP 和UDP 两个注释取消掉,打开端口模块

日志文件分析

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-y0zPaQXk-1638082066553)(C:\Users\zhuquanhao\Desktop\截图命令集合\linux\日志文件管理\6.png)]

$AllowedSender tcp, 192.168.232.0/24  #允许 192.168.232.0 网段内的主机以tcp协议来传输

$template Remote,"/data/log/%fromhost-ip%/%fromhost-ip%_%$YEAR%-%$MONTH%-%$DAY%.log"  #定义模板,接受日志文件路径,区分了不同主机的日志

:fromhost-ip, !isequal, "127.0.0.1" ?Remote  #过滤掉 server 本机的日志

2.创建/data/log/目录

mkdir /data/log/

3.重启服务

[root@recive log]# systemctl restart rsyslog

4.cd 到 /data/log/目录当中,ls看一下

日志文件分析

5.在客户端发送一个日志文件 看服务端能不能同步日志信息

客户端:

[root@send ~]# logger "hello world"

服务端:

日志文件分析


journalctl日志管理工具

日志管理工具journalctl是centos7上专有的日志管理工具,该工具是从message这个文件里读取信息。

Systemd统一管理所有Unit的启动日志。带来的好处就是,可以只用journalctl一个命令,查看所有日志(内核日志和应用日志)日志的配置文件是/etc/ systemd/journald.conf

查看最新的日志文件,从尾部开始查看

[root@send ~]# journalctl -r

查看内核日志

[root@send ~]# journalctl -k

查看系统本次启动日志

[root@send ~]# journalctl -b 0

查看上一次启动的日志

[root@send ~]# journalctl -b -1

显示尾部指定 20 行的日志,并动态更新

[root@send ~]# journalctl -n 20 -f

查看某个服务的日志(比如防火墙)

[root@send ~]# journalctl -u firewalld

查看指定进程的日志

[root@send ~]# journalctl _PID=1

查看指定用户的日志

[root@send ~]# journalctl _UID=0 --since today

查看报错日志

[root@send ~]# journalctl -xe
上一篇:自顶向下的计算机网络作业——邮件客户实验题


下一篇:使用Django生成验证码 并发送qq邮箱