日志服务rsyslog
1.日志是什么?
电脑的日志相当于我们平常写的日记,日志里面记录的是服务器的状态。
日志的存在可以使管理员提前知道服务器的各种状态,如果服务器出现什么问题可以提前处理。
那么问题来了,公司的服务器很多,难道管理员一个一个查看服务器的状态吗?实际上并不是这样的,为了提高工作效率,我们可以把所有服务器的日志集中在一起管理,放在一台主机上管理,将其他服务器的日志都传到这台管理日志的主机上,这样就方便多了。
注意:系统启动自动打开的shell会一直产生日志
2.搭建实验环境
步骤一:先在真机里面开启两台虚拟机,并且配置好网络
配置网络在sshd服务这篇文章里面已经详细说过,这里就不演示过程了
一台为Desktop主机,另外一台为server主机
步骤二:将Desktop主机当作日志发送方,将server主机当作日志接受方(管理日志)
Desktop主机的ip地址为172.25.254.111
server主机的ip地址为172.25.254.211
3.系统日志管理基本概念
(1)rsyslog:此服务是用来采集系统日志的,它自己不产生日志,只是起到采集日志的作用
(2)rsyslog的管理:
/var/log/messages | 服务信息日志 |
---|---|
/var/log/secure | 系统登陆日志 |
/var/log/cron | 定时任务日志 |
/var/log/maillog | 邮件日志 |
/var/log/boot.log | 系统启动日志 |
注意:以上这些路径是用来指定日志的采集路径
(3)日志采集规则在/var/log/file(文件名)中设置
注意:清楚什么类型的日志,什么级别的日志
日志类型
auth pam | 产生的日志 |
---|---|
authpriv | ssh,ftp等登陆信息的验证信息 |
cron | 时间任务相关 |
kern | 内核 |
lpr | 打印 |
邮件 | |
mark | (syslog)-rsyslog 服务内部的信息,时间标识 |
news | 新闻组 |
user | 用户程序产生的相关信息 |
uucp | unix to unix copy,unix主机之间相关的通讯 |
local 1~7 | 自定义的日志设备 |
日志级别
debug | 有调试信息的,日志信息最多 |
---|---|
info | 一般信息的日志,最常用的 |
notice | 最具有重要性的普通条件的信息 |
warning | 警告级别 |
err | 错误级别,阻止某个功能或者模块不能正常工作的信息 |
crit | 严重级别,阻止整个系统或者整个软件不能正常工作的信息 |
alert | 需要立刻修改的信息 |
emerg | 内核崩溃等严重信息 |
none | 什么都不记录 |
注意
从上到下,级别从低到高,记录的信息越来越少,详细的可以查看手册:man 3 syslog
4.日志的定向采集
将什么类型、什么级别的日志放在哪个路径下,这就叫日志的定向采集
这样做也有利于日志的管理和查看,因此应该设计采集规则
(1)搭建实验环境:此实验在一台虚拟机上面做
步骤一:在真机里面开启虚拟机Desktop步骤二:配置虚拟机的网络,这里就不再演示过程,ip为172.25.254.111
(2)操作:
步骤一:打开设定日志采集规则的文件 vim /etc/rsyslog.conf
步骤二:在日志采集文件里面设置将任意类型、任何级别的日志都存放在/var/log/westos下,如果westos文件不存在,会自动生成该文件。命令格式为 . /var/log/westos
步骤三:重启系统:
(3)测试:
步骤一:生成日志 systemctl restart sshd
步骤二:查看日志 cat /var/log/westos
由此可见,将任意类型、任何级别的日志定向采集到了/var/log/westos之中
(4)总结:实际在企业当中,我们要将日志分类管理,可以参考第三项系统日志管理里面的类型和级别,将 *.*改为日志类型.日志级别,然后存放在指定的文件当中即可。
5.日志的远程同步
一台服务器管理多台服务器日志的实验如下:
步骤一:
在日志发送方设置:
(1)在发送方Desktop主机中先 vim /etc/rsyslog.conf
(2)在/etc/rsyslog.conf这个文件中写入 . @172.25.254.211(接受方的ip)
(3)退出以上文件后,在shell里面输入 systemctl restart rsyslog ,重启系统
步骤二:
在日志接受方设置:
(1)在接受方server主机中先 vim /etc/rsyslog.conf
(2)将/etc/rsyslog.conf 这个文件中的15行和16行的注释去掉
15 $ModLoad imudp 日志接受模块
16 $UDPServerRun 514 开启接收模块
有注释:
无注释:
(3)重启系统:systemctl restart rsyslog
关闭防火墙:systemctl stop firewalld
systemctl disable firewalld
步骤三:测试
(1)在发送方和接收方清空日志文件
命令格式: > /var/log/messages
(2)在日志发送方 的shell当中输入 :
logger test ###产生日志
cat /var/log/messages ###查看日志已经生成查看结果如下:
(3)在日志接受方查看远程主机发送过来的同步日志:
在server主机的shell当中输入: cat /var/log/messages
可见两台主机实现远程同步了
但是server主机接收的日志不止是刚刚新建的日志,而是还有很多 /etc/rc.d/rc.local文件产生的日志
(4) 因此应该在发送方主机中清空这个文件 ,命令格式为: > /etc/rc.d/rc.local
清空后重启这台主机:
(5)在日志接收方:
重启系统:systemctl restart rsyslog
关闭防火墙:systemctl stop firewalld
systemctl disable firewalld
(6)在日志发送方和接收方都清空历史日志文件
> /var/log/messages ,重新建立日志,并且查看:
由此可见此时只有刚建的那个日志
(7)在日志接收方查看远程同步的日志
可见实现准确的远程同步了
注意
我所做的实验是一台发送方,一台接收方,实际企业中有很多服务器,管理的原理和方法和这个类似
也可以监控远程同步(日志的传送过程)的过程,命令为: watch -n 1 tail -f /var/log/messages
用该命令在接收方可以查看接口配置是否正确 netstat -antlupe | grep rsyslog
一定要重启,负责不生效
(8) 用该命令在接收方可以查看接口配置是否正确 netstat -antlupe | grep rsyslog
可见,服务端接口配置正确