日志管理-rsyslog、切割、轮替

日志管理

日志的功能、目的

# 功能
	1)保存计算机中各个时间的运行痕迹(/var/secure用户创建修改)
	2)记录软件运行是信息和报错的原因--可用于排除(/var/message 什么都记录)
	3)信息分析功能-记录用户的访问记录-分析日志得到(什么时间段访问量最大)
# 目的:
	为了分析日志,从日志中分析出现问题的原因

rsyslog服务

rsyslog定义

将服务器中发生的事情,分门别类的保存到指定的日志文件中,的管理系统叫做rsyslog.
$ chkconfig --list rsyslog 列出rsyslog服务(列出对应服务)

rsyslog工作原理

rsyslog 只管理系统自带的服务,和某一部分使用yum&rpm安装的服务,但绝对不会记录和管理源码包安装的软件的日志信息

配置文件

1)进入配置文件
	$ vim /etc/rsyslog.conf
2)日志事件
	日志类型 . 日志级别 日志保存位置
3)日志类型
	auth 登录认证相关(系统)
	authpriv 登录认证相关信息记录(软件)
	cron 记录定时计划任务的事件
	kern 内核事件 
	mail 邮件事件
	user 用户&用户组相关事件	
4)日志级别
	debug 调试信息
	info 一般展示信息
	warning 警告信息,可以忽略掉的~
	err 基础错误级别
	crit 严重错误级别
	emerg 内核相关报错信息
	特殊:none 啥都不记录
5)组连接符号
	. :某级别以上 
	.= :只记录某级别 
	.! :不记录某级别{取反} 
	.* :记录所有级别
# 例子:
	.debug:所有类型日志,debug级别以上的都记录(全都记录)
	authpriv.warning:仅记录authpriv事件的,警告级别以上的信息 
	cron.=err :cron的事件的,报错的信息,其他级别不记录 
	user.!info :user事件中,除了info级别以外,其他都记录 
	mail.* :mail事件中,所有级别的日志都记录
6)日志保存位置 
	/var/log/secure #认证登录相关的日志(用户的创建修改删除等) 
	/var/log/maillog #邮件相关日志 
	/var/log/cron #定时计划任务日志 
	/var/log/dmesg #系统启动相关的日志{每次开机覆盖原来的日志} 
	/var/run/utmp w & who /var/log/wtmp last #用户所有登录信息 
	/var/log/lastlog lastlog #用户最后一次登录信息 
	/var/log/btmp lastb #用户登录的错误信息
# 例子:
	(1)#当我想单独记录内核信息
	*.info;mail.none;authpriv.none;cron.none;kern.none /var/log/messages(系统的主日志文件)#添加kern.none,让messages不记录内核日志
	#log kernel file(注释信息)
	kern.* /var/log/kernel.log #添加记录内核信息的文件
	service rsyslog restart
	#重启rsyslog服务(只要设置必须重启)
	(2)mail.* -/var/log/maillo
	# - 作用:在进行日志记录过程中,可以使用缓存模式记录

安装网络服务

安装流程都记录到了messages日志文件中 /var/log/messages

日志收集服务器

定义

当服务器数量较多时,产生的日志都分散在各自的服务器的日志文件中,不利于对日志内容的分析,专门找一台服务器负责日志的收集和保存,然后统一进行内容分析

日志处理方式

日志在区分出类型和级别之后,不一定非要记录到指定问日志文件中,也可以有其他的操作
1)# 写入日志文件
	/var/log/messages
2)# 转发到指定的远程日志服务器
	@日志服务器的IP地址 #使用UDP协议进行数据传输
	@@日志服务器的IP地址 #使用TCP协议进行数据传输
	UDP数据包大小固定,其中最多只能保存13台根域服务器的ip
3)# 将日志文件直接发送给在线用户
	root,zhangsan
4)忽略,丢弃
	~ #~代表将日志忽略掉,或丢弃掉
5)触发指定脚本运行
	^脚本的绝对路径 ^/bash/test.sh
6)规则:
	按照配置文件中编写好的规则自上而下的方式顺序执行
	若匹配成功,则执行对应的日志处理机制{记到文件中、发送到服务器.....}
	继续向下匹配,直到最后一条规则匹配完成,结束匹配
	若匹配失败,则继续向下匹配规则,直到符合某一条规则为止
	*.* @192.168.88.102 # 所有类型的所有级别日志发送到次IP地址的服务器

试验:将产生的日志记录到指定的日志服务器上

1)准备3台虚拟机,并修改名字
	永久修改主机名:vim /etc/sysconfig/network
临时: 
	服务器:hostname log-sever
	客户端1:hostname log-client1
	客户端2:hostname log-client2
临时修改服务器的主机名(C7):
hostnamectl set-hostname 主机名	
# 修改完主机名之后,需要重启rsyslog服务,识别新的主机名,否则仍旧按照就主机名记录
2)修改3台虚拟机配置文件
客户端1和客户端2:
	$ vim /etc/rsyslog.conf
最下端添加:
	$ *.* @192.168.88.10:514(udp端口)
服务器:
	查看是否存在UDP514端口:
	$ netstat -antp | grep :514
进入修改配置文件:
	$ vim /etc/rsyslog.conf
增加514端口:
	# Provides UDP syslog reception
	$ ModLoad imudp #取消注释,调用imudp模块,进行日志收集
	$ UDPServerRun 514 #取消注释,开放服务端口514{UDP}
重启服务,验证UDP514端口是否开放
	netstat -tlunp | grep 514
3、分别重启
	服务器:tailf /var/log/secure
	客户端: service rsyslog restart(重启)
	先重启服务器监控,然后重启客户端
4、创建用户
	客户端创建用户,服务器查看监控是否收到客户端日志。

日志的处理机制

定义

切割:日志生成之后对产生了的日志文件做大小切割
轮替:提前设计好的日志分割方案

轮替

1)
# 日志轮替机制:
	logrotate
# 配置文件:
	/etc/logrotate.conf
# 全局配置:
	$ vim /etc/logrotate.conf
	weekly 轮替周期{weekly、monthly}
	rotate 旧日志保存份数
	create 轮替后是否创建新文件
	dateext 以时间作为轮替日志文件的后缀
	compress 是否将轮替文件进行压缩

image-20210311113627117

2)局部{针对某些具体日志文件的轮替方案} 
	wtmp btmp
rpm 安装的某些程序自己拥有日志文件如 httpd 
include 在当前配置文件中调用位于其他位置的配置文件内容
include /etc/logrotate.d
notifempty #当日志文件为空时,不需要对文件进行轮替
在日志完成之后在执行此命令(重启httpd,实际重新创建文件)
postrotate 声明:
	/bin/systemctl reload httpd.service > /dev/null 2>/dev/null || true
endscript
标签:
类型一:sharedscripts #该标签后的脚本仅执行一次
类型二:prerotate/endscript #在日志轮替之前执行标签之间的程序
类型二:postrotate/endscript #在日志轮替之后执行标签之间的程序
cd /var/log/httpd/ 进入http日志文件
ls 查看
netstat -antp | grep :80 查看httpd端口
mv * /tmp/ 移除日志文件内容
ls 查看
service httpd reload 重新生成日志文件
3)日志收集后,要对日志文件大小进行约束限制
事前:提前指定日志的轮替规则{始终保持日志不会过大}
	a. 系统自带的日志轮替机制
	b. 自己编写脚本实现日志轮替
事后:文件切割{将体积过大的文件进行切割}
4)定时计划任务:
每周的周一凌晨4点整执行脚本
0 4 * * 1 /bin/bash /root/etcback.sh
#!/bin/bash
tar -zcvf /backup/etc-$(date +%Y%m%d).tar.gz /etc
find /backup -name "etc*" -a -mtime +30 -exec rm -rf {} \;

切割

编写日志{轮替}切割脚本
split 切割文件
	-b 大小(单位自己指定)
	-l 行数
	-d 声明文件切割后的文件名前缀
	-a 数位长度,用指定数位长度的数字作为后缀
# spilt 选项 文件名 选项 切割后文件名
$ split -l 10 anaconda-ks.cfg -d -a 2 an_
$ ls 
	an_00 an_01 an_02 an_03 an_04 an_05 anaconda-ks.cfg
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值