日志服务器是依赖linux的rsyslog功能搭建的,用于日志转发和日志收集。rsyslog使用一台linux服务器作为日志服务器,收集其他服务器为rsyslog客户端转发过去的日志,所以rsyslog不仅可以作为日志服务器,还可以作为日志客户端来使用rsyslog配置介绍rsyslog配置包括/etc/rsyslog.定义配置文件会在rsyslog.conf全局配置中加载)rsyslog.conf配置文件包括模块配置、全局配置、规则三部分。日志服务器配置日志服务器的rsyslog配置文件包括以下几部分:模块配置一般来说,您只需要配置为一个日志服务器,就可以通过UDP协议或者TCP协议接收来自其他服务器的日志文件。通过UDP传输内容可以更快,但可能会丢失;而TCP协议传输更安全。全局配置图中的template,logfile可以任意命名,后面%%中的内容是rsyslog变量附加的rsyslog变量:数据项在rsyslog中称为properties,一般用在templates中(即,%%之间的变量或者条件判断。共有三个主要属性:消息属性:msg匹配消息的msg部分。rawmsg从socket接收信息,一般用于debugrawmsg-after-pri。类似于rawmsg,但删除了syslogPRI。hostname消息来源的主机名HOSTNAME别名fromhost消息来源的主机名,一般在中继链中使用fromhost-ip与fromhost相同,只是获取ipsyslogtag消息的tagprogramname,为静态部分的标签。例如tag为named[123456],programname为namedpri消息的PRI,未解码格式系统属性:$bomUTF-8编码的Unicode字节序掩码(BOM)$myhostname当前主机名asitknowtime-RelatedSystemProperties:$now当前日期,格式YYYY-MM-DD,now指当前消息被处理的时间$year当前年份(4位)$month当前月份(2位))$day当前日期(2位)$hour当前小时(24小时)时间(2位)$hhour从0到29分钟,这总是0,而从30到59总是1。$minute当前分钟(2位)规格然后(selector+action)每条规则行由两部分组成,selector部分和action部分,两部分之间用一个或多个空格或制表符分隔,selector部分指定源和日志级别,action部分指定相应的操作选择SELECTORS选择器也由设施和优先级两部分组成,以点分隔。第一部分是消息源或日志设施,第二部分是日志级别。日志设施是auth(security),authpriv:授权和安全相关的消息kern:来自Linux内核的消息mail:邮件子系统生成的消息cron:与cron守护进程相关的信息daemon:守护进程生成的信息news:网络消息子系统lpr:打印相关日志信息user:用户进程相关信息local0到local7:保留,本地使用日志级别(按升序排列):debug:包含详细开发信息的信息,通常只在调试程序时使用。info:情报信息,正常的系统消息,如骚扰报告、带宽数据等,不需要处理。注意:不是错误情况,不需要立即处理。warning:警告信息,不是错误,比如系统盘已使用85%。err:错误,不是很紧急,一定时间内可以修复。crit:临界状态,如硬盘错误,备份连接丢失。alert:应立即纠正的问题,例如系统数据库损坏、ISP连接丢失。出现:需要立即通知技术人员的紧急情况。none:没有记录级别。特别注意消息层之前的连接符号.[=!]!它的意思是:.:表示“记录比后者严重的所有级别(包括本级别)”,例如:mail.info表示只要是邮件咨询,并且信息级别比info严重的(包括信息本身),它将被记录下来。.=:表示需要的级别只有下面的级别,其他的都不需要!.!:感觉是反向选择,就是忽略大于等于这个级别的消息!也就是说,只有低于这个等级的,才会被记录!ActionACTION动作是规则描述的一部分,规则用来处理消息。一般来说,消息内容被写入一种日志文件,但也可以执行其他操作,例如写入数据库表或转发到其他主机。备注:1、日志文件前面的减号表示异步写入文件,如:mail.!info-/var/log/mail.info2,.emerg:omusrmsg:表示所有服务emerg级别的日志会通知所有在线人员3.?模板名表示所有日志都遵循日志文件模板格式在全局配置中配置。@IP表示定义local0-local7的所有系统信息和自定义信息都通过UDP传输到一个IP。@@IP表示转发的内容和规则也可以通过TCP传输写到/etc/rsyslog.d/下的一个单独的文件中符号“&~”代表重定向规则,用于告诉rsyslog守护进程停止进一步处理日志消息而不是在本地写入它们。只需要写入指定的文件或服务器即可。如果不使用重定向规则,除了上面描述的日志文件之外,所有远程消息都会被写入本地日志文件,这意味着日志消息实际上被写入了多次。如:@IP&~备注:local0-local7的自定义服务需要在对应服务的配置文件中配置,否则过去的日志只转发到系统日志。重新启动rsyslog。所有对rsyslog的更新都需要重启rsyslog,包括rsyslog.conf更改后:wq操作,否则rsyslog不能继续使用centos7系统:systemctlrestartrsyslog.serviceubuntuorcentos6:servicersyslogrestartlaravelserviceforwardinglaravel本身支持记录到rsyslog,但是这个配置需要启动。启动syslog配置后,即可以进入rsyslog日志,rsyslog会自动监控。如果日志有变化,会转发给日志服务器,最后转发给日志服务器。结果如图:
