一 简介
1.任务一:
rsyslog 系统日志管理
关心问题:哪类程序---》产生的什么日志----》放到什么地方
2.任务二:
logrotate日志轮转
将大量的日志,分割管理,删除旧日志。
二 任务一详情
1.处理日志的进程
1.第一类:
rsyslogd: 系统专职日志程序。
处理绝大部分日志记录,
系统操作有关的信息,如登录信息,程序启动关闭信息,错误信息
2.第二类:
httpd/nginx/mysql: 各类应用程序,可以以自己的方式记录日志.
讲解对应程序时会逐步介绍
3. 观察 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.常见的日志文件(系统,进程,应用程序)
3.rsyslogd设备
1.相关程序
yum install rsyslog logrotate
默认已安装
2.启动程序
systemctl start rsyslog.service
3.相关文件
rpm -qc rsyslog
/etc/rsyslog.conf
rsyslogd的主配置文件(关键)
/etc/sysconfig/rsyslog
rsyslogd相关文件,定义级别(了解一下)
/etc/logrotate.d/syslog
和日志办轮转(切割)相关(任务二)
//观察日志程序的配置文件
4.主配置文件
==告诉rsyslogd 进程什么日志,应该存到哪里==
# vim /etc/rsyslog.conf 进入配置文件的编译模式
1.RULES
RULES:即规则,是一套生成日志,以及存储日志的策略。
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
系统日志排除了邮件,认证,计划日志。
2.FACILITY&LEVEL(设备,优先级)
--facility设备--
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_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 调试信息,排错所需,一般不建议使用
从下到上,级别从低到高,记录的信息越来越少
3.规则示意图
目的:通过绘图形式来理解日志工作机制。
==程序类型示例==
关于程序和设备的联系问题,程序自身会决定将日志交给哪类设备。如SSH程序会选择安全类设备。这一点由开发者定义。
#grep Facility /etc/ssh/sshd_config
SyslogFacility AUTHPRIV 认证设备
如果SSH程序会选择安全类设备。这一点有开发者定义。
---修改ssh程序的设备类型---
vim /etc/ssh/sshd_config
#SyslogFacility AUTHPRIV // 认证设备系统日志
SyslogFacility LOCAL5 // 名称修改为local5
---修改rsyslog程序的规则---
vim /etc/rsyslog.conf
local5.* /var/log/serverzz
// 添加名称改为local5的 认证设备日志 并给他添存放地址 在此我自定义该名称serverzz
---重启rsyslog程序和ssh程序---
systemctl restart rsyslog.service sshd
修改完需要重新启动才能生效
---使用其他终端,登录服务器,观察新日志文件---
再次登陆的时候就用新地址查看
在终端窗口一输入 :tailf /var/log/serverzz 动态查看认证类信息
在终端窗口二输入 :本机id进项登录 窗口一可以查看到登录信息。说明更改成功。
三 . 任务二详情 logrotate 日志轮转
1.简介
日志 记录了程序运行时各种信息。
通过日志可以分析用户行为,记录运行轨迹,查找程序问题。
可惜磁盘的空间是有限的
日志轮转就像飞机里的黑匣子,记录的信息再重要也只能记录最后一段时间发生的事。
为了节省空间和整理方便,日志文件经常需要按!时间或!大小等维度分成多份,删除时间久远的日志文件。
2.工作原理 —按照配置进行轮转
==配置文件种类==
主配置文件:/etc/logrotate.conf
(决定每个日志文件如何轮转)
子配置文件夹:/etc/logrotate.d/*
自定义配置 (优先级高,在此修改,就不再使用主配置的默认设置)
便于管理
==观察主文件和子文件==
[root@localhost ~]# ls /etc/logrotate.conf /etc/logrotate.d/
/etc/logrotate.conf
/etc/logrotate.d/:
acpid cups iscsiuiolog ppp rpm subscription-manager up2date wpa_supplicant
conman httpd mgetty psacct setroubleshoot syslog vsftpd.log yum
主文件里有子文件,子文件下有......
3.主配置文件介绍
打开系统设置: [root@localhost ~]# vim /etc/logrotate.conf
4.yum 日志轮转实例
轮转的目标文件 /var/log/yum.log
==配置轮转规则==
打开 yum 配置子文件进行编译
# vim /etc/logrotate.d/yum
/var/log/yum.log {
missingok //丢失不执行
# notifempty //空文件不论转 带# 是不选中的意思
# maxsize 30k //达到30k轮转, daily or size
# yearly //或者一年一轮转
daily //缩小周期到1天
rotate 3 //轮转保留3次
create 0777 root root (生成日志的权限)
}
// 每天轮转(剪切)一次,保留3天记录,在第四天是第一天记录被删除
==测试==
1.错误示范
# /usr/sbin/logrotate /etc/logrotate.conf //手动轮转
# ls /var/log/yum*
/var/log/yum.log
文件只有一个。因为日期没变
2.正确示范
修改时间,手动触发轮转
# date 04011000
date 月日时分
把时间向未来推移
# /usr/sbin/logrotate -s /var/lib/logrotate/logrotate.status /etc/logrotate.conf
手动触发转轮
# ls /var/log/yum*
查看 ,日志文件已经出现多个
3.关于时间
# grep 'yum' /var/lib/logrotate/logrotate.status
//记录所有日志文件最近轮转的时间
"/var/log/yum.log" 2019-3-31-10:0:23
//如果没有轮转过,第一次只有记录