ToB企服应用市场:ToB评测及商务社交产业平台

标题: Linux【实操篇】—— 日志管理 [打印本页]

作者: 海哥    时间: 2022-6-24 07:16
标题: Linux【实操篇】—— 日志管理

目录
1. 日志介绍
2. 日志管理服务 rsyslogd
3. 配置文件 /etc/rsyslog.conf
4. 查看日志文件中的日志
5. 自定义日志
6. 日志轮替
什么是日志轮替
日志轮替配置文件
配置文件中各代码段参数含义
为自己的日志单独指定轮替规则
日志轮替机制
查看内存日志

1. 日志介绍

日志文件是重要的信息系统文件,其中记录了许多重要的系统事件,包括用户的登录信息、系统的启动信息、系统的安全信息、邮寄相关信息、各种服务相关信息。不仅如此,日志对于安全来说也很重要,它记录了系统每天发生的各种事情,可以通过日志来检查错误发生的原因或者受到攻击时攻击者留下的痕迹。总的来说,日志就是记录重大事件的工具
Linux 操作系统中常用的日志保存于 /var/log/ 目录中:
   
2. 日志管理服务 rsyslogd

CentOS 6.x 版本的日志服务是 syslogd;CentOS 7.x 版本的日志服务是 rsyslogd,二者是兼容的。这里使用的 rsyslogd,它的功能更加强大。rsyslogd 其实就是一个后台的程序/服务,来管理和操作系统中的日志。查询 Linux 中的 rsyslogd 服务是否启动使用命令 ps aux | grep "rsyslog" | grep -v "grep";

查询 rsyslogd 服务的自启动状态使用指令 systemctl list-unit-files | grep rsyslog;

3. 配置文件 /etc/rsyslog.conf

需要知道,rsyslogd 管理日志以及各个目录中日志的含义,都是由配置文件【/etc/rsyslog.conf】来规定的。编辑配置文件时的格式为 *.*,第一个 * 代表日志类型,第二个 * 代表日志级别。
日志类型authpam 产生的日志authprivssh、ftp 等登录信息的信息验证corn时间任务相关kern内核lpr打印mail邮件mark(syslog)-rsyslog服务内部的信息,时间标识news新闻组user用户程序产生的相关信息uucpunix to nuix copy 主机之间相关的通信local 1-7自定义的日志设备日志级别(从上到下,级别越来越高,记录信息越来越少)debug有调式信息的,日志通信最多info一般信息日志,最常用notice最具重要性的的         普通条件的信息warning警告级别err错误级别,阻止某个功能或者模块不能正常工作的信息crit严重级别,组织整个系统或者整个软件不能正常工作的信息alert需要立即修改的信息emerg内核崩溃等重要信息none什么都不记录4. 查看日志文件中的日志

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

如我们查看一下 /var/log/secure 日志;

5. 自定义日志

案例:在 /etc/rsyslog.conf 中添加一个日志文件 /var/log/mjj.log,当有事件发生时,该文件接收信息并保存。
  1. #进入配置文件
  2. [root@majinjian ~]# vim /etc/rsyslog.conf
复制代码
添加以下代码,意为将所有类型的日志添加至 mjj.log;

wq 保存后创建 mjj.log 文件,此时查看该文件是空的;
  1. [root@majinjian /]# > /var/log/mjj.log
复制代码

接下来使用命令 reboot 重启系统并扽古,再次查看 mjj.log 文件;

6. 日志轮替

什么是日志轮替

日志轮替就是把旧的日志文件移动并改名,同时建立新的空日志文件,当旧的日志文件超出保存的范围之后就会删除。
CentOS7 使用 logrotate 进行日志轮替管理,若想要改变日志轮替文件名字,修改 /etc/logrotate.conf 配置文件中的 dateext 参数。

日志轮替配置文件

/etc/logrotate.conf 文件是 logrotate 的全局配置文件,该文件内容如下:
  1. [root@majinjian logrotate.d]# cat /etc/logrotate.conf
  2. # see "man logrotate" for details
  3. # rotate log files weekly  每周对日志文件进行一次轮替(默认)
  4. weekly
  5. # keep 4 weeks worth of backlogs  共保存四份日志文件,当建立新的文件时旧的会被删除
  6. rotate 4
  7. # create new (empty) log files after rotating old ones  在日志轮替后创建新的空日志文件
  8. create
  9. # use date as a suffix of the rotated file  使用日期作为日志文件名的后缀
  10. dateext
  11. # uncomment this if you want your log files compressed  日志文件是否压缩,若取消注释日志会在转储的同时进行压缩
  12. #compress
  13. # RPM packages drop log rotation information into this directory
  14. # 包含 /etc/logrotate.d 目录中所有的子配置文件,也就是会读取所有文件
  15. include /etc/logrotate.d
  16. # 为某个日志单独设置规则/策略时使用以下语法
  17. # no packages own wtmp and btmp -- we'll rotate them here
  18. /var/log/wtmp {
  19.     monthly  #每月对日志文件进行一次轮替
  20.     create 0664 root utmp  #建立新的日志文件,权限是0664,所有者是root,所属组是utmp组
  21.         minsize 1M  #日志文件最小轮替大小是1M,也就是说日志日志要超过1M才会轮替
  22.     rotate 1  #仅保留一个日志备份,也就是说只有wtmp和wtmp.1保留
  23. }
  24. /var/log/btmp {
  25.     missingok  #如果日志不存在,忽略该日志的警告信息
  26.     monthly
  27.     create 0600 root utmp
  28.     rotate 1
  29. }
  30. # system-specific logs may be also be configured here.
  31. [root@majinjian logrotate.d]#
复制代码
配置文件中各代码段参数含义

参数含义daily日志的轮替周期是每天weekly日志的轮替周期是每周monthly日志的轮替周期是每月rotate 数字保留的日志文件的个数。0指没有备份compress日志轮替时,旧的日志进行压缩create mode owner group建立新日志,同时指定新日志的权限与所有者和所属组mail address当日志轮替时,输出内容通过邮件发送到指定的邮件地址missingok如果日志不存在,则忽略该日志的警告信息notifempty如果日志为空文件,则不进行日志轮替minsize大小日志轮替的最小值。也就是日志一定要达到这个最小值才会轮替,否则就算时间达到也不轮替size大小日志只有大于指定大小才进行日志轮替,而不是按照时间轮替dateext使用日期作为日志轮替文件的后缀sharedscripts在此关键字之后的脚本只执行一次prerotate/endscript在日志轮替之前执行脚本命令postrotate/endscript在日志轮替之后执行脚本命令可以单独为某个日志规定策略,也可以把某个日志文件的轮替规则写到 /etc/logrotate.d 目录中,如系统启动日志 boot.log 就是在此目录中:

为自己的日志单独指定轮替规则

在这里我们还是操作呢之前创建的日志文件 mjj.log;

为某个日志文件单独指定轮替规则有两种方式:
接下来我们使用第二种方法为 mjj.log 日志新建轮替文件 mjjlog,并加入自定义的规则;
  1. #创建轮替文件
  2. [root@majinjian logrotate.d]# vim mjjlog
  3. #创建规则
  4. /var/log/mjj.log
  5. {
  6.   missingok
  7.   daily
  8.   copytruncate
  9.   rotate 3
  10.   notifempty
  11. }
复制代码
保存后如下,此时该文件就会被全局配置文件所识别,按照指定规则对 mjj.log 日志进行轮替。

日志轮替机制

日志轮替之所以可以在指定的时间备份日志,是因为它依赖系统定时任务。在 /etc/cron.daily/ 目录中有一个文件 logrotate,日志轮替 logrotate 就是通过这个文件依赖定时执行任务的。

查看内存日志

在 Linux 中有一部分日志是先写到内存里的,这些日志是实时变化,跟系统内存相关。每次重启系统内存日志都会被清空。查看内存日志使用指令 journalctl
   

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4