云计算基础 第十一章 日志管理

日志管理

简介

	**任务一:**
		rsyslog 系统日志管理
			关心问题:哪类程序---》产生的什么日志----》放到什么地方
	**任务二:**
		logrotate日志轮转
			将大量的日志,分割管理,删除旧日志。

任务一详解

一、处理日志的进程

		**第一类:**
			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

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

		# tail   -10   /var/log/messages
			//系统主日志文件
		# tail -f /var/log/messages
			//动态查看日志文件的尾部
		# tailf /var/log/secure
			 //认证、安全
		# tail /var/log/yum.log
			 //yum
		# tail /var/log/maillog
			 //跟邮件postfix相关
		# tail /var/log/cron
			//crond、at进程产生的日志
		# tail /var/log/dmesg
			 //和系统启动相关
		**了解**
			# tail /var/log/audit/audit.log
				 //系统审计日志
			# tail /var/log/mysqld.log
				//MySQL
			# tail /var/log/xferlog
				//和访问FTP服务器相关
			# tail  /var/log/wtmp
				//当前登录的用户(命令:w)
			# tail  /var/log/btmp
				//最近登录的用户(命令last)
			# tail  /var/log/lastlog
				//所有用户的登录情况(命令lastlog )

三、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
					和日志办轮转(切割)相关(任务二)
			//观察日志程序的配置文件

四、主配置文件

		**告诉rsyslogd进程什么日志,应该存到哪里。**
		**# vim /etc/rsyslog.conf**
			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
系统日志排除了邮件,认证,计划日志。
FACILITY&LEVEL
facility设备
facility
是系统对某种类型事件的定义。如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
用户自定义设备
程序类型示例
关于程序和设备的联系问题,程序自身会决定将日志交给哪类设备。如SSH程序会选择安全类设备。这一点由开发者定义。
#grep Facility /etc/ssh/sshd_config
SyslogFacility AUTHPRIV
请问这个程序是属于哪个设备呢?
认证设备
level级别
LOG_EMERG 紧急,致命,服务无法继续运行,如配置文件丢失
LOG_ALERT 报警,需要立即处理,如磁盘空使用95%
LOG_CRIT 致命行为
LOG_ERR 错误行为
LOG_WARNING 警告信息
LOG_NOTICE 普通,重要的标准信息
LOG_INFO 标准信息
LOG_DEBUG 调试信息,排错所需,一般不建议使用
从下到上,级别从低到高,记录的信息越来越少
规则示意图
目的:通过绘图形式来理解日志工作机制。
图示

任务二详解

logrotate日志轮转

简介

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

工作原理

			按照配置进行轮转
				配置文件种类
					主文件:/etc/logrotate.conf (决定每个日志文件如何轮转)
					子文件夹:/etc/logrotate.d/*
				观察主文件和子文件
					[root@qianfeng ~]# 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

主配置文件介绍

			[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日志轮转实例

			轮转的目标文件/var/log/yum.log
			配置轮转规则
				# vim /etc/logrotate.d/yum 
				/var/log/yum.log {
				missingok		//丢失不执行
				# notifempty		//空文件不论转
				# size 30k		//达到30k轮转, daily or  size
				# yearly		//或者一年一轮转
				daily		//缩小周期到1天
				rotate 3		//轮转保留3次
				create 0777 root root
				}
			测试
				错误示范
					# /usr/sbin/logrotate /etc/logrotate.conf //手动轮转
					# ls /var/log/yum*
					/var/log/yum.log
						文件只有一个。因为日期没变
				正确示范
					修改时间,手动触发轮转
					# date 04011000
						把时间向未来推移
					# /usr/sbin/logrotate  -s /var/lib/logrotate/logrotate.status /etc/logrotate.conf
					# ls /var/log/yum*
						日志文件已经出现多个
				关于时间
					# grep 'yum' /var/lib/logrotate/logrotate.status //记录所有日志文件最近轮转的时间
					"/var/log/yum.log" 2019-3-31-10:0:23
						//如果没有轮转过,第一次只有记录

你可能感兴趣的:(云计算基础 第十一章 日志管理)