1. 系统日志

1.什么是系统日志
系统日志简单的说就是记录系统在什么时候由哪个进程做了什么样的行为时,发生了何种的事件等。日志记录了系统每天发生的各种各样的事情,比如监控系统状况、排查系统故障等。我们可以通过日志来检查错误发生的原因,或者受到攻击时攻击者留下的痕迹,日志的主要功能是审计和监测,还可以实时地监测系统状态,监测和追击侵入者等。
2.系统日志的默认分类
系统日志也分很多类,以便管理查看。

/var/log/messages               ##服务信息日志
/var/log/secure                 ##系统登陆日志
/var/log/cron                   ##定时任务日志
/var/log/maillog                ##邮件日志
/var/log/boot.log               ##系统启动日志

2. 日志管理服务rsyslog

rsyslog日志管理服务采集日志和分类存放日志,并不产生日志。其主配置文件是/etc/rsyslog.cof,在里面设置相关选项。

1.rsyslog日志分类

vim /etc/rsylslog.conf 主配置文件

rsyslog写入到mysql rsyslog日志_rsyslog写入到mysql


服务.日志级别 /存放文件

比如:

rsyslog写入到mysql rsyslog日志_rsyslog写入到mysql_02


意思为所有服务的所有日志级别都存放在/var/log/potizo这个文件里

rsyslog写入到mysql rsyslog日志_rsyslog写入到mysql_03


更改完配置文件,重启服务。再查看/var/log/potizo可以看到采集到的日志内容。

【题外话】日志下面看到很多rc.local的信息,很是烦琐。/etc/rc.d/rc.local这是用户自定义开启启动程序,系统开机会自动运行的脚本。这里为了查看起来清爽整洁,我们可以作以下操作:

1.> /etc/rc.d/rc.local ##清空该文件内容

2.reboot ##重启系统

rsyslog写入到mysql rsyslog日志_rsyslog写入到mysql_04


清空日志文件/var/log/potizo,开启sshd服务,可以看到采集到的日志内容就很清晰,没有rc.local的信息了。

3. 日志的类型和级别

1.日志类型

auth                    ##pam产生的日志(鸟哥p434有讲pam模块)
authpriv                ##ssh,ftp等登录信息的验证信息
cron                    ##时间任务相关
kern                    ##内核
lpr                     ##打印
mail                    ##邮件
mark(syslog)–rsyslog    ##服务内部的信息,时间标识
news                    ##新闻组
user                    ##用户程序产生的相关信息
uucp                    ##unix to unix copy, unix主机之间相关的通讯
local 1~7               ##自定义的日志设备
  1. 日志级别
debug                   ##有调式信息的,日志信息最多
info                    ##般信息的日志,最常用
notice                  ##最具有重要性的普通条件的信息
warning                 ##警告级别
err                     ##错误级别,阻止某个功能或者模块不能正常工>作的信息
crit                    ##严重级别,阻止整个系统或者整个软件不能正>常工作的信息
alert                   ##需要立刻修改的信息
emerg                   ##内核崩溃等严重信息
none                    ##什么都不记录

【注】从上到下,级别从低到高,记录的信息越来越少
3.连接符号

.xxx:                    ##表示大于等于xxx级别的信息
.=xxx:                   ##表示等于xxx级别的信息
.!xxx:                   ##表示再xxx之外的等级的信息

4. 日志的远程同步

如果要管理很多台主机,分别查看日志很麻烦。如果能够将所有主机的日志都同步到一台机器上,就方便很多。下面以发送端(client)和接收端(server)模拟日志同步。

在发送方:

rsyslog写入到mysql rsyslog日志_重启_05


rsyslog写入到mysql rsyslog日志_重启_06


配置日志 【注】"@"表示udp协议发送,“@@”表示tcp协议发送

rsyslog写入到mysql rsyslog日志_接收端_07


重启日志采集服务

在接收方:

rsyslog写入到mysql rsyslog日志_接收端_08


rsyslog写入到mysql rsyslog日志_接收端_09


15行表示开启接收模块,16行表示开启接收端口

rsyslog写入到mysql rsyslog日志_日志采集_10


重启服务

rsyslog写入到mysql rsyslog日志_接收端_11


最重要的是要在接收端关闭防火墙服务,日志是文本数据,会被防火墙拦截。

测试:

在日志发送和接收方都清空日志

并在日志发送方通过logger发送一句话

rsyslog写入到mysql rsyslog日志_重启_12


rsyslog写入到mysql rsyslog日志_接收端_13


可以看到,日志的发送方和接收方都可以看到该条日志。

5. 日志采集格式的设定

日志既然能够采集,那也一定可以按照我们想要的格式来采集。比如我们想要将日记采集的格式定为:日志的时间、主机的ip、日志采集的服务对象、日志的内容,应该怎么做呢?

首先要搞清楚的是,我们是在接收端的主机来定义日志采集的格式,而不是在发送端。

在接收端的操作:

rsyslog写入到mysql rsyslog日志_重启_14


rsyslog写入到mysql rsyslog日志_日志采集_15


我们在这个主配置文件下的第47行和第55行添加两行内容。

意思分别为:47行表示设定日志采集的格式,并命名这种格式为POTIZO,其中

%timegenerated%		##显示日志时间
%FROMHOST-IP%		##显示主机IP
%syslogtag%		    ##日志记录的服务目标
%msg%			    ##显示日志内容
\n                  ##表示换行

55行意思是在指定的日志中采用POTIZO格式,这里我们指定的文件是/var/log/potizo_messages,表示所有服务的所有日志级别都以POTIZO格式采集到/var/log/potizo_messages文件中。

rsyslog写入到mysql rsyslog日志_rsyslog写入到mysql_16


重启了日值采及服务之后,我们再来进行测试。

在发送端发送日志内容test111:

rsyslog写入到mysql rsyslog日志_接收端_17


在接收端查看我们指定POTIZO格式的文件:

rsyslog写入到mysql rsyslog日志_日志采集_18


可以看到日志显示的格式为:日志时间、主机ip(而不是之前的主机名)、日志采集的目标、日志内容。这表示我们日志采集的格式设定成功。但再打开/var/log/messages时,发现采集的日志格式并不是我们设定的POTIZO,而是默认格式。

rsyslog写入到mysql rsyslog日志_接收端_19


也就是说上一步,我们定义了采集格式,同时将这种采集格式指定给某个特定文件,那如果我们想要将这个格式应用到所有的日志采集文件中,也就是说将这种格式定义为默认采集格式,操作如下:

rsyslog写入到mysql rsyslog日志_rsyslog写入到mysql_20


第29行,在行末写上格式的名字。此时我们再看/var/log/messages这个文件的日志采集格式

rsyslog写入到mysql rsyslog日志_重启_21


是POTIZO格式。