日志服务器搭建之多服务器日志转发与格式化处理

日志服务器搭建是靠linux的rsyslog功能做日志转发和日志收集的linux

rsyslog是由一台Linux服务器做日志服务器,收集其余服务器即rsyslog客户端转发过来的日志,因此rsyslog既能够做为日志服务器,也能够做为日志客户端去使用laravel

rsyslog配置介绍

rsyslog配置包括/etc/rsyslog.conf文件和/etc/rsyslog.d文件夹下的自定义配置文件(自定义配置文件会在rsyslog.conf全局配置中被加载)git

rsyslog.conf配置文件包括模块配置、全局配置、规则三部分数据库

日志服务器配置

日志服务器的rsyslog配置文件包括如下几个部分:ubuntu

模块配置

通常来讲,只须要配置做为日志服务器经过UDP协议仍是TCP协议接收其余服务器的日志文件便可 centos

模块配置
经过UDP传输内容较快,可是可能会出现丢失;而TCP协议传输则较为安全

全局配置

全局设置
图中模板,logfile为任意命名,后面的%%内的内容则是rsyslog变量

附rsyslog变量: data items在rsyslog中叫作properties,通常用在templates(就是%%之间的变量)或者条件判断中。主要有三种Properties:安全

Message Properties:
msg			        匹配message中的msg部分
rawmsg			    从socket收到的信息,通常用来debug
rawmsg-after-pri	和rawmsg相似,可是syslog PRI被移除了
hostname		    message的主机名
source			    HOSTNAME的别名
fromhost		    message来源的主机名,通常是用在relay chain中
fromhost-ip		    同fromhost,不过获取的是ip
syslogtag		    message的tag
programname		    是tag的静态部分,例如tag是named[123456],则programname是named
pri			        message的PRI,undecoded格式

System Properties:
$bom			The UTF-8 encoded Unicode byte-order mask (BOM)
$myhostname		The name of the current host as it knows itself

Time-Related System Properties:
$now			当前日期,格式YYYY-MM-DD,now是指当前message被处理的时间
$year			当前年份(4-digit)
$month			当前月份(2-digit)
$day			当前日期(2-digit)
$hour			当前小时(24 hour) time (2-digit)
$hhour			From minute 0 to 29, this is always 0 while from 30 to 59 it is always 1.
$minute			当前分钟(2-digit)
复制代码

规则(选择器+动做)

每一个规则行由两部分组成,selector部分和action部分,这两部分由一个或多个空格或tab分隔,selector部分指定源和日志等级,action部分指定对应的操做。bash

选择器 SELECTORS selector也由两部分组成,设施和优先级,由点号.分隔。第一部分为消息源或称为日志设施,第二部分为日志级别。服务器

日志设施有网络

auth(security), authpriv: 受权和安全相关的消息
kern: 来自Linux内核的消息
mail: 由mail子系统产生的消息
cron: cron守护进程相关的信息
daemon: 守护进程产生的信息
news: 网络消息子系统
lpr: 打印相关的日志信息
user: 用户进程相关的信息
local0 to local7: 保留,本地使用
复制代码

日志级别有(升序):

debug:包含详细的开发情报的信息,一般只在调试一个程序时使用。
info:情报信息,正常的系统消息,好比骚扰报告,带宽数据等,不须要处理。
notice: 不是错误状况,也不须要当即处理。
warning: 警告信息,不是错误,好比系统磁盘使用了85%等。
err:错误,不是很是紧急,在必定时间内修复便可。
crit:重要状况,如硬盘错误,备用链接丢失。
alert:应该被当即改正的问题,如系统数据库被破坏,ISP链接丢失。
emerg:紧急状况,须要当即通知技术人员。
none:没有记录等级
复制代码

特别留意一下在讯息等级以前还有 .[=!] 的链接符号喔!他表明的意思是这样的: . :表明『比后面还要严重的等级(含该等级)都被记录下來』的意思,例如: mail.info 表明只要是 mail 的咨询,并且该资讯等级严重于info (含 info 自己)时,就会被记录下来的意思。 .=:表明所须要的等级就是后面接的等级而已, 其余的不要! .!:有点反向选择的感受,表明忽略大于等于这个等级的讯息! 亦便是低于这个等级的才会被记录的意思!

动做 ACTION action是规则描述的一部分,规则用于处理消息。总的来讲,消息内容被写到一种日志文件上,但也能够执行其余动做,好比写到数据库表中或转发到其余主机。

动做设置

备注:
一、日志文件前面的减号表示的意思是异步写文件,好比: mail.!info -/var/log/mail.info
二、而*.emerg :omusrmsg:表明全部服务emerg级别的日志都会告知全部在线人员
三、
.* ?模板名表示全部日志都遵循logfile模板格式

日志客户端配置

日志客户端也是使用rsyslog功能,且配置文件和日志服务器同样,但通常只会在全局配置中配置如下内容

客户端配置
. @IP表示将全部系统信息和定义local0-local7的自定义信息经过UDP传输到某IP . @@IP则表示经过TCP传输 而转发内容和规则也能够写到/etc/rsyslog.d/下的一个单独文件

符号"& ~"表示了一个重定向规则,被用来告知rsyslog守护进程中止对日志消息的进一步处理,而且不要在本地写入。只须要写入指定文件或服务器中便可,若是没有使用该重定向规则,那么全部的远程消息都会在写入上述描述的日志文件以外同时被写入到本地日志文件,这就意味着日志消息实际上被写了屡次。如: . @IP & ~

备注: local0-local7的自定义服务须要在对应服务的配置文件中配置,不然转发过去的日志只有系统日志

重启rsyslog

全部对于rsyslog的更新都须要重启rsyslog,包括对rsyslog.conf更改后的:wq操做,不然rsyslog没法继续使用

centos7系统:
systemctl restart rsyslog.service
ubuntu或centos6:
service rsyslog restart
复制代码

laravel服务转发

laravel自身支持将日志打到rsyslog,可是须要启动该配置,启动了syslog配置后,便可打到rsyslog日志中,rsyslog会自动监控。若是其中日志发生变化,会转发到日志服务器中

laravel配置

最终转发到日志服务器的结果如图:

最终结果
相关文章
相关标签/搜索