周莉 李金祥
摘 要:文章以中小企业日志服务为出发,阐述日志服务器的配置和管理方法,分析不同级别日志信息的管理方法和日志轮替,总结日志服务器运维方式。
关键词:Linux;日志服务器;轮替
在Linux系统中,日志文件起着至关重要的作用,日志文件可以记录用户登录信息、系统故障等大量的信息,合理地使用日志文件可以及时发现问题并制定相应的解决方案。日志文件的产生方式有两种:一种是由操作系统产生,一种是由各自软件自带的日志功能产生[1]。
1 日志管理概述
rsyslog是当前主流Linux系统默认的分布式日志管理工具,这款系统工具遵循了高性能、高安全功能和模块化设计,能够接受各种日志信息源,可多款数据库协同工作,可对日志进行过滤,也可自定义日志输出格式。在网络环境下,可以将本地机日志文件进行远程存储统一放到日志服务器上[2]。本文以CentOS6.5为平台,阐述中小企业中日志管理服务器的配置和运维方法,包括日志服务器的搭建、Web服务器和邮件服务器日志的集中管理,日志文件的轮替管理,设企业内部网络使用的网段是192.168.0.024,日志服务器地址是192.168.0.254,邮件服务器地址是192.168.0.253,Web服务器的地址是192.168.0.252。
1.1 rsyslog配置文件解析
rsyslog配置文件主要由模块、全局配置、规则、模板和输出这5部分组成。
1.1.1 模块
模块部分用以说明rsyslog运行时加载哪些模块,例如本地日志记录、内核日志信息记录等。
1.1.2 全局配置
全局变量配置ryslog守护进程的全局属性,比如主信息队列大小、配置文件存放目录及名称等。
1.1.3 规则
规则由选择部分(Selector)和动作部分(Action)组成,选择部分又分为日志设施和日志级别。日志设施主要包括授权与安全相关的信息(auth, authpriv)、内核信息(kern)、邮件系统消息(mail)、cron守护进程信息(cron)、守护进程产生的信息(daemon)、网络消息子系统(news)、打印相关的信息(lpr)、用户相关日志信息(用户进程相关的信息)、保留本地使用的日志设施(local0 to local7)。日志级别按严重程度由低到高可包括常规信息(info)、注意事项(notice)、警告信息(warning)、错误信息(err,crit,alert和emerg),其中,err是指一些重大的错误信息,例如配置文件的某些设置值造成该服务无法启动的信息说明,crit是比err严重的错误,alert指更严重的错误,emerg指系统致命的错误。例如硬件问题导致内核无法顺利运行时会出现emerg等级的错误信息。日志设备和日志级别的配置可选用[.=!]链接符号,具体含义如下:(1)“.”代表比后面还要高的级别(含该级别)都别记录;(2)“.=”代表只记录该等级的信息;(3)“.!”代表不等于,即除该级别的其他级别信息都记录。动作部分是规则描述的一部分,位于选择器部分后面,逾期用空格或制表符分开,定义如何处理消息。总的来说,消息内容被写到一种日志文件上,但也可以执行其他动作,比如写到数据库表中或转发到其他主机。(1)保存到文件,mail.* -/var/log/maillog如果路径前有“-”,则表示每次输出日志时不同步(fsync)指定日志文件。文件路径既可以是静态文件也可以是动态文件,动态文件由模板前加“?”定义。(2)通过网络发送日志,@表示使用 UDP 协议,@@表示使用 TCP 协议[3]。(3)“~”表示丢弃所有信息。
1.1.4 模板
模板(templates)可指定日志信息的格式,也可用于生成动态文件名,或在规则中使用,定义方法是“$template模板名称,模板属性”。
1.1.5 输出
输出模块用户可以自定义输出的信息,定义方法是“$outchannel NAME, FILE_NAME, MAX_SIZE, ACTION”,NAME指定输出频道的名称,FILE_NAME指定输出文件,MAX_SIZE指定日志文件的大小,单位是bytes,ACTION指定日志文件到达MAX_SIZE时的操作。
1.2 日志服务器的设置
针对网络中的日志服务器收集邮件服务器的邮件服务日志信息以及Web服务器的Apache服务器的日志信息,在rsyslog配置文件/etc/rsyslog.conf中的module模块需要开放接收日志的服务,可以选择UDP协议或者TCP协议来接收日志信息,配置如下:
$ModLoad imudp #加载udp接收数据模块
$UDPServerRun 514 #启动日志接收服务,使用UDP协议,工作端口号为514(udp)
$ModLoad imtcp ##加载tcp接收数据模块
$InputTCPServerRun 514 #启动日志接收服务,使用TCP协议,工作端口号为514(tcp)
*.info;mail.none;authpriv.none;cron.none;local4.none;local3.none /var/log/messages
#不記录local3设施的日志
$template RemoteLogs,”/data/ logs/ %HOSTNAME%/%PROGRAM-NAME%.log”
#接收客户端local3设施传送来的日志并存放到指定位置(位置可用定义的模板。?代表使用动态的模板),按不同的程序分别存放,模板设置为/data/logs下的”主机名/程序名(即日志附加标签);
local3.* ? RemoteLogs#读取邮件服务器上邮件服务的日志
rsyslog服务的主配置文件配置完成后,编辑/etc/sysconfig/rsyslog中SYSLOGD_OPTIONS=””开启远程日志接收功能,同时在防火墙中开发514端口允许日志信息的传入。
1.3 日志服务客户端的设置
客户端设置主机名称,在客户端配置/etc/rsyslog.conf,通过加载$ModLoad imfile模块来读取特定的日志文件,以邮件服务器的日志文件/var/log/maillog为例,定义以下信息:
$InputFileName /var/log/maillog #读取日志文件
$InputFileTag mail_log # 日志写入时的附加标签
$InputFileSeverity info #日志级别,info及以上的信息
$InputFileStateFile /etc/rsyslog.d/stat-mail # 记录日志状态的文件
$InputFileFacility local3 #日志设施
$InputFilePollInterval 1 #日志文件检查间隔(秒)
$InputFilePersistStateInterval 1 #回写偏移量数据到文件间隔时间(秒)
$InputRunFileMonitor #进行日志读取
local3.* @192.168.0.254:514 #使用udp协议将日志信息传送至日志服务器
2 日志文件的轮替
logrotate主要针对日志文件来进行轮替的操作,主要功能就是将旧的日志文件移动成旧文件并最终删除,同时重新建立一个新的空的文件来记录日志[4]。
logrotate程序参数配置文件是/etc/logrotate.conf和/etc/logrotate.d。logrotate.conf是主要的参数文件,logrotate.d是一个目录,该目录里面的所有文件都会被主动读入/etc/logrotate.conf当中来进行,在logrotate.d中如果没有指定的一些详细设置,则以logrotate.conf这个文件的设置作为默认值。
logrotate的默认配置文件是/etc/logrotate.conf,各个服务可以在/etc/logrotate.d目录下设置自身的日志轮替规则文件。具体设置如下:
/data/logs/mail/ mail_log #设置轮替操作的对象
{ #开始设置参数
monthly #每月进行一次轮替
size=10 M #文件容量大于10 M时主动进行轮替
rotate 5 #保留5个轮替文件
compress #轮替时对日志文件进行压缩
sharedscripts #嵌入脚本开始
postrotate #在轮替结束后调用
/usr/bin/killall -HUP rsyslogd #輪替结束后重启rsyslog服务
endscript #嵌入脚本结束
} #参数设置结束
3 结语
Linux以其稳定的性能和开源的优越性正得到日益广泛的应用,越来越多的中小企业构建网络服务器时选用Linux平台,本文提出的基于Linux平台的日志服务器的综合配置,适用于中小企业网络,对其他多种服务器的管理具有重要的辅助功能,有较高的实用价值和较大的应用空间。
[参考文献]
[1]陈金莲.用Linux日志运维服务器[J].网络安全和信息化,2017(7):68-70.
[2]苏志军,康丽娟,金诚志.Linux环境下syslog日志系统研究[J].福建电脑,2010(4):13.
[3]曹新鸿.基于VMware下的Linux环境构建日志服务器[J].福建电脑,2015(10):98-99.
[4]鸟哥.Linux私房菜-基础学习篇[M].北京:人民邮电出版社,2010.