LINUX日志分析

本文详细介绍了Linux系统的日志管理,包括logrotate的日志切割、dmesg命令的使用、journalctl的常见操作,以及grep、awk和sed三个命令在日志分析中的应用。文章通过实例演示了如何利用这些工具进行日志查看、过滤和处理,帮助系统管理员更好地理解和管理Linux日志。
摘要由CSDN通过智能技术生成

Linux系统拥有非常灵活和强大的日志功能,可以保存几乎所有的操作记录,并可以从中检索出我们需要的信息。 Linux系统下所有的日志信息都保存在/var/log/目录下,目录配置文件在/etc/rsyslog.conf。

日志文件

说明

/var/log/cron

记录了系统定时任务相关的日志

/var/log/cups

记录打印信息的日志

/var/log/dmesg

记录了系统在开机时内核自检的信息,也可以使用dmesg命令直接查看内核自检信息

/var/log/mailog

记录邮件信息

/var/log/message

记录系统重要信息的日志。这个日志文件中会记录Linux系统的绝大多数重要信息,如果系统出现问题时,首先要检查的就应该是这个日志文件。

/var/log/btmp

记录错误登录日志,这个文件是二进制文件,不能直接vi查看,而要使用lastb命令查看。

/var/log/lastlog

记录系统中所有用户最后一次登录时间的日志,这个文件是二进制文件,不能直接vi/vim,而要使用lastlog命令查看

/var/log/wtmp

永久记录所有用户的登录、注销信息,同时记录系统的启动、重启、关机事件。同样这个文件也是一个二进制文件,需要使用last命令来查看。

/var/log/utmp

记录当前已经登录的用户信息,这个文件会随着用户的登录和注销不断变化,只记录当前登录用户的信息。同样这个文件不能直接vi,而要使w,who,users等命令来查询

/var/log/auth.log

记录验证和授权方面的信息,只要涉及账号和密码的程序都会记录,比如SSH登录,su切换用户,sudo授权,甚至添加用户和修改用户密码都会记录在这个日志文件中

/var/log/Xorg.0.log

记录Xorg启动和运行过程中的各种事件、错误和警告信息

/var/log/syslog

记录系统文件信息包含了来自不同来源的系统日志消息,如操作系统事件、程序日志、安全日志等。

/var/log/daemon.log

记录系统守护进程服务的日志信息

/var/log/dpkg.log

记录dpkg安装软件部的信息

/var/log/journal

它存储了 systemd-journald 服务生成的系统日志。systemd-journald 是一个现代的系统日志记录服务,用于收集和管理系统日志消息

日志切割

logrotate 程序是一个日志文件管理工具。用于分割日志文件,删除旧的日志文件,并创建新的日志文件,起到“转储”作用。

logrotate配置文件如下:

/etc/logrotate.conf
/etc/logrotate.d/

logrotate.conf 才主要的配置文件,logrotate.d 是一个目录,该目录里的所有文件都会被主动的读入/etc/logrotate.conf中执行。如果 /etc/logrotate.d/ 里面的文件中没有设定一些细节,则会以/etc/logrotate.conf这个文件的设定来作为默认值。Logrotate是基于cron来运行的,其脚本是/etc/cron.daily/logrotate,日志轮转是系统自动完成的。实际运行时,Logrotate会调用配置文件/etc/logrotate.conf。可以在/etc/logrotate.d目录里放置自定义好的配置文件,用来覆盖Logrotate的缺省值。

logrotate.sh脚本:

#!/bin/sh
# skip in favour of systemd timer
if [ -d /run/systemd/system ]; then
exit 0
fi
# this cronjob persists removals (but not purges)
if [ ! -x /usr/sbin/logrotate ]; then
exit 0
fi
/usr/sbin/logrotate /etc/logrotate.conf
EXITVALUE=$?
if [ $EXITVALUE != 0 ]; then
/usr/bin/logger -t logrotate "ALERT exited abnormally with [$EXITVALUE]"
fi
exit $EXITVALUE

如果不使用cron自动执行日志轮转,想手动强制切割日志,需要加-f参数;不过执行前最好通过Debug选项来验证-d参数:

# /usr/sbin/logrotate -f /etc/logrotate.d/message
# /usr/sbin/logrotate -d -f /etc/logrotate.d/message

logrotate 命令格式:

logrotate [OPTION...] <configfile>
-d, --debug :debug模式,测试配置文件是否有错误。
-f, --force :强制转储文件。
-m, --mail=command :压缩日志后,发送日志到指定邮箱。
-s, --state=statefile :使用指定的状态文件。
-v, --verbose :显示转储过程。

查看各log文件的具体执行情况:

cat /var/lib/logrotate/status

切割介绍:

以系统日志/var/log/message做切割简单说明:

第一次执行完rotate(轮转)之后,原本的messages会变成messages.1,而且会制造一个空的messages给系统来储存日志;

第二次执行之后,messages.1会变成messages.2,而messages会变成messages.1,又造成一个空的messages来储存日志;

如果仅设定保留三个日志(即轮转3次)的话,那么执行第三次时,则 messages.3这个档案就会被删除,并由后面的较新的保存日志所取代!也就是会保存最新的几个日志。

日志轮换几次,这个是根据配置文件中的dateext 参数来判定的。

logrotate.conf配置:

# cat /etc/logrotate.conf
# 底下的设定是 "logrotate 的默认值" ,如果別的文件设定了其他的值,
# 就会以其它文件的设定为主
weekly //默认每一周执行一次rotate轮转工作
rotate 4 //保留多少个日志文件(轮转几次).默认保留四个.就是指定日志文件删除之前轮转的次数,0 指没有备份
create //自动创建新的日志文件,新的日志文件具有和原来的文件相同的权限;因为日志被改名,因此要创建一个新的来继续存储之前的日志
dateext //这个参数很重要!就是切割后的日志文件以当前日期为格式结尾,如xxx.log-20240117,如果注释掉,切割出来是按数字递增,即 xxx.log-1格式
compress //是否通过gzip压缩转储以后的日志文件,如xxx.log-20240117.gz ;如果不需要压缩,注释掉就行

include

  • 32
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值