Linux:日志系统rsyslog和日志轮转logrotate

1.日志系统rsyslog

1.1.日志重要性

Linux系统和许多程序会产生各种错误信息、告警信息和其他的提示信息,这些各种信息都应该记录到日志文件中,完成这个过程的程序就是rsyslog。Linux系统日志对管理员来说,是了解系统运行的主要途径,因此需要对Linux日志系统有个详细的了解。

1.2.日志管理基础

rsyslog—日志管理服务(关心问题:哪类程序、产生的什么日志、放到什么地方)
logrotate—日志轮转工具(将大量的日志,分割管理,删除旧日志)

1.3.处理日志的进程

rsyslogd:绝大部分日志记录,和系统操作有关,安全,认证sshd,su,计划任务at,cron… httpd/nginx/mysql: 可以自己的方式记录日志

[root@localhost ~]# ps aux |grep rsyslogd
root        752  0.0  0.2 216440  5548 ?        Ssl  20:18   0:00 /usr/sbin/rsyslogd -n

1.4.常见的日志文件(系统、进程、应用程序)

动态查看日志文件的尾部(tail -f)
[root@localhost ~]# tailf /var/log/messages
日志文件解释
/var/log/messages系统主日志文件
/var/log/secure记录认证、安全的日志
/var/log/maillog跟邮件postfix相关
/var/log/croncrond、at进程产生的日志
/var/log/dmesg记录系统启动时加载的硬件相关信息日志
/var/log/yum.logyum的日志
/var/log/mysqld.logMySQL日志
/var/log/xferlog和访问FTP服务器相关
/var/log/boot.log系统启动过程日志记录存放
/var/log/wtmp当前登录的用户(可以直接在命令行输入w查看)
/var/log/lastlog所有用户的登录情况(可以直接在命令行输入lastlog查看)

1.5.网站日志管理

1.安装
[root@localhost ~]# yum install -y httpd	//安装http进程
[root@localhost ~]# systemctl  start  httpd	//开启http进程
[root@localhost ~]# systemctl stop  firewalld	//关闭防火墙
2.调整网络
[root@localhost ~]# systemctl  restart  network
[root@localhost ~]# ip  a	//ens下面
3.打开浏览器,输入你的服务器IP进行浏览
4.观察日志:
[root@localhost ~]# tailf  /var/log/httpd/access_log

1.6.rsyslogd配置

1.相关程序
[root@localhost ~]# yum install rsyslog   logrotate	//默认已安装
2.启动程序
[root@localhost ~]# systemctl  start  rsyslog.service
3.相关文件
[root@localhost ~]# rpm -qc rsyslog	//观察日志程序的配置文件

/etc/rsyslog.conf:rsyslogd的主配置文件(关键)
/etc/sysconfig/rsyslog:rsyslogd相关文件,定义级别(了解一下)
/etc/logrotate.d/syslog:和日志轮转(切割)相关

1.7.主配置文件

(告诉rsyslogd进程什么日志,应该存到哪里)

[root@localhost ~]# vim /etc/rsyslog.conf
  1. RULES
    即规则,是一套生成日志,以及存储日志的策略;有三部分组成(由设备+级别+存放位置)、FACILITY+LEVEL+FILE
--
authpriv.*/var/log/secure(SSH信息)
mail.*-/var/log/maillog(发邮件)
cron.*/var/log/cron(创建任务)

这里有一个-符号, 表示是使用异步的方式记录, 因为日志一般会比较大
*.info;mail.none;authpriv.none;cron.none /var/log/messages :系统日志排除了邮件,认证,计划日志

  1. FACILITY&LEVEL
    facility设备:是系统对某种类型APP事件的定义。如AUTHPRIV是安全事件,CRON是计划任务事件。用来收集同类程序日志。
[root@localhost ~]# man 3 syslog
设备类型解释
LOG_SYSLOGsyslogd自身产生的日志
LOG_AUTHPRIV安全认证
LOG_CRON调度程序(cron and at)
LOG_MAIL邮件系统mail subsystem
LOG_USER (default)用户相关
LOG_DAEMON后台进程
LOG_FTP文件服务器ftp daemon
LOG_KERN内核设备kernel messages
LOG_LPR打印机设备printer subsystem
LOG_LOCAL0 through LOG_LOCAL7用户自定义设备
level级别解释
LOG_EMERG致命,服务无法继续运行,如配置文件丢失
LOG_ALERT报警,需要立即处理,如磁盘空使用95%
LOG_CRIT紧急行为
LOG_ERR错误行为
LOG_WARNING警告信息
LOG_NOTICE普通,重要的标准信息
LOG_INFO标准信息
LOG_DEBUG调试信息,排错所需,一般不建议使用

从下到上,级别从低到高,记录的信息越来越少
规则示意图:
在这里插入图片描述

  1. 程序类型示例
    关于程序和设备的联系问题,程序自身会决定将日志交给哪类设备。如SSH程序会选择安全类设备。(这一点由开发者定义)
1.修改ssh程序的设备类型
[root@localhost ~]# vim /etc/ssh/sshd_config
#SyslogFacility AUTHPRIV
SyslogFacility LOCAL5

2.修改rsyslog程序的规则
[root@localhost ~]# vim /etc/rsyslog.conf
local5.*	/var/log/serverzz

3.重启rsyslog程序和ssh程序
[root@localhost ~]# systemctl restart rsyslog.service sshd
4.使用其他终端登录服务器,观察新日志文件。

2.日志轮转(切割)logrotate

注:可以针对任何日志文件(rsyslog 日志、Nginx访问或错误日志…)
如果没有日志轮转,日志文件会越来越大
将丢弃系统中最旧的日志文件,以节省空间
logrotate它是通过配合计划任务crond每天执行

2.1.logrotate 配置文件

主配置文件:/etc/logrotate.conf(决定每个日志文件如何轮转)
子配置文件:/etc/logrotate.d/*

2.2.配置日志轮转

[root@localhost ~]# vim /etc/logrotate.conf  
weekly              //轮转的周期,一周轮转,单位有年,月,日 
rotate 4            //保留4份 
create              //轮转后创建新文件 
dateext             //使用日期作为后缀 
#compress           //日志轮替时,旧的日志进行压缩 
include /etc/logrotate.d    //包含该目录下的配置文件,会引用该目录下面配置的文件
/var/log/wtmp {             //对该日志文件设置轮转的方法    
 monthly                    //一月轮转一次  
 minsize 1M                 //最小达到1M才轮转,否则就算时间到了也不轮转
 create 0664 root utmp      //轮转后创建新文件,并设置权限   
 rotate 2                   //保留2份 
}
/var/log/btmp {    
 missingok                  //丢失不提示    
 monthly                            
 create 0600 root utmp              
 rotate 1                           
} 

2.3.例1:轮转文件/var/log/yum.log

[root@localhost ~]# vim /etc/logrotate.d/yum    
/var/log/yum.log {
 missingok   //丢失不提醒
 #notifempty //空文件不轮转 
 #size 30k   //只要到了30k就轮转(size默认是maxsize)
 #yearly
 daily       //每天轮转一次   
 rotate 3      
 create 0644 root root 
}

测试:

[root@localhost ~]# /usr/sbin/logrotate  -f  /etc/logrotate.conf  //手动轮转
[root@localhost ~]# ls /var/log/yum*
/var/log/yum.log  /var/log/yum.log-20191110

[root@localhost ~]# grep yum /var/lib/logrotate/logrotate.status //查看记录所有日志文件最近轮转的时间
"/var/log/yum.log" 2019-11-10-21:26:14

2.4.例2:日志轮转data_log

[root@localhost ~]# mkdir -p /data/logsfile/log/

产生日志文件内容:

[root@localhost ~]# touch /data/logsfile/log/{a..z}.log
for a in {1..10};do
for i in {a..z}; 
do cat /var/log/vmware-vmsvc-root.log >>/data/logsfile/log/$i.log;
done;
done

编辑日志轮转文件:

[root@localhost ~]# vim /etc/logrotate.d/data_log
/data/logsfile/log/*.log
{
 missingok
 daily
 dateext
 compress
 rotate 3
 create 0644 root root
}

测试:

[root@localhost ~]# /usr/sbin/logrotate -f /etc/logrotate.d/data_log

查看轮转生成:

[root@localhost ~]# ls /data/logsfile/log/
  • 6
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

TA548464

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值