3.16 Linux 日志分析

1、日志文件概述

日志文件是用来记录linux操作系统中各种运行消息的文件,相当于linux主机的“日记”(主要记录在本机上谁什么时间做了什么事情)。不同的日志文件记载了不同类型的消息,例如linux内核消息、用户登录事件、程序错误等。

所以日志也是运维人员应该注意的地方之一。不要低估日志文件对网络安全的重要作用,因为日志文件能够详细记录系统每天发生的各种各样的事件。可以通过日志文件检查错误产生的原因,或者在受到攻击和黑客入侵时追踪攻击者的踪迹。

日志的两个比较重要的作用是:审核和监测(如系统故障排错、统计访问量)。对于Linux系统而言,日志文件都默认放在/var/log/下。

注:某些第3方软件的日志文件位于软件自己的目录中的log目录或其他位置。

日志数据有3种类型:

  • 内核及系统日志
  • 用户日志
  • 程序日志
2、/var/log/ 常见日志文件

大多数日志文件是纯文本文件,可以用cat 、head、tail等来查看。还有一些是二进制日志文件,需要用专用的命令来查看。

secure

安全相关,主要是用户认证,如登录、创建和删除账号、sudo等

boot.log

系统启动日志。能看到启动流程。

cron

计划任务日志。会记录crontab计划任务的创建、执行信息。

dmesg

硬件设备信息(device)。纯文本,也可以用dmesg命令查看。

yum.log

yum软件的日志。记录yum安装、卸载软件的记录。

lastlog

用来记录用户最后登录事件的日志。用lastlog查看(二进制日志文件)

btmp

登录失败的信息(bad)。用lastb查(二进制日志文件)

wtmp

该日志文件永久记录每个用户登录、注销及系统的启动、停机的事件,用last查(二进制日志文件)。

messages

记录linux内核消息及各种应用程序的公共日志消息,包括启动、I/O错误、网络错误、程序故障等。对于未使用独立日志文件的应用程序或服务,一般都可以从该日志文件中获取相关的时间记录信息。

# 实时查看messages日志
tail -f /var/log/messages

# 打开新的窗口,并启动防火墙
systemctl start firewalld

3、内核及系统日志

这种日志数据由系统服务rsyslog统一管理,根据其主配置文件/etc/rsyslog.conf中的设置决定将内核消息及各种系统程序消息记录到什么位置,系统中有相当一部分程序会把自己的日志文件交由rsyslog管理,因而这些程序使用的日志记录已具有相似的格式。

# 查看rsyslog软件是否安装
rpm -qa | grep rsyslog

# 查看rsyslog软件包提供的文件列表
rpm -ql rsyslog-8.24.0-55.el7.x86_64

# 查看rsyslog软件包提供的配置文件
rpm -ql rsyslog-8.24.0-55.el7.x86_64

a. 日志类别

日志类别主要是用来指定产生日志的程序类型:

LOG_AUTH 安全或授权信息

LOG_LOCAL0 本地自定义

LOG_AUTHPRIV 安全或授权信息 (私有)

LOG_LPR 打印子系统

LOG_CRON 计划任务

LOG_MAIL 邮件子系统

LOG_DAEMON 系统守护进程

LOG_NEWS 新闻组子系统

LOG_FTP ftp守护进程相关

LOG_SYSLOG 系统消息

LOG_KERN 内核消息

b. 日志等级

日志等级主要用来区分日志消息的重要程度

LOG_EMERG

紧急,紧急情况,系统不可用(例如系统崩溃)。

LOG_ALERT

警告,需要立即修复,例如系统数据库损坏。

LOG_CRIT

严重,例如硬盘错误,可能会阻碍程序的部分功能。

LOG_ERR

错误,运行出现错误

LOG_WARNING

提醒,可能影响正常功能,但是需要注意的事件

LOG_NOTICE

注意,不是错误,不会影响正常功能,但是需要注意的事件

LOG_INFO

信息,一般信息

LOG_DEBUG

调试,程序或系统调试信息等

注:等级为none表示不记录任何信息

c. 自定义系统日志

创建一个跟messages日志文件相同的日志规则,将日志记录到/var/log/my.log文件中

# 在/etc/rsyslog.conf创建和messages一样规则的配置
vim /etc/rsyslog.conf

# 重启rsyslog服务
systemctl restart rsyslog

# 查看my.log
cat /var/log/my.log

# 查看系统的messages日志文件
cat /var/log/messages

d. 日志格式
  • 时间标签:消息发出的日期和时间
  • 主机名:生成消息的计算机的名称
  • 子系统名称:发出消息的应用程序的名称
  • 消息:消息的具体内容
4、用户日志

这种日志数据用于记录linux操作系统用户登录及退出系统的相关信息,包括用户名、登录的终端、登录时间、来源主机、正在使用的进程操作等。

在wtmp、btmp、lastlog等日志文件中,保存了系统用户登录、退出等相关的事件消息,但这些文件都是二进制的数据文件,不能直接使用cat、tail等文本查看工具进行浏览,需要使用who、w、users、last和lastb等命令获取日志信息。

查询当前登录的用户情况:

  • users、who、w命令

查询用户登录的历史记录:

  • last:用于查询成功登录到系统的用户记录
  • lastb:用于查询登录失败的用户记录,也可以直接从安全日志文件/var/log/secure中获得相关信息
5、程序日志

有些应用程序会选择由自己独立管理一份日志文件,而不是交给rsyslog服务管理,用于记录本程序运行过程中的各种事件信息。由于这些程序只负责管理自己的日志文件,因此不同程序使用的日志记录格式可能会存在较大的差异。

在Linux系统中,还有相当一部分应用程序没有使用rsyslog服务来管理日志,而是由程序自己维护日志记录。例如,httpd网站服务程序使用两个日志文件access_log和error_log分别记录客户访问事件和错误事件,不同应用程序的日志记录格式差别较大,且没有严格使用统一的格式。

如果程序使用yum安装,日志文件默认保存在/var/log目录下,如果采用源码安装,默认保存在安装目录下log目录,日志路径可以修改。

6、logrotate 日志切割

日志文件包含了关于系统中发生的事件的有用信息,在排障过程中或者系统性能分析时经常被用到。对于忙碌的服务器,日志文件大小会增长极快,服务器会很快消耗磁盘空间。

logrotate可以自动对日志进行截断(或轮循)、压缩以及删除旧的日志文件

a. 日志切割作用
  • 防止日志文件过大
  • 定期删除旧日志文件
b. 查看 logrotate.conf

cat /etc/logrotate.conf | grep -v "^#" | grep -v "^$"

weekly												#每周一轮滚
rotate 4											#保留4个备份
create												#创建新的空日志文件代替旧文件
dateext												#使用日期为文件名后缀,禁用此项默认以数字为后缀
include /etc/logrotate.d			#加载指定目录下配置文件,此目录下保存日志策略
/var/log/wtmp {								#日志文件路径及其个性化轮转策略设置
    monthly										#每月一轮滚
    create 0664 root utmp			#创建的新日志文件权限、属主 、属组
	minsize 1M									#文件最小容量
    rotate 1									#保留1个备份
}
/var/log/btmp {			
    missingok									#在日志轮循期间,任何错误将被忽略
    monthly
    create 0600 root utmp
    rotate 1
}
a. 设置轮滚策略

创建配置文件:vim /etc/logrotate.d/myrotate

/var/log/my.log  {
     daily         #每天一轮滚
     missingok     #丢了也不报错
     nodateext     #不使用日期为后缀,即用数字为后缀
     create	     	 #创建新文件
     rotate 2      #保留2个备份
     compress      #启用压缩(后缀为.gz)
}

测试轮滚:logrotate -fv /etc/logrotate.d/myrotate

  • -f 是强制轮滚
  • -v 显示过程

查看日志文件列表ls /var/log/my.log*

  • 注意:日志文件名后缀的数字越大,文件越旧
  • 19
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值