日志管理

概述

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 参数:查看包含这些参数的日志,在详细日志查看

posted @   半条咸鱼  阅读(508)  评论(0编辑  收藏  举报
(评论功能已被禁用)
相关博文:
阅读排行:
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
点击右上角即可分享
微信分享提示