系统相关
首页 > 系统相关> > 2021韩顺平图解Linux课程(全面升级)高级篇

2021韩顺平图解Linux课程(全面升级)高级篇

作者:互联网

第21章 Linux 高级篇-日志管理

  • 基本介绍
    日志文件是重要的系统信息文件,其中记录了许多重要的系统事件,包括用户的登录信息、系统的启动信息、系统的安全信息、邮件相关信息、各种服务相关信息等。这些信息有些非常敏感,所以在 Linux 中这些日志文件只有 root 用户可以读取。
    日志对于安全来说也很重要,它记录了系统每天发生的各种事情,通过日志来检查错误发生的原因,或者受到攻击时攻击者留下的痕迹。
    可以这样理解日志是用来记录重大事件的工具。
  • 系统常用的日志
    /var/log/ 目录就是系统日志文件的保存位置
日志文件 说明
/var/log/boot.log 系统启动日志
/var/log/cron 记录与系统定时任务相关的日志
/var/log/cups/ 记录打印信息的曰志
/var/log/dmesg 记录了系统在开机时内核自检的信总。也可以使用 dmesg 命令直接查看内核自检信息
/var/log/btmp 记录错误登陆的日志。这个文件是二进制文件,不能直接用Vi查看,而要使用 lastb 命令查看
/var/log/lasllog 记录系统中所有用户最后一次的登录时间的曰志。这个文件也是二进制文件。不能直接用Vi查看,而要使用lastlog命令查看
/var/log/mailog 记录邮件信息的日志
/var/log/message 记录系统里要佶息的日志.这个日志文件中会记录 Linux 系统的绝大多数重要信息。如果系统出现问题,首先要检查的应该就是这个日志文件
/var/log/secure 记录验证和授权方面的倍息,只要涉及账户和密码的程序都会记录,比如系统的登录、ssh 的登录、su 切换用户,sudo 授权,甚至添加用户和修改用户密码都会记录在这个日志文件中
/var/log/wtmp 永久记录所有用户的登陆、注销信息,同时记录系统的后动、重启、关机事件。同样,这个文件也是二进制文件.不能直接用Vi查看,而要使用 last 命令查看
/var/tun/ulmp 记录当前已经登录的用户的信息。这个文件会随着用户的登录和注销而不断变化,只记录当前登录用户的信息。同样,这个文件不能直接用Vi查看,而要使用 w、who、users 等命令查看

除系统默认的日志之外,采用 RPM 包方式安装的系统服务也会默认把日志记录在 /var/log/ 目录中(源码包安装的服务日志存放在源码包指定的目录中)。不过这些日志不是由 rsyslogd 服务来记录和管理的,而是各个服务使用自己的日志管理文档来记录自身的日志。以下介绍的日志目录在你的 Linux 上不一定存在,只有安装了相应的服务,日志才会出现。

日志文件 说明
/var/log/httpd/ RPM 包安装的apache取务的默认日志目录
/var/log/mail/ RPM 包安装的邮件服务的额外日志因录
/var/log/samba/ RPM色安装的Samba服务的日志目录
/var/log/sssd/ 守护进程安全服务目录

CentOS 7.6日志服务是 rsyslogd,CentOS 6.x 日志服务是 syslogd,rsyslogd 功能更强大。rsyslogd 的使用、日志文件的格式,和 syslogd 服务兼容的。

  • 查询 Linux 中的 rsyslogd 服务是否启动
    • ps aux | grep "rsyslog" | grep -v "grep"
  • 查询 rsyslogd 服务的自启动状态
    • systemctl list-unit-files | grep rsyslog
  • 配置文件:/etc/rsyslog.conf
    • 编辑文件时的格式:*.*,其中第一个 * 代表日志类型,第二个 * 代表日志类别
日志类型 说明
auth 安全和认证相关消息,pam 产生的日志(不推荐使用 authpriv 替代)
authpirv 安全和认证相关信息,ssh、ftp 等登录信息的验证信息(私有的)
cron 系统定时任务 crond 和 at 产生的日志
daemon 和各个守护进程相关的日志
ftp ftp 守护进程产生的日志
kern 内核产生的日志(不是用户进程产生的)
lpr 打印产生的日志
mail 邮件收发信息
news 与新闻服务器相关的日志
syslog 有syslogd服务产生的日志信息(虽然服务名称已经改了 rsyslogd 服务,但是很多配置都还是沿用了 syslogd 的,这里并没有修改服务名)
user 用户等级类别的日志信息
uucp uucp 子系统的日志信息,uucp 时早期 Linux 系统进行数据传递的协议,后来也经常用在新闻组服务中
local0-local7 为本地使用预留的服务
日志级别 说明
debug 一般的调试信息说明,日志通信最多
info 基本的通知信息
notice 普通信息,但是有一定的重要性
warning 警告信息,但是还不会影响到服务或系统的运行
err 错误信息,一般达到 err 等级的信息已经可以影响到服务或系统的运行了
crit 严重错误信息,比 err 等级还要严重,系统或整个软件不能正常工作
alert 需要立刻修改的信息,比 crit 还要严重,必须立即采取行动
emerg 内核崩溃等重要信息,系统已经无法使用了
none 什么都不记录

注意:日志级别从上到下,级别从低到高,记录信息越来越少,优先处理的等级就越高,危害就越大。

  • 由日志服务 rsyslogd 记录的日志文件,日志文件的格式包含以下4列:
    • 事件产生的时间
    • 发生事件的服务器的主机名
    • 产生事件的服务名或程序名
    • 事件的具体信息
  • 日志管理服务应用实例
    在 /etc/rsyslog.conf 中添加一个日志文件 /var/log/hsp.log,当有事件发送时,该文件会接收到信息并保存。
    • 在 /etc/rsyslog.conf 文件中增加如下命令。
*.*                         /var/log/hsp.log
  • 新建 /var/log/hsp.log 文件,重启系统,再查看该文件内容。
  • 基本介绍
    • 日志是重要的系统文件,记录和保存了系统中所有的重要事件。但是日志文件也需要进行定期的维护,因为日志文件是不断增长的,如果完全不进行日志维护,而任由其随意递增,那么用不了多久,我们的硬盘就会被写满。
    • 日志维护的最主要的工作就是把旧的日志文件删除,从而腾出空间保存新的日志文件。这项工作如果靠管理员手工来完成,那其实是非常烦琐的,而且也容易忘记。那么 Linux 系统是否可以自动完成日志的轮替工作呢?
    • logrotate 就是用来进行日志轮替(也叫日志转储)的,也就是把旧的日志文件移动并改名,同时创建一个新的空日志文件用来记录新日志,当旧日志文件超出保存的范围时就删除。
  • 日志轮替文件的命名规则
    • 日志轮替最主要的作用就是把旧的日志文件移动并改名,同时建立新的空日志文件,当旧日志文件超出保存的范围时就删除。那么,旧的日志文件改名之后,如何命名呢?主要依靠 /etc/logrotate.conf 配置文件中的“dateext”参数。
    • 如果配置文件中有“dateext”参数,那么日志会用日期来作为日志文件的后缀,如“secure-20130605”。这样日志文件名不会重叠,也就不需要对日志文件进行改名,只需要保存指定的日志个数,删除多余的日志文件即可。
    • 如果配置文件中没有“dateext”参数,那么日志文件就需要进行改名了。当第一次进行日志轮替时,当前的“secure”日志会自动改名为“secure.1”,然后新建“secure”日志,用来保存新的日志;当第二次进行日志轮替时,“secure.1”会自动改名为“secure.2”,当前的“secure”日志会自动改名为“secure.1”,然后也会新建“secure”日志,用来保存新的日志;以此类推。
  • 配置文件:/etc/logrotate.conf
    可以设置全局的日志轮替规则,当然也可以单独给某个日志文件指定策略。
    在这个配置文件中,主要分为三部分:
    • 第一部分是默认设置,如果需要转储的日志文件没有特殊配置,则遵循默认设置的参数;
    • 第二部分是读取 /etc/logrotate.d/ 目录中的日志轮替的子配置文件,也就是说,在 /etc/logrotate.d/ 目录中的所有符合语法规则的子配置文件也会进行日志轮替;
    • 第三部分是对 wtmp 和 btmp 日志文件的轮替进行设定,如果此设定和默认参数冲突,则当前设定生效(如 wtmp 的当前参数设定的轮替时间是每月,而默认参数的轮替时间是每周,则对 wtmp 这个日志文件来说,轮替时间是每月,当前的设定参数生效)。
  • logrotate 配置文件的主要参数
参数 参数说明
daily 日志的轮替周期是毎天
weekly 日志的轮替周期是每周
monthly 日志的轮控周期是每月
rotate 数宇 保留的日志文件的个数。0指没有备份
compress 当进行日志轮替时,对旧的日志进行压缩
create mode owner group 建立新日志,同时指定新日志的权限与所有者和所属组。如 create 0600 root utmp
mail address 当进行日志轮替时.输出内存通过邮件发送到指定的邮件地址
missingok 如果日志不存在,则忽略该日志的警告信息
nolifempty 如果曰志为空文件,則不进行日志轮替
minsize 大小 日志轮替的最小值。也就是日志一定要达到这个最小值才会进行轮持,否则就算时间达到也不进行轮替
size 大小 日志只有大于指定大小才进行日志轮替,而不是按照时间轮替,如 size 100k
dateext 使用日期作为日志轮替文件的后缀,如 secure-20130605
sharedscripts 在此关键宇之后的脚本只执行一次
prerotate/cndscript 在日志轮替之前执行脚本命令。endscript 标识 prerotate 脚本结束
postrolaie/endscripl 在日志轮替之后执行脚本命令。endscripi 标识 postrotate 脚本结束
  • 把自己的日志加入日志轮替
    如果有些日志默认没有加入日志轮替(比如源码包安装的服务的日志,或者自己添加的日志),那么这些日志默认是不会进行日志轮替的,这样当然不符合我们对日志的管理要求。如果需要把这些日志也加入日志轮替,那该如何操作呢?
    这里有两种方法:
    • 第一种方法是直接在 /etc/logrotate.conf 配置文件中写入该日志的轮替策略,从而把日志加入轮替;
    • 第二种方法是在 /etc/logrotate.d/ 目录中新建立该日志的轮替文件,在该轮替文件中写入正确的轮替策略,因为该目录中的文件都会被包含到主配置文件中,所以也可以把日志加入轮替。
      推荐第二种方法,因为系统中需要轮替的日志非常多,如果全部直接写入 /etc/logrotate.conf 配置文件,那么这个文件的可管理性就会非常差,不利于此文件的维护。
  • 日志轮替服务应用实例
    对于自己设置的 /var/log/hsp.log 日志,不是系统默认日志,而是通过 /etc/rsyslog.conf 配置文件自己生成的日志,所以默认这个日志是不会进行轮替的。如果需要把这个日志加入。就采用第二种方法,在 /etc/logrotate.d/ 目录中建立此日志的轮替文件。
    • 先创建 /etc/logrotate.d/hsplog 轮替文件
    • 在文件中写入命令,即事先约定好的日志轮替规则
/var/log/hsp.log {
     missingok
     daily
     copytruncate
     rotate 7
     nolifempty
}
  • 日志轮替机制原理
    • logrotate 在很多 Linux 发行版上都是默认安装的。系统会定时运行 logrotate,一般是每天一次。系统是这么实现按天执行的。crond 会每天定时执行 /etc/cron.daily 目录下的脚本,而这个目录下有个文件叫 logrotate。logrotate 通过这个文件依赖定时任务执行的。
  • 基本介绍
    日志管理工具 journalctl 是CentOS 7上专有的日志管理工具,该工具是从 message 这个文件里读取信息。Systemd 统一管理所有 Unit 的启动日志。带来的好处就是,可以只用 journalctl 一个命令,查看所有日志(内核日志和应用日志)。日志的配置文件是 /etc/systemd/journald.conf
  • journalctl 用法
    • 查看所有日志(默认情况下 ,只保存本次启动的日志):journalctl
    • 查看内核日志(不显示应用日志):journalctl -k
    • 查看系统本次启动的日志:journalctl -b
    • 实时滚动显示最新日志:journalctl -f
    • 显示尾部的最新10行日志:journalctl -n

标签:文件,log,Linux,logrotate,2021,轮替,var,日志,顺平
来源: https://www.cnblogs.com/authorware/p/14209351.html