日志管理
概述
1、日志文件记录系统事件,包括用户的登录信息、系统的启动信息、系统的安全信息、邮件相关信息、各种服务相关信息等
2、通过日志来检查错误发生的原因,或者受到攻击时攻击者留下的痕迹
系统日志文件
1、保存位置:/var/log/
2、系统常用日志
(1)/var/log/boot.log:系统启动日志
(2)/var/log/cron:记录与系统定时任务相关的日志
(3)/var/log/cups/:记录打印信息的日志
(4)/var/log/dmesg:记录系统在开机时内核自检的信总,也可以使用 dmesg 命令直接查看内核自检信息
(5)/var/log/btmp:记录错误登录的日志,该文件为二进制文件,不能直接使用 Vi 查看,而要使用 lastb 命令查看
(6)/var/log/lasllog:记录系统中所有用户最后一次的登录时间的日志,该文件为二进制文件,要使用 lastlog 命令查看
(7)/var/log/mailog:记录邮件信息的日志
(8)/var/log/message:记录系统重要消息的日志,该日志文件记录 Linux 系统的绝大多数重要信息,如果系统出现问题,首先检查该日志文件
(9)/var/log/secure:记录验证和授权方面的信息,只要涉及账户和密码的程序都会记录,比如系统登录、ssh 登录、su 切换用户、sudo 授权,添加用户、修改用户密码都会记录在这个日志文件中
(10)/var/log/wtmp:永久记录所有用户的登录、注销信息,同时记录系统的后动、重启、关机事件,为二进制文件,要使用 last 命令查看
(11)/var/tun/ulmp:记录当前已经登录的用户的信息,该文件会随着用户的登录和注销而不断变化,只记录当前登录用户的信息,该文件不能用 V i查看,而要使用 w、who、users 等命令查看
日志管理服务
1、CentOS 7.6 日志服务为 rsyslogd
2、ps aux | grep "rsyslog" | grep -v "grep":查询 Linux 中的 rsyslogd 服务是否启动
3、systemctl list-unit-files | grep rsyslog:查询 rsyslogd 服务的自启动状态
4、配置文件:/etc/rsyslog.conf
(1)编辑文件时的格式:*.*
(2)第一个 * 为日志类型,第二个 * 为日志级别
5、日志类型
(1)auth:pam 产生的日志
(2)authpriv:ssh、ftp 等登录信息的验证信息
(3)corn:时间任务相关
(4)kern:内核
(5)lpr:打印
(6)mail:邮件
(7)mark(syslog)-rsyslog:服务内部的信息,时间标识
(8)news:新闻组
(9)user:用户程序产生的相关信息
(10)uucp:unix to nuix copy主机之间相关的通信
(11)local 1-7:自定义的日志设备
6、日志级别
(1)从上到下,级别越高,记录信息越少
(2)debug:有调试信息的,日志通信最多
(3)info:一般信息日志,最常用
(4)notice:最具有重要性的普通条件的信息
(5)warning:警告级别
(6)err:错误级别,阻止某个功能或者模块不能正常工作的信息
(7)crit:严重级别,阻止整个系统或者整个软件不能正常工作的信息
(8)alert:需要立刻修改的信息
(9)emerg:内核崩淡等重要信息
(10)none:什么都不记录
7、由日志服务 rsyslogd 记录的日志文件,日志文件的格式包含以下 4 列
(1)事件产生的时间
(2)产生事件的服务器的主机名
(3)产生事件的服务名或程序名
(4)事件的具体信息
8、自定义日志
(1)添加日志文件:/var/log/自定义日志.log
(2)编辑 /etc/rsyslog.conf,添加自定义文件
(3)日志类型、日志级别,决定该日志获取的信息
日志轮替
1、把旧的日志文件移动并改名,同时建立新的空日志文件,当旧日志文件超出保存的范围之后,就会进行删除
2、文件命名
(1)CentOS 7 使用 logrotate 进行日志轮替管理,要想改变日志轮替文件名字,通过 /etc/logrotate.conf 配置文件中 dateext 参数
(2)如果配置文件中有 dateext 参数,那么日志会用日期来作为日志文件的后缀,例如 secure-20201010,这样日志文件名不会重叠,也就不需要日志文件的改名,只需要指定保存日志个数,删除多余的日志文件即可
(3)如果配置文件中没有 dateext 参数,日志文件就需要进行改名,当第一次进行日志轮替时,当前 secure 日志自动改名为 secure.1,然后新建 secure 日志,用来保存新日志,当第二次进行日志轮替时,secure.1 自动改名为 secure.2,然后新建 secure 日
志,用来保存新的日志,以此类推
3、全局配置文件:/etc/logrotate.conf
(1)第一部分:默认设置,如果需要转储的日志文件没有特殊配置,则遵循默认设置的参数
(2)第二部分:读取 /etc/logrotate.d/ 目录中的日志轮替的子配置文件,即在 /etc/logrotate.d/ 目录中的所有符合语法规则的子配置文件也会进行日志轮替
(3)第三部分:对 wtmp 和 btmp 日志文件的轮替进行设定,如果此设定和默认参数冲突,则当前设定生效
#每周对日志文件进行一次轮替
weekly
#共保存4份日志文件,当建立新的日志文件时,旧的将会被删除
rotate 4
#在日志轮替后,创建新的空日志文件
create
#使用日期作为日志轮替文件的后缀
dateext
#日志文件是否压缩。如果取消注释,则日志会在转储的同时进行压缩
#compress
#包含 /etc/logrotate.d/ 目录中所有的子配置文件,即读取目录中所有子配置文件
include /etc/logrotate.d
#下面是单独设置,优先级更高
/var/log/wtmp {
#每月对日志文件进行一次轮替
monthly
#建立的新日志文件,权限是 0664 ,所有者是 root ,所属组是 utmp 组
create 0664 root utmp
# 日志文件最小轮替大小是 1MB 。也就是日志一定要超过 1MB 才会轮替,否则就算时间达到一个月,也不进行日志转储
minsize 1M
# 仅保留一个日志备份,即保留 wtmp 和 wtmp.1 日志
rotate 1
}
/var/log/btmp {
#如果日志不存在,则忽略该日志的警告信息
missingok
monthly
create 0600 root utmp
rotate 1
}
4、参数
(1)daily:日志的轮替周期是每天
(2)weekly:日志的轮替周期是每周
(3)monthly:日志的轮替周期是每月
(4)rotate 数字:保留的日志文件的个数,0 指没有备份
(5)compress:日志轮替时,压缩旧的日志
(6)create mode owner group:建立新日志,同时指定新日志的权限与所有者和所属组,如:create 0600 root utmp
(7)mail address:当日志轮替时,输出内容通过邮件发送到指定的邮件地址
(8)missingok:如果日志不存在,则忽略该日志的警告信息
(9)notifempty:如果日志为空文件,则不进行日志轮替
(10)minsize 大小:日志轮替的最小值,即日志一定要达到这个最小值才会轮替,否则就算时间达到也不轮替
(11)size 大小:日志只有大于指定大小才进行日志轮替,而不是按照时间轮替,如:size 100k
(12)dateext:使用日期作为日志轮替文件的后缀,如:secure-20130605
(13)sharedscripts:在此关键字之后的脚本只执行一次
(14)prerotate/endscript:在日志轮替之前执行脚本命令,endscript 标识 prerotate 脚本结束
(15)postrotate/endscript:在日志轮替之后执行脚本命令,endscrip i标识 postrotate 脚本结束
5、自定义日志加入日志轮替
(1)方式一:直接在 /etc/logrotate.conf 配置文件中写入该日志的轮替策略,从而把日志加入轮替
(2)方式二:在 /etc/logrotate.d/ 目录中新建立该日志的轮替文件,在该轮替文件中写入正确的轮替策略,因为该目录中的文件都会被包含到主配置文件中,所以也可以把日志加入轮替
(3)建议方式二,因为系统中需要轮替的日志非常多,如果全部直接写入 /etc/logrotate.conf 配置文件,那么这个文件的可管理性就会非常差,不利于此文件的维护
6、机制:在 /etc/cron.daily/ 目录,存在 logrotate 文件(可执行),日志轮替通过该文件依赖定时任务执行
内存日志
1、重启会清空内存日志
2、journalctl:查看全部内存日志
3、journalctl -n x:查看最新 x 条
4、journalctl --since 日期时间 --until 日期时间:查看起始时间到结束时间的日志
5、journalctl -p err:报错日志
6、journalctl -o verbose:日志详细内容
7、journalctl 参数=值 或 journalctl | grep 参数:查看包含这些参数的日志,在详细日志查看
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战