日志服务rsyslog

1.日志是什么?

电脑的日志相当于我们平常写的日记,日志里面记录的是服务器的状态。

日志的存在可以使管理员提前知道服务器的各种状态,如果服务器出现什么问题可以提前处理。
那么问题来了,公司的服务器很多,难道管理员一个一个查看服务器的状态吗?实际上并不是这样的,为了提高工作效率,我们可以把所有服务器的日志集中在一起管理,放在一台主机上管理,将其他服务器的日志都传到这台管理日志的主机上,这样就方便多了。
注意:系统启动自动打开的shell会一直产生日志

2.搭建实验环境

步骤一:先在真机里面开启两台虚拟机,并且配置好网络
配置网络在sshd服务这篇文章里面已经详细说过,这里就不演示过程了
一台为Desktop主机,另外一台为server主机日志服务rsyslog
日志服务rsyslog

步骤二:将Desktop主机当作日志发送方,将server主机当作日志接受方(管理日志)
Desktop主机的ip地址为172.25.254.111
日志服务rsyslog
server主机的ip地址为172.25.254.211
日志服务rsyslog

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 打印
mail 邮件
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
日志服务rsyslog
日志服务rsyslog步骤二:配置虚拟机的网络,这里就不再演示过程,ip为172.25.254.111
日志服务rsyslog
(2)操作:
步骤一:打开设定日志采集规则的文件 vim /etc/rsyslog.conf
日志服务rsyslog
步骤二:在日志采集文件里面设置将任意类型、任何级别的日志都存放在/var/log/westos下,如果westos文件不存在,会自动生成该文件。命令格式为 . /var/log/westos
日志服务rsyslog

步骤三:重启系统:
日志服务rsyslog
(3)测试:
步骤一:生成日志 systemctl restart sshd
日志服务rsyslog
步骤二:查看日志 cat /var/log/westos
日志服务rsyslog
日志服务rsyslog
由此可见,将任意类型、任何级别的日志定向采集到了/var/log/westos之中

(4)总结:实际在企业当中,我们要将日志分类管理,可以参考第三项系统日志管理里面的类型和级别,将 *.*改为日志类型.日志级别,然后存放在指定的文件当中即可。

5.日志的远程同步

一台服务器管理多台服务器日志的实验如下:
步骤一
在日志发送方设置:
(1)在发送方Desktop主机中先 vim /etc/rsyslog.conf
日志服务rsyslog
(2)在/etc/rsyslog.conf这个文件中写入 . @172.25.254.211(接受方的ip)
日志服务rsyslog

(3)退出以上文件后,在shell里面输入 systemctl restart rsyslog ,重启系统
日志服务rsyslog
步骤二
在日志接受方设置:
(1)在接受方server主机中先 vim /etc/rsyslog.conf
日志服务rsyslog
(2)将/etc/rsyslog.conf 这个文件中的15行和16行的注释去掉
15 $ModLoad imudp 日志接受模块
16 $UDPServerRun 514 开启接收模块
有注释:
日志服务rsyslog
无注释:
日志服务rsyslog

(3)重启系统:systemctl restart rsyslog
关闭防火墙:systemctl stop firewalld
systemctl disable firewalld
日志服务rsyslog

步骤三:测试
(1)在发送方和接收方清空日志文件
命令格式: > /var/log/messages
日志服务rsyslog
日志服务rsyslog
(2)在日志发送方 的shell当中输入 :
logger test ###产生日志
cat /var/log/messages ###查看日志已经生成
日志服务rsyslog查看结果如下:
日志服务rsyslog
(3)在日志接受方查看远程主机发送过来的同步日志:
在server主机的shell当中输入: cat /var/log/messages
日志服务rsyslog日志服务rsyslog
可见两台主机实现远程同步了
但是server主机接收的日志不止是刚刚新建的日志,而是还有很多 /etc/rc.d/rc.local文件产生的日志

(4) 因此应该在发送方主机中清空这个文件 ,命令格式为: > /etc/rc.d/rc.local
清空后重启这台主机:
日志服务rsyslog
(5)在日志接收方:
重启系统:systemctl restart rsyslog
关闭防火墙:systemctl stop firewalld
systemctl disable firewalld
日志服务rsyslog

(6)在日志发送方和接收方都清空历史日志文件
> /var/log/messages ,重新建立日志,并且查看:
日志服务rsyslog
由此可见此时只有刚建的那个日志
(7)在日志接收方查看远程同步的日志
日志服务rsyslog
可见实现准确的远程同步了
注意
我所做的实验是一台发送方,一台接收方,实际企业中有很多服务器,管理的原理和方法和这个类似
也可以监控远程同步(日志的传送过程)的过程,命令为: watch -n 1 tail -f /var/log/messages
用该命令在接收方可以查看接口配置是否正确 netstat -antlupe | grep rsyslog
一定要重启,负责不生效
(8) 用该命令在接收方可以查看接口配置是否正确 netstat -antlupe | grep rsyslog
日志服务rsyslog
可见,服务端接口配置正确