日志管理-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 是否将轮替文件进行压缩
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
注:本文为博主查阅多方资料整理而成,如有侵权请留言联系博主删除。
学习新东西,不要忘记复习旧知识,这样你才能更好!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本