9. Linux 日志管理

时间:2023-02-15 11:20:20

1. 日志程序rsyslog

rsyslog专门处理系统日志的程序,处理绝大部分的日志记录,主要记录系统操作有关的信息,如登录信息、程序启动关闭信息、错误信息。各种应用程序也有可能产生日志信息,不属于本节所述。

日志大部分存储在​​/var/log​​目录下。实时显示日志文件​​tail -f /var/log/messages​​。

CentOS系列Linux的日志(Ubuntu不太一样,但是也有该程序)

  • ​/var/log/messages​​记录主日志。
  • ​var/log/security​​记录认证、安全相关日志。
  • ​/var/log/yum.log​​记录yum相关日志。
  • ​/var/log/maillog​​记录跟邮件postfix相关的日志。
  • ​/var/log/cron​​记录crond、at进程产生的相关日志。
  • ​/var/log/dmesg​​记录和系统启动相关的日志。
  • ​/var/log/audit/audit.log​​系统审计相关日志。
  • ​/var/log/mysqld.log​​MySQL日志
  • ​/var/log/xferlog​​访问FTP服务器相关日志。
  • ​/var/log/wtmp​​当前登录的用户(命令:w)
  • ​/var/log/btmp​​最近登录的用户(命令:last)
  • ​/var/log/lastlog​​所有用户的登录情况(命令:lastlog)

1.1 rsyslog配置

  1. 安装:yum install rsyslog,默认已经安装。
  2. 启动:systemctl start rsyslog.service
  3. 相关文件:
    列出所有相关文件:CentOS:rpm -ql rsyslog,Ubuntu:dpkg -S rsyslog
    列出配置文件:CentOS:rpm -qc rsyslog,Ubuntu:dpkg -s rsyslog,Conffiles部分。这一部分可以参考:RPM & APT
  • ​/ect/rsyslog/rsyslog​​:rsyslogd的主配置文件**【关键】**
  • ​/etc/sysconfig/rsyslog​​:定义日志级别
  • ​/etc/logrotate.d/syslog​​:和日志轮转(切割)相关

1.2 主配置文件

主配置文件一般都位于​​/etc​​目录下,并且一般以​​程序名.conf​​命名。

RULES: ​​设备.日志级别 file-path​​,即​​FACILITY.LEVEL FILE​​。应用程序属于什么设备是由开发人员确定的,一种设备对应多个应用程序,一个应用程序对应一种设备。

Ubuntu的这个文件位于需要查看​​/etc/rsyslog.conf​​中​​rules​​所述在哪个文件,然后现在是在​​/etc/rsyslog.d/50-default.conf​​。

设备的类型和日志的级别具体的内容可以查看:​​man 3 syslog​

  • ​authpriv.* /var/log/secure​​认证设备日志
  • ​mail.* /var/log/maillog​​邮件日志位置
  • ​cron.* /var/log/cron​​定时任务日志

日志的级别:

  1. ​emerg(ency)​
  2. ​error​
  3. ​info​
  4. ​debug​
  5. ​*​​:代表任何级别

:star:一般不要修改这个​​/etc/rsyslog.conf​​,如果修改了配置文件要使其生效的方式有(坚决推荐不要修改!!!):

# 重启
$ reboot
# $ init 6 # 也是重启

# 不杀死进程加载所有配置
$ ps aux | grep rsyslogd
$ kill -1 <rsyslogd-pid>

2. 日志轮转 logrotate

安装:​​yum install logrotate​

启动:​​systemctl start logrotate.service​

需要日志轮转是因为,日志有很多有用的信息,但是磁盘空间有限。所以需要删除不需要的日志。但是这是系统自动完成的,不需要手动调用​​logrotate​​。手动调用是:​​/usr/sbin/logrotate -s /var/lib/logrotate/logrotate.status /etc/logrotate.conf​​,​​-s​​是指定logrotate日志轮转状态文件。

logrotate的工作原理是按照配置进行轮转。

配置文件:

  • ​/etc/logrotate.conf​​:主配置文件,决定每个日志文件如何轮转
  • ​/etc/logrotate.d/*​​:子配置目录,一般是自定义,将来不想要了好删除,而且万一改错了,可以删除子配置,不影响原来的程序

配置的具体方式查看​​man logrotate​​。

  • ​weekly​​:轮转的周期,按周来轮转
  • ​rotate 4​​:保留4份
  • ​create​​:轮转后创建新文件(老文件重命名)
  • ​dateext​​:使用时间作为文件后缀名称
  • ​compress​​:压缩日志文件,默认关闭
  • ​include /etc/logrotate.d​​:包含该目录下的子配置文件

子配置文件内容举例:

# /etc/logrotate.d/wtmp
/var/log/wtmp { # 在配置文件中书写日志的名字和{},就可以独立设置该日志的轮转规则
missingok # 该文件缺失不提示,就不轮转了
# noifempty # 空文件不轮转
monthly # 按月轮转(这里的优先级高),还有daily、yearly
create 0664 root utmp # 创建,指定权限,属主和属组
minsize 1M # 最小大小达到 1M 才轮转,这里和monthly是“且”的关系
# maxsize 30K # 达到30K轮转,和monthly是“或”的关系
rotate 1 # 保留1份(这里的优先级高)
}

# /etc/logrotate.d/btmp
/var/log/btmp {
missingok
monthly
create 0660 root utmp
rotate 1
}
  • 子配置文件的优先级高于全局配置文件
  • 只有当monthlyminsize的条件都达到了,才会发生轮转。而monthlymaxsize是或的关系,有一个达到就会轮转。