Linux学习(日志管理)

基本介绍

  • 日志文件是重要的系统信息文件,其中记录了许多重要的系统事件,包括用户的登录信息、系统的启动信息、系统的安全信息、邮件相关信息、各种服务相关的信息等。

  • 日志对于安全来说也很重要、它记录了系统每天发生的各种事情,通过日志来检查错误发生的原因,或者受到攻击时攻击者留下的痕迹。

  • 可以这样理解日志是记录重大事件的工具

系统常用的日志

系统日志文件

/var/log/目录就是系统日志文件的保存位置,看张图

系统常用的日志

日志文件说明
/var/log/boot.log系统启动日志
/var/log/cron记录与系统定时任务相关的日志
/var/log/cups记录打印信息的日志
/var/log/dmesg记录了系统在开机时内核自检的信总,也可以使用dmesg命令直接查看内核自检信息
/var/log/btmp记录错误登录的日志。这个文件是二进制文件,不能直接用vi查看,而要使用lastb命令查看。命令如下:lastb
/var/log/lasllog记录系统中所有用户最后一次的登录时间的日志,这个文件也是二进制文件,要使用lastb命令查看
/var/log/mailog记录邮件信息的日志
/var/log/message记录系统重要信息的日志。这个日志文件会记录Linux系统的绝大多数重要信息。如果系统出现问题,首先要检查的就应该是这个日志文件
/var/log/secure记录验证和授权信息的信息,只要涉及账户和密码的程序都会记录,比如系统的登录、ssh的登录、su切换用户、sudo授权,甚至添加用户和修改用户密码都会记录在这个日志文件中
/var/log/wtmp永久记录所有用户的登录、注销信息,同时记录系统的启动、重启、关机事件。是二进制文件。要使用lastb命令查看
/var/log/ulmp记录当前已经登录的用户信息。这个文件会随着用户的登录和注销而不断变化,只记录当前登录用户的信息,这个文件不能用vi查看,而要使用w、who、user等命令查看

日志管理器 rsyslogd

CenOS7.6日志服务是rsyslogd,CenOS6.x日志服务是syslogdrsyslogd功能更强大。rsyslogd的使用、日志文件的格式,和syslogd服务兼容的。

原理示意图:

rsyslogd基本指令

# 查询Linux的rsyslogd服务是否启动
ps aux | grep "rsyslog" | grep -v "grep"
# 查询rsyslogd服务的自启动状态
systemctl list-unit-files | grep rsyslog
# 所有服务及服务启动状态
systemctl list-unit-files 

rsyslog.conf配置文件说明(所在目录为/etc/rsyslog.conf)

配置文件:/etc/rsyslog.conf

编辑文件时的格式为:

*.*      存放日志文件
# 其中第一个*代表日志类型,第二个*代表日志级别

如图:

日志类型分为:

 
auth     #pam产生的日志
authpriv     #ssh、ftp等登录信息的验证信息
corn     #时间任务相关
kern     #内核
lpr     #打印
mail     #邮件
mark(syslog)-rsyslog     #服务内部的信息,时间标识
news     #新闻组
user     #用户程序产生的相关信息
uucp     #unix to nuix copy主机之间相关的通信
local 1-7     #自定义的日志设备

日志级别:

debug     #有调试信息的,日志通信最多
info     #─般信息日志,最常用
notice     #最具有重要性的普通条件的信息
warning     #警告级别
err     #错误级别,阻止某个功能或者模块不能正常工作的信息
crit     #严重级别,阻止整个系统或者整个软件不能正常工作的信息
alert     #需要立刻修改的信息
emerg     #内核崩溃等重要信息
none     #什么都不记录
# 注意:从上到下,级别从低到高,记录信息越来越少

由日志服务rsyslogd记录的日志文件,日志文件的格式包含以下4列:

  • 事件产生的时间

  • 产生事件的服务器的主机名

  • 产生事件的服务名或程序名

  • 事件的具体信息

日志查看实例

cat /var/log/secure | grep sshd

自定义日志服务

输出所有日志内容输出到wqj.log中


# 编辑日志服务配置文件
vim /etc/rsyslog.conf
# 添加配置
*.*  /var/log/wqj.log
# 生成日志文件
> /var/log/wqj.log

在这里插入图片描述

日志轮替

基本介绍

日志轮替就是把旧的日志文件移动并改名,同时建立新的空日志文件,当旧日志文件超过保存的范围之后,就进行删除

日志轮替文件命名

  • centos7使用logrotate进行日志轮替管理,要想改变日志轮替文件名字,通过/etc/logrotate.conf配置文件中"dateext"参数

  • 如果配置文件中有"dateext"参数,那么日志会用日期来作为日志文件的后缀,例如“secure-20201010”。这样日志名不会重叠,也就不需要日志文件的改名了,只需要指定保存日志个数,删除多余的日志文件即可

  • 如果配置文件中没有"dateext"参数,日志文件就需要进行改名了。当第一次进行日志轮替时,当前的”secure”日志会自动改名为"secure.1",然后新建“secure”日志,用来保存新的日志。但第二次进行日志轮替时,”secure.1”会自动改名为"secure.2",当前的“secure”日志会自动改名为"secure.1",然后也会新建”secure”日志,用来保存新的日志文件,依次类推

logrotate配置文件

/etc/logrotate.conf为logrotate的全局配置文件


# rotate log files weekly
,每周对日志文件进行一次轮替
weekly

# keep 4 weeks worth of backlogs
,共保存4份日志文件,当建立新的日志文件时,旧的将会被删除
rotate 4

# create new (empty) log files after rotating old ones
,创建新的空的日子时,旧的将会被删除
create

# use date as a suffix of the rotated file
,使用日期作为日志轮替文件的后缀
dateext

# uncomment this if you want your log files compressed
,日志文件是否压缩。如果取消注释,
# 则日志会在转储的同时进行压缩
#compress

# RPM packages drop log rotation information into this directory
# 包含/etc/logrotate.d/目录中所有的子配置文件。也就是说会把这个目录中的所有子配置文件读取进来
include /etc/logrotate.d
# 以下是单独配置,centos8的配置中没有下面的配置,这里是做说明使用
/var/log/btmp{
  missingok # 如果日志不存在,这忽略该日志的警告
  monthly
  create 0600 root utmp
  rotate 1
}
/var/log/wtmp{
  monthly # 每月对日志文件进行一次校验
  create 0664 root utmp # 建立新的日志文件,权限是0664,所有者是root,所属组是utmp组
  minsize 1m 
  minsize 1m  # 日志文件最小轮替大小是 1MB 。也就是日志一定要超过1MB 才会轮替,否则就算时间达到一个月,也不进行日志转储
  rotate 1 # 仅保留一个日志备份。也就是只有 wtmp和 wtmp.1日志保留而已
}

参数说明:

参数参数说明
daily日志的轮替周期是每天。
weekly日志的轮替周期是每周。
monthly日志的轮替周期是每月。
rotate 数字保留的日志文件的个数。0指没有备份。
compress日志轮替时,旧的日志进行压缩。
create mode owner group建立新日志,同时指定新日志的权限与所有者和所属组。如create 0600 root utmp。
mail address当日志轮替时,输出的内容通过邮件发送到指定的邮件地址。如mail xxxx@lamp.net。
missingok如果日志不存在,则忽略该日志的警告信息。
notifempty如果日志为空文件,则不进行日志轮替。
minsize 大小日志轮替的最小值。也就是日志一定要达到这个最小值才会轮替,否则就算时间达到也不轮替。
size 大小日志只有大于指定大小才进行日志轮替,而不是按照时间轮替。如size 100k。(也就是只按大小,不按时间)
dateext使用日期作为日志轮替文件的后缀。如secure-20200616。
sharedscripts在此关键字之后的脚本只执行一次。(要使用下面两个参数,该参数一定要使用)
prerotate/endscript在日志轮替之前执行脚本命令。endscript标示prerotate脚本结束。
postrotate/endscript在日志轮替之后执行脚本命令。endscript标示postrotate脚本结束。

这些参数中较为不好理解的应该就是prerotate/endscriptpostrotate/endscript参数了,我们利用"man logrotate"中的列子来解释下这两个参数。例如:

# 日志轮替的是/var/log/httpd/中RPM包安装的apache正确访问日志和错误日志。
/var/1og/httpd/access.log
/var/1og/httpd/error.log
{
    # 轮替5次。
    rotate 5
    # 信息发送到指定邮箱。
    mail www@sina.com
    # 日志大于100KB时才进行日志轮替,不再按照时间轮替。
    size 100k
    # 以下脚本只执行一次。
    sharedscripts
    # 在日志轮替结束之后,执行以下脚本。
    postrotate
        # 重启apache服务的相关服务。
        /usr/bin/killall -HUP httpd
    # 脚本结束。
    endscript
}

把自己的日志加入日志轮替

  • 第一种方法是直接在/etc/logrotate.conf配置文件中写入该日志的轮替策略

  • 第二种方法是在/etc/logrotate.d/目录中新建立该日志的轮替文件,在轮替文件中写入正确的轮替策略,因为该目录的文件都会被“include”到主配置文件中,所以也可以把日志加入轮替

注意:推荐使用第二种方法,因为系统中需要轮替的日志非常多,如果全部直接写入到/etc/logrotate.conf配置文件中,那么这个文件的可管理性就会非常差,不利于文件的维护

/etc/logrotate.d/配置轮替文件一览

日志轮替原理

日志轮替之所以可以在指定的时间备份日志,是依赖系统定时任务。在/etc/cron.daily/目录,就会发现这个目录中是有logrotate文件(可执行),logrotate通过这个文件依赖定时任务执行的,以下是脚本内容:

/usr/sbin/logrotate /etc/logrotate.conf
EXITVALUE=$?
if [ $EXITVALUE != 0 ]; then
    /usr/bin/logger -t logrotate "ALERT exited abnormally with [$EXITVALUE]"
fi
exit $EXITVALUE

查看内存日志(journalcl命令)

journalcl可以查看内存日志,这里我们看看常用的指令

journalctl  ##查看全部
journalctl -n 3  ##查看最新三条
journalctl --since 19:00 --until 19:10:10 ##查看起始时间到结束时间的日志可加日期
journalctl -p err ##报错日志
journalctl -o verbose ##日志详细内容
journalctl _PID=1245 _COMN=sshd ##查看包含这些参数的日志(再详细日志中查看)
或者journalctl | grep sshd

注意:journalctl 查看的是内存日志,重启清空

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

five-five

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值