Linux系统:第十一章 Linux日志管理(rsyslog系统日志管理与logroatate日志轮转)

简介

我们通过两个不同类型的任务来学习Linux日志管理

  • 任务一
    rsyslog系统日志管理 我们要关心的问题很简单: 哪类程序?产生的什么日志?产生的日志放到什么地方?

  • 任务二
    logrotate日志轮转 将大量的日志,分割管理,删除旧日志。

任务一详解

1.处理日志的进程

  • 第一类
    rsyslogd:系统专职日志程序,能够处理大部分日志记录,系统操作有关的信息、如登录信息,程序关闭信息,错误信息
  • 第二类
    httpd/nginx/mysql: 各类应用程序,可以以自己的方式记录日志.
    讲解对应程序时会逐步介绍
  • 使用命令观察rsyslogd程序
[root@localhost ~]# ps aux |grep rsyslogd
root 717 0.0 0.0 219752 3880 ? Ssl 09:05 0:00 /usr/sbin/rsyslogd -n

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

tail -10 /var/log/messages //系统主日志文件
tail -f /var/log/message //动态查看日志文件的尾部
tailf /var/log/secure //认证,安全
tail /var/log/yum.log //yum
tail /var/log/maillog //跟邮件postfix相关的
tail /var/log/dmesg //和系统启动相关的

实例:网站日志管理

# 安装环境 
yum install -y httpd
systemctl start httpd
systemctl stop firewalld
#调整网络为 桥接模式 方便其他人访问
systemctl restart network 
ip a
#同学打开浏览器 输入ip a查询到的ip地址进行浏览#观察日志
tailf /var/log/httpd/access_log

3.rsyslogd配置

  • 相关程序
yum install rsyslog logrotate //默认已安装
  • 启动程序
systemctl start rsyslog.service
  • 相关文件
rpm -qc rsyslog 
   /etc/rsyslog.conf --- rsyslogd的主配置文件
   /etc/sysconfig/rsyslog--- rsyslogd相关文件,定义级别
   /etc/logrotate.d/syslog --- 和日志轮转 (切割)相关(任务二)

4.主配置文件

#vim /etc/rsyslog.conf通俗一点就是告诉rsyslogd进程什么日志,应该存在哪里

  • 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   
#系统日志排除了邮件,认证,计划日志。
  • FACILITY&LEVEL
    facility是系统对某种类型APP事件的定义。如AUTHPRIV是安全事件,CRON是计划任务事件。用来收集同类程序日志。#man 3 syslog
    设备类型有

LOG_SYSLOG syslogd 自身产生的日志
LOG_AUTHPRIV 安全认证
LOG_CRON 调度程序(cron and at)
LOG_MAIL 邮件系统mail subsystem
LOG_USER(DEFAULT) 用户相关
LOG_DEMON 后台进程
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 调试信息,排错所需,一般不建议使用

从下到上,级别由高到低,记录的信息越来越少

  • 规则示意图
    目的:通过绘图形式理解日志工作机制。
    在这里插入图片描述
  • 程序类型实例
    关于程序和设备的联系问题,程序自身会决定将日志交给哪类设备。
    如SSH程序会选择安全类设备。这一点由开发者定义。
    首先我们来修改ssh程序的设备类型
vim    /etc/ssh/sshd_config 
#找到设备类型修改为LOCAL5并保存
#SyslogFacility AUTHPRIV

SyslogFacility LOCAL5

修改rsyslog程序的规则

vim /etc/rsyslog.conf
#添加以下代码
local5.*          /var/log/serverzz

重启rsyslog程序和ssh程序systemcl restart rsyslog.service sshd
使用其他终端,登录服务器,在自己定义的路径/var/log/serverzz下观察日志文件。

任务二详解

1. 简介

日志记录了程序运行时候的各种信息,通过日志我们可以分析用户行为,记录运行轨迹,查找程序问题,但是磁盘的空间是有限的日志轮转就像是飞机里的黑匣子,记录的信息再重要也只能记录最后一段时间发生的事情。而我们为了节省空间和整理方便,日志文件经常需要按照时间、大小等维度分成多份,并且删除时间久远的日志文件。

2.工作原理

我们按照配置进行轮转:

  • 配置文件种类有两种
    主配置文件: /etc/logrotate.conf 决定每个日志文件如何轮转
    子配置文件:/etc/logrotate.d/* 自定义配置,便于管理

在这里插入图片描述

3.主配置文件介绍

[root@localhost ~]# vim /etc/logrotate.conf 
=========全局设置==========
weekly   //轮转的周期,一周轮转
rotate 4   //保留4份
create   //轮转后创建新文件
dateext   //使用日期作为后缀
#compress  //是否压缩
include /etc/logrotate.d //包含该目录下的子配置文件

/var/log/wtmp {  //对某日志文件设置轮转的方法
monthly     //一月轮转一次
minsize 1M   //最小达到1M才轮转,monthly and  minsize(同时达到两个条件)
create 0664 root utmp  //轮转后创建新文件,并设置权限
rotate 1   //保留一份
}

/var/log/btmp {
missingok   //丢失不提示
monthly    //每月轮转一次
create 0600 root utmp  //轮转后创建新文件,并设置权限
rotate 1   //保留一份
}


yum日志轮转实例

我们以yum的日志文件作为实例,yum轮转的目标文件为/var/log/yum.log

vim /etc/logrotate.d/yum

#写入轮转规则
/var/log/yum.log{
missingok #丢失不执行
#notifempty  #空文件不论转
#maxsize 30k #达到30k轮转,daily or size
#yearly      #一年一轮转
daily  #缩小周期到一天
rotate 3 #轮转保留3次
create 0777 root root #权限、属主、属组
}

测试:

  • 错误示范
 /usr/sbin/logrotate /etc/logrotate.conf    #手动轮转命令
 #查看日志文件
 ls /var/log/yum*

此时发现,文件仍然只有一个,没有发生分割(轮转),因为我们的系统日期没变。
在这里插入图片描述

  • 正确示范
date 09011000  #date 月日时分 将时间调整到9月1号下午一点
 
 /usr/sbin/logrotate /etc/logrotate.conf 
 #执行手动轮转命令 并把发生轮转的信息 存放到logrotate.status文件里展示出来
 /usr/sbin/logrotate  -s /var/lib/logrotate/logrotate.status  /etc/logrotate.conf
 

在这里插入图片描述

  • 关于时间
grep 'yum' /var/lib/logrotate/logrotate.status   #记录所有日志文件最近轮转的时间
"/var/log/yum.log" 2020-9-1-0:1:9

在这里插入图片描述
如果没有轮转过第一次只有记录"/var/log/yum.log" 2019-3-31-10:0:23

在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值