日志简介以及常用日志
日志是重要的系统信息文件,记录了许多重要的系统事件。在检查错误和受攻击时常用。 绝大多数的日志文件放在 /var/log/ 下
常用日志:
- boot.log 系统启动日志
- cron 系统定时任务日志
- lastlog 记录所有用户最后一次登录的日志 该二进制文件需要直接用
lastlog 命令查看 - mailog 记录邮件信息日志
- message 系统重要消息日志 系统出错时首先查看
- secure 记录验证和授权方面的信息 涉及系统登录 ssh用户 su切换用户 sudo授权
- ulmp 记录当前用户的信息 需要用
w .who .user 等命令直接查看
日志管理服务rsyslogd
该服务是记录日志的一个后台程序
基本指令
ps -aux | grep rsyslogd 查询rsyslogd是否启动systemctl list-unit-files | grep rsyslog 查询rsyslogd的自启动状态
配置文件
/etc/rsyslogd.conf 配置文件 这里记录了rsyslogd服务信息以及日志级别 编辑文件的格式为:*.* 第一个*表示日志类型,第二个*表示日志级别
可以看到左半边是需要记录的日志内容 右半边是记录的日志文件地址
日志类型:
- auth:pam产生的日志
- authpriv:ssh ftp等登录信息的验证信息
- corn:时间任务相关
- kern:内核相关
- lpr:打印
- mail:邮件
- mark(syslog)-rsyslog:服务内部信息 时间标识
- news:新闻组
- user:用户程序产生的相关信息
- uucp:unix to nuix copy主机之间相关的通信
- loc 1-7:自定义的日志设备
日志级别:(从上到下级别逐渐增高 记录信息逐渐减少)
- debug:调试信息
- info:一般信息日志 最常用
- notice:最具有重要性的普通条件的信息
- warning:警告级别
- err:错误级别 阻止某个功能或者模块不能正常工作的信息
- crit:严重级别 阻止整个系统或者整个软件不能正常工作的信息
- alert:需要立刻修改的信息
- emerg:内核崩溃等重要信息
- none:什么都不记录
日志文件信息详解
日志文件格式主要包含以下四列:
- 事件产生的时间
- 产生事件的服务器的主机名
- 产生事件的服务名或程序名
- 事件的具体信息
自定义日志服务
了解了日志配置文件和日志服务的相关信息,我们就可以自定义日志服务,将自己关心的日志放入指定的日志文件里了。
步骤:
- 在/var/log/ 中新建一个日志文件wrssh.log
- 打开 /etc/rsyslogd.conf 按照配置文件的格式 添加一行
*.* /var/log/wrssh.log 保存并退出 (当然也可以直接执行第二步 它会自动创建一个日志文件同第一步 )
日志轮替logrotate
就是按照一定的规则,将一些不需要的旧的文件删掉。
配置文件
/etc/logrotate.conf 配置文件 可以对logrotate进行管理
这里有几个重要的默认参数:
- weekly:表示每周轮替一次
- rotate 4:表示同一个日志文件最多保存四个版本 多了会产出
- create:产生轮替之后生成一个新的空白的文件放在其后
- dateext:日志轮替文件名字的命名方式
- 如果配置文件中有dateext参数:日志会用日期作为日志文件的后缀,例如“message-20220801”
- 如果没用dateext:日志需要进行改名,当第一次日志轮替时,当前的“secure”改名为“secure.1”,然后新建“secure”日志用来保存新的日志。第二次日志轮替时,当前的“secure.1”会自动更名为“secure.2”,“secure”更名为“secure.1”,新建“secure”以保存新的日志。以此类推。
- include /etc/logrotate.d:可以将自定义的日志轮替规则写到这个文件里去
自定义日志轮替规则
格式:
日志文件地址 {
参数
}
参数:
- daily:轮替周期 每天
- weekly:轮替周期 每周
- monthly:轮替周期 每月
- rotate [num]:保存日志文件的个数
- compress:轮替时对旧日志进行压缩
- create mode owner group:建立新日志的同时指定权限 所有者 所属组
- mail address:日志轮替时输出内容通过邮件发送到指定的邮件地址
- missingok:如果日志不存在则忽略日志的警告信息
- notifempty:如果日志为空文件则不进行日志轮替
- minsize [size]:日志轮替的最小值 即超过该大小才会轮替 否则到达轮替周期也不会轮替
- size [size[:日志达到指定大小进行轮替 而不是按照轮替的时间周期
- dateext:使用日期作为日志轮替文件的后缀
- sharedscripts:在此关键字之后的脚本只执行一次
- prerotate/endscripts:在日志轮替之前执行脚本命令
- postrotate/endscripts:在日志轮替之后执行脚本命令
例如:
/var/log/btmp{
missingok
montly
creat 0664 zzz abc
minsize 1M
rotate 1
}
日志轮替的机制原理
日志轮替在指定的时间备份日志,依赖于系统定时任务。 可以在 /etc/cron.daily/ 中发现一个可执行文件logrotate
内存日志
一些日志是先写到内存日志里,还未写到文件里。重启之后会清空。
journalctl 查看所有的内存日志journalctl -n 3 查看最新3条journal --since 00:00 --until 00:10 查看区间时间内的日志 可加日期journalctl -p err 查看报错日志journalctl -o verbose 日志详细内容journalctl _PID=1245 _COMM=sshd 查看符合条件的日志
|