rsyslog日志管理和logrotate日志存储轮转
前言:
系统日志是记录服务器系统运行和软件运行状况的记录程序,如果系统和软件在运行中出错,我们就可以在日志中获取到问题发生时的记录,并以此寻求解决问题的方法。
一.rsyslog 系统日志管理系统
1.什么是 rsyslog 系统日志管理系统
①基于TCP网络协议传输日志信息。
②更安全的网络传输方式。
③有日志信息的即时分析框架。
④后台数据库。
⑤在配置文件中可以写简单的逻辑判断。
⑥与syslog配置文件相兼容
2.如何启动 rsyslogd 日志管理系统
#####查看
ps aux | grep "rsyslog"
#####启动
systemctl start rsyslog
#####关闭
systemctl stop rsyslog
3. 日志保存的目录
/var/log/massages
记录系统和服务运行的状态 信息和错误信息
/var/log/secuer
服务认证,用户登陆信息
/var/log/yum.log
yum相关的日志
/var/log/cron
任务计划相关的日志
/var/log/dmesg
开机启动相关的日志
/var/log/maillog
邮件日志
/var/log/boot.log
系统启动信息
日志内容分析,举栗查看:查看secuerl安全认证日志信息
可以看到下图,大致分为:
月份
日期
时分秒
服务器主机名
程序(sshd或则su) 模块
详细信息
可以看到在14点32分创建了一个king用户,并设置了密码,33分在10.8.161.61终端登陆king用户,35分 su切换到root用户,密码输入错误的动作的记录。
log目录下除了系统默认日志外,采用RPM模式安装的软件日志也会出现在/var/log/下,一般以程序软件的名字创建一个目录,用来单独存放该软件的日志文件。采用yum安装的,就不在这里,而在源码包安装的目录下。例如:
/var/log/httpd/
RPM安装方式,apache网站程序的日志
/usr/local/httpd/logs/
YUM安装方式,apache网站程序的日志
4. rsyslog如何配置
/etc/rsyslog.conf
,
rsyslogd 的主配置文件(关键)。主要有三大项可以选择配置
MODULES********************: 相关模块配置
GLOBAL DIRECTIVES******: 全局配置
RULES************************: 日志记录相关的规则设置
1.)#### MODULES #### 说明,远程服务日志配置。
相关模块配置,这里可以选择多种监控方式,如果我们只是本地服务,那么这里直接全部注释掉就可以了。如果远程服务器日志,那么我们就要做以下配置:
服务端:192.168.1.1 客户端:192.168.0.2
步骤一:服务端选择tcp 514端口
步骤二:在服务端 路径etc/rsyslog.d/*附加配置文件加,客户要监控的客户端的配置文件,例如我监控的是192.168.1.2,就在路径下创建一个 192.168.1.2.conf的配置文件,
vim编辑下内容: :fromhost -ip, isequal ,“192.168.1.2” /var/log/client/192.168.1.2.log
fromhost
哪个主机名发过来的
fromhost-ip
哪个ip发过来的
msg
从日志信息里的内容判断
hostname
从日志中的主机名判断
比较操作符包括以下内容
contains
包含
isequal
等于
startswith
以…开头
步骤三: 192.168.1.2客户机打开 /etc/rsyslog.conf , 在行的末尾加上指定日志服务器的ip呆地址和端口号 *.*@@192.168.1.1:514
退出,重启即可。
2.)#### GLOBAL DIRECTIVES #### 说明
3.)#### RULES #### 说明
由设备载体+安全级别+日志存放位置组成。
设备:
关于设备或者设备载体,是系统默认的 ,我们可以在后面规定该类设备,监控日志的保存路径。
那么遇到第三方软件,它并不是rsyslog管理的,而我们想让它交给rsyslog管理,我们怎么操作呢?
思路: 我们想第三方软件交给rsyslog来管理日志,那么我们就需要修改第三方软件的配置文件。例如修改 vim /vsftpd.cofn
。如果不知道修改那个参数,我们可以先man
一下vsftpd.conf
在帮助文档中搜索关键词:rsysylog就可以出现提示,我们按照提示,就可以知道如何修改配置交给rsyslog管理,归属于那个设备,或者设备载体,然后在设置管理后的日志文件放在哪里。
举个栗子:
在ssh配置中更改设备载体,然后在单独指定一个日志目录保存地
先打开ssh的配置文件,vim /etc/ssh/sshd-config
,
SyslogFanility AUTHPRIV #可以看到默认的这个载体指向的都是secure安全日志里
######我们给注释掉,然后改成没有用的设备载体,重新指向日志目录
SyslogFanility local1 #这个设备载体不可以自己自定义。local1是空闲的载体,就设置这个了,随后在指定目录即可
符号:
安全级别:
存放日志目录:
二. logrotate 日志存储轮转
1.为什么要做日志轮转
1.避免日志过大,占用过多的 /var/log
空间
2.方便日志查看
3.日志的轮转程序是 logrotate
4. logrotate
本身不是系统的守护进程,他是通过计划任务crond每天执行的。
2.如何配置日志轮转
- 打开logrotate 的配置文件
vim /etc/logrotate.conf
- 配置默认轮转条件
# see "man logrotate" for details
# rotate log files weekly
weekly #一个礼拜
# keep 4 weeks worth of backlogs
rotate 4 #保留四份
# create new (empty) log files after rotating old ones
create #创建一个新的日志文件
# use date as a suffix of the rotated file
dateext #时间戳,新日志文件
# uncomment this if you want your log files compressed
#compress #压缩日志文件,查看时候需要解压
# RPM packages drop log rotation information into this directory
include /etc/logrotate.d 加载外部目录
- 配置自定义轮转条件
除以上自定义文档 我们还可以自定义轮转方式
# no packages own wtmp and btmp -- we'll rotate them here
/var/log/wtmp {
#指定要配置的日志文件
monthly #按照月来轮换,而不是上面默认的周
create 0664 root utmp #轮转后的新日志文件,权限是0664,属于root用户,utmp组
minsize 1M #大小不超过1M
rotate 1 #保留1份,一月一次
}
/var/log/btmp {
missingok #如果日志文件不存在,不报错
monthly
create 0600 root utmp
rotate }
所有日志都可以在这里设置,但是设置的款项多了,不好查找,于是我们可以设置子配置文件,在自定义设置目录里,一个程序日志一个配置规则。
举个栗子:
设置ssh自定义轮转,保留一个月的日志文件,日志大于15M直接轮转。
①首先在子配置目录里创建一个sshd的轮转配置文件
vim /etc/logrotate.d/sshd
②编辑以下配置内容,保存,重启服务。
/var/log/sshd.log {
#日志所在目录
missingok #没有日志不报错
monthly #每月进行轮转
create 0664 root root #创建新的日志权限为0664 属主是root 属组是root
minsize 15M #最大15M
rotate 1 #轮转1次
}
======================================================================================================================================================================================================================================================================================================
辛苦浏览观看,如果对你有帮助,请顺手点个赞吧 (σ゚∀゚)σ…:*☆