1. 日志文件是重要的系统信息文件,其中记录了许多重要的系统事件,包括用户的登录信息、系统的启动信息、系统的安全信息、邮件相关信息、各种服务相关信息等。<br />日志对于安全来说很重要,它记录了系统每天发生的各种事情,通过日志来检查错误发生的原因或者受到攻击时攻击者留下的痕迹;日志是用来记录重大事件的工具。<br />系统日志文件存放在/var/log目录下;![image.png](https://cdn.nlark.com/yuque/0/2021/png/23120162/1637581526059-d02b00f9-30d8-459a-a2ae-c00b68b1d7d4.png#clientId=u0fb571be-51ae-4&from=paste&height=162&id=ufed5ca84&margin=%5Bobject%20Object%5D&name=image.png&originHeight=162&originWidth=650&originalType=binary&ratio=1&size=62410&status=done&style=none&taskId=ua48fca82-da60-46d4-b52b-bf6410fc7c2&width=650)

一、系统常用的日志:

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

二、日志管理服务rsyslogd

CentOS7.6日志服务是rsyslogd,CentOS6.X日志服务是syslogd,rsyslogd功能更强大,rsyslogd的使用、日志文件的格式,和syslogd服务兼容。
查询Linux中的rsyslogd服务是否启动:
ps aux | grep “rsyslog” | grep -v “grep”
查询rsyslogd服务的自启动状态
systemctl list-unit-files | grep rsyslog
配置文件:/etc/rsyslog.conf
编辑文件时的格式为:. 存放日志文件
其中第一个代表日志类型,第二个代表日志级别
1、日志类型分为:

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

2、日志级别:

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

注意:从上到下,级别从低到高,记录信息越来越少。
由日志服务rsyslogd记录的日志文件,格式包含一下4列:

  1. 事件产生的时间
  2. 产生事件的服务器的主机名
  3. 产生事件的服务器名或程序名
  4. 事件的具体信息

    三、日志轮替

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

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

  6. 如果配置文件中有dateext参数,那么日志会用日期来作为日志文件的后缀,例如:secure-20211122。这样日志文件名不会重叠,也就不需要日志文件的改名,只需要指定保存日志个数,删除多余的日志文件即可。
  7. 如果配置文件中没有dateext参数,日志文件就需要进行改名,当第一次进行日志轮替时,当前的secure日志会自动改名为secure.1,然后新建secure日志,用来保存新的日志,当第二次进行日志轮替时,secure.1会自动改名为secure.2,当前的secure日志会自动改名为secure.1,然后会新建secure日志,用来保存新的日志,以此类推。

logrotate是一个linux系统日志的管理工具。可以对单个日志文件或者某个目录下的文件按时间/大小进行切割,压缩操作;指定日志保存数量;还可以在切割之后运行自定义命令。
logrotate是基于crontab运行的,所以这个时间点是由crontab控制的,具体可以查询crontab的配置文件/etc/anacrontab。系统会按照计划的频率运行logrotate,通常是每天。在大多数的Linux发行版本上,计划每天运行的脚本位于 /etc/cron.daily/logrotate。

配置文件介绍

Linux系统默认安装logrotate工具,它默认的配置文件在:
主配置文件: /etc/logrotate.conf
目录:/etc/logrotate.d/
logrotate 历史: /var/lib/logrotate.status
logrotate.conf 是 logrotate 的主配置文件,logrotate.d 是一个目录,该目录里的所有文件都会被主动的读入/etc/logrotate.conf中执行,另外,如果 /etc/logrotate.d/ 里面的文件中没有设定一些细节,则会以/etc/logrotate.conf这个文件的设定来作为默认值。
logrotate 定义日志信息配置选项:

  1. compress --> 压缩日志文件的所有非当前版本
  2. daily,weekly,monthly --> 按指定计划轮换日志文件
  3. delaycompress --> 压缩所有版本,除了当前和下一个最近的
  4. endscript --> 标记 prerotate postrotate 脚本的结束
  5. errors "emailid" --> 给指定邮箱发送错误通知
  6. missingok --> 如果日志文件丢失,不要显示错误
  7. notifempty --> 如果日志文件为空,则不轮换日志文件
  8. olddir "dir" --> 指定日志文件的旧版本放在 dir
  9. postrotate --> 引入一个在日志被轮换后执行的脚本
  10. prerotate --> 引入一个在日志被轮换前执行的脚本
  11. rotate 'n' --> 在轮换方案中包含日志的 n 个版本
  12. sharedscripts --> 对于整个日志组只运行一次脚本
  13. size='logsize' --> 在日志大小大于 logsize(例如 100K4M)时轮换

logrotate 命令格式:

  1. logrotate [OPTION...] <configfile>
  2. -d, --debug debug模式,测试配置文件是否有错误。
  3. -f, --force :强制转储文件。
  4. -m, --mail=command :压缩日志后,发送日志到指定邮箱。
  5. -s, --state=statefile :使用指定的状态文件。
  6. -v, --verbose :显示转储过程。
  1. #cat /etc/logrotate.conf
  2. weekly //默认每一周执行一次rotate轮转工作
  3. rotate 4 //保留多少个日志文件(轮转几次).默认保留四个.就是指定日志文件删除之前轮转的次数,0 指没有备份
  4. create //自动创建新的日志文件,新的日志文件具有和原来的文件相同的权限;因为日志被改名,因此要创建一个新的来继续存储之前的日志
  5. dateext //这个参数很重要!就是切割后的日志文件以当前日期为格式结尾,如xxx.log-20131216这样,如果注释掉,切割出来是按数字递增,即前面说的 xxx.log-1这种格式
  6. compress //是否通过gzip压缩转储以后的日志文件,如xxx.log-20131216.gz ;如果不需要压缩,注释掉就行
  7. include /etc/logrotate.d
  8. # 将 /etc/logrotate.d/ 目录中的所有文件都加载进来
  9. /var/log/wtmp { //仅针对 /var/log/wtmp 所设定的参数
  10. monthly    //每月一次切割,取代默认的一周
  11. minsize 1M      //文件大小超过 1M 后才会切割
  12. create 0664 root utmp //指定新建的日志文件权限以及所属用户和组
  13. rotate 1    //只保留一个日志.
  14. }
  15. # 这个 wtmp 可记录用户登录系统及系统重启的时间
  16. # 因为有 minsize 的参数,因此不见得每个月一定会执行一次喔.要看文件大小。

四、查看内存日志

journalctl 可以查看内存日志,以下为常用的命令:
journalctl ##查看全部
journalctl -n 3 ##查看最新3条
journalctl —since 19:00 —until 19:10:10 #查看起始时间到结束时间的日志,可加日期
journalctl -p err ##报错日志
journalctl -o verbose ##日志详细内容
journalctl _PID=1234 _COMM=sshd ##查看包含这些参数的日志
journalctl | grep sshd ##同上
注意:journalctl 查看的是内存日志,重启清空。