10.1、rsyslog简介

syslog是一个历史悠久的日志系统。几乎所有的UNIX和Linux操作系统都采用syslog进行系统日志的管理和配置。Linux系统内核和许多程序会产生各种错误信息、警告信息和其他的提示信息。syslog可以根据信息的来源以及信息的重要程度将信息保存到不同的日志文件中。在默认的syslog配置下,日志文件通常都保存在/var/log目录下,在Centos6中,syslog的守护进程为rsyslog,系统启动时,默认会自动运行rsyslog守护进程。

在syslog中定义了一些日志文件,这些日志文件的位置以及说明:

/var/log/dmesg 记录init进程启动之前的信息

/sbin/init 进程启动后日志需要滚动(日志切割)

/var/log/maillog邮件系统产生的日志信息

/var/log/secure 安全系统产生的日志信息

/var/log/messages系统标准错误日志信息;非内核产生引导信息;各子系统产生的信息

10.2、rsyslog配置

syslog的配置文件为/etc/rsyslog.conf,在该文件中指定了rsyslog记录日志的信息来源、信息类型以及保存位置。

[root@mylinuxlog]#cat/etc/rsyslog.conf#rsyslogv5configurationfile#Formoreinformationsee/usr/share/doc/rsyslog-*/rsyslog_conf.html#Ifyouexperienceproblems,seehttp://www.rsyslog.com/doc/troubleshoot.html####MODULES####$ModLoadimuxsock#providessupportforlocalsystemlogging(e.g.vialoggercommand)$ModLoadimklog#provideskernelloggingsupport(previouslydonebyrklogd)#$ModLoadimmark#provides--MARK--messagecapability#ProvidesUDPsyslogreception#$ModLoadimudp#$UDPServerRun514#ProvidesTCPsyslogreception#$ModLoadimtcp#$InputTCPServerRun514####GLOBALDIRECTIVES#####Usedefaulttimestampformat$ActionFileDefaultTemplateRSYSLOG_TraditionalFileFormat#Filesyncingcapabilityisdisabledbydefault.Thisfeatureisusuallynotrequired,#notusefulandanextremeperformancehit#$ActionFileEnableSyncon#Includeallconfigfilesin/etc/rsyslog.d/$IncludeConfig/etc/rsyslog.d/*.conf####RULES#####Logallkernelmessagestotheconsole.#Loggingmuchelsecluttersupthescreen.#kern.*/dev/console#Loganything(exceptmail)oflevelinfoorhigher.#Don'tlogprivateauthenticationmessages!*.info;mail.none;authpriv.none;cron.none/var/log/messages#Theauthprivfilehasrestrictedaccess.authpriv.*/var/log/secure#Logallthemailmessagesinoneplace.mail.*-/var/log/maillog#Logcronstuffcron.*/var/log/cron#Everybodygetsemergencymessages*.emerg*#Savenewserrorsoflevelcritandhigherinaspecialfile.uucp,news.crit/var/log/spooler#Savebootmessagesalsotoboot.loglocal7.*/var/log/boot.log####beginforwardingrule####Thestatementbetweenthebegin...enddefineaSINGLEforwarding#rule.Theybelongtogether,doNOTsplitthem.Ifyoucreatemultiple#forwardingrules,duplicatethewholeblock!#RemoteLogging(weuseTCPforreliabledelivery)##Anon-diskqueueiscreatedforthisaction.Iftheremotehostis#down,messagesarespooledtodiskandsentwhenitisupagain.#$WorkDirectory/var/lib/rsyslog#wheretoplacespoolfiles#$ActionQueueFileNamefwdRule1#uniquenameprefixforspoolfiles#$ActionQueueMaxDiskSpace1g#1gbspacelimit(useasmuchaspossible)#$ActionQueueSaveOnShutdownon#savemessagestodiskonshutdown#$ActionQueueTypeLinkedList#runasynchronously#$ActionResumeRetryCount-1#infiniteretriesifhostisdown#remotehostis:name/ip:port,e.g.192.168.0.1:514,portoptional#*.*@@remote-host:514####endoftheforwardingrule###

该文件以'#'为注释符,其中每一行的语法格式为:

[消息来源.消息级别][动作]

其中,[消息来源.消息级别]和[动作]之间以Tab键进行分隔,同一行rsyslog配置中允许出现多个[消息来源.消息级别],必须以';'进行分隔。

*.info;mail.none;authpriv.none;cron.none/var/log/messages

rsyslog(facility)消息来源及说明:

auth: 认证相关的 authpriv: 权限,授权相关的

cron: 任务计划相关的 daemon: 守护进程相关的

kern: 内核相关的 lpr: 打印相关的

mail: 邮件相关的 mark: 标记相关的

news: 新闻相关的 security:安全相关的,与auth 类似

syslog:syslog自己的 user: 用户相关的

* 表示所有的facility uucp: unix to unix cp 相关的

local0-local7:本地用户

rsyslog(log level)消息级别及说明:

debug: 程序或系统的调试信息 info: 一般信息

notice: 不影响正常功能,需要注意的消息 err/error: 错误信息

crit: 比较严重的 alert: 必须马上处理的

emerg/panic:会导致系统不可用的 *: 表示所有的日志级别

none: 跟*相反,表示啥也没有

warning/warn:可能影响系统功能,需要提醒用户的重要事件

rsyslog消息级别是向上匹配的,即如果指定了一个消息级别,那么指定级别及比该指定级别更高级的消息都会包含进去。例如,warning表示大于或等于warning级别的消息都会被处理,包括emerg、alert、crit、err和warning。消息级别越低,消息的数量就会越大,如果只想匹配某个确定等级的消息,而不希望更高级的消息,可以使用等号进行指定。

cron.=notice/var/log/cron

rsyslog(action)处理动作:

系统上的绝对路径:将消息保存到普通文件 如: /var/log/xxx

| :通过管道送给其他的命令处理

终端 :把消息发送到本地主机终端 如:/dev/console

@HOST :把消息转发到另一台syslog服务器上进行处理 如: @10.0.0.1

用户 :把消息发送到指定用户,用户名以','进行分隔 如: root

* :登录到系统上的所有用户,一般emerg级别日志这样定义

配置实例:

通过logger命令可以模拟产生各类的syslog消息,从而测试配置是否正确。

用法:logger [-isd] [-f file] [-p pri] [-t tag] [-u socket][message ...]

[root@mylinuxlog]#vim/etc/rsyslog.conf#syslog测试#修改配置文件,添加这两行kern.info/var/log/kern_test.log[root@mylinuxlog]#/etc/init.d/rsyslogrestart#重启进程关闭系统日志记录器:[确定]启动系统日志记录器:[确定][root@mylinuxlog]#loggerkern.info'testinfo'#模拟内核信息[root@mylinuxlog]#cat/var/log/kern_test.log#产生的日至消息May319:11:30localhostkernel:imklog5.8.10,logsource=/proc/kmsgstarted.

10.3、其它日志

除了rsyslog以外,Linux系统还提供了大量其他的日志文件,这些日志文件中记录了非常重要的消息 。常用的主要有dmesg、wtmp、btmp和.bash_history等。

dmesg日志:记录内核日志信息

日志文件/var/log/dmesg中记录了系统启动过程中内核日志信息,包括系统的设备信息,以及在启动和操作过程中系统记录的任何错误和问题的信息。

[root@mylinuxlog]#less/var/log/dmesgInitializingcgroupsubsyscpusetInitializingcgroupsubsyscpuLinuxversion2.6.32-642.11.1.el6.x86_64(mockbuild@c1bm.rdu2.centos.org)(gccversion4.4.720120313(RedHat4.4.7-17)(GCC))#1SMPFriNov1819:25:05UTC2016Commandline:roroot=/dev/vda1console=ttyS0console=tty0printk.time=1panic=5rd_NO_LUKSKEYBOARDTYPE=pcKEYTABLE=usLANG=zh_CN.UTF-8rd_NO_MDSYSFONT=latarcyrheb-sun16rd_NO_LVMcrashkernel=autord_NO_DMKERNELsupportedcpus:IntelGenuineIntelAMDAuthenticAMDCentaurCentaurHaulsBIOS-providedphysicalRAMmap:BIOS-e820:0000000000000000-000000000009fc00(usable)

用户登录日志

/var/log/wtmp和/var/log/btmp是Linux系统上用户保存用户登录信息的日志文件。其中,wtmp用于保存用户成功登录的记录,btmp用于保存用户登录失败的日志记录。这两个文件都是二进制的,无法直接使用文本编辑工具打开,必须通过last和lastb命令进行查看。

[root@mylinuxlog]#last|less#查看登录成功的信息rootpts/0192.168.1.120WedMay318:30stillloggedinrootpts/0192.168.1.120TueMay214:47-15:40(00:53)rootpts/0192.168.1.120FriApr2812:00-22:01(10:00)rootpts/0192.168.1.120MonApr2408:54-17:18(08:23)rootpts/0192.168.1.120SunApr2318:48-22:00(03:11)rootpts/0192.168.1.120SunApr2316:28-16:32(00:03)rootpts/0192.168.1.120SatApr2212:51-13:39(00:47)rootpts/0192.168.1.120SatApr2212:03-12:51(00:47)rootpts/0192.168.1.120FriApr2112:51-13:16(00:24)...[root@mylinuxlog]#lastb#查看登录失败的信息supportssh:notty171.212.140.107WedMay318:27-18:27(00:00)adminssh:notty78.106.24.79WedMay313:18-13:18(00:00)liuyrssh:notty61.147.166.76WedMay312:53-12:53(00:00)adminssh:notty124.131.79.205WedMay312:41-12:41(00:00)adminssh:notty112.120.73.220WedMay311:37-11:37(00:00)supportssh:notty2.177.238.135WedMay310:59-10:59(00:00)ubntssh:notty109.161.75.102WedMay309:33-09:33(00:00)adminssh:notty181.25.207.227WedMay309:14-09:14(00:00)adminssh:notty181.26.181.184WedMay306:54-06:54(00:00)adminssh:notty181.26.181.184WedMay306:54-06:54(00:00)adminssh:notty167.160.149.47WedMay305:27-05:27(00:00)adminssh:notty179.63.255.251WedMay305:07-05:07(00:00)...

用户操作记录

默认情况下,在每个用户的主目录下都会有一个.bash_history文件,该文件中保存了该用户输入的所有命令记录,管理员可以通过该文件查看某个用户做过什么操作。

[root@mylinuxlog]#cat/root/.bash_history#1493001194htop#1493352081pip3installNumpy#1493707660LS#1493707661ls#1493707664ls#1493707668cd/selinux/#1493707669ls#1493707869cat/etc/selinux/config#1493708491ls#1493708497...

10.4、loganalyzer日志分析工具

LogAnalyzer 是一款syslog日志和其他网络事件数据的Web前端。它提供了对日志的简单浏览、搜索、基本分析和一些图表报告的功能。数据可以从数据库或一般的syslog文本文件中获取,所以LogAnalyzer不需要改变现有的记录架构。基于当前的日志数据,它可以处理syslog日志消息,Windows 事件日志记录,支持故障排除,使用户能够快速查找日志数据中看出问题的解决方案。

LogAnalyzer 获取客户端日志会有两种保存模式,一种是直接读取客户端/var/log/目录下的日志并保存到服务端该目录下,一种是读取后保存到日志服务器数据库中,推荐使用后者。LogAnalyzer采用php开发,所以日志服务器需要php的运行环境,这里采用LAMP。

1)安装配置好mysql数据库服务

[root@mylinuxhome]#yuminstallmysqlmysql-server-y[root@mylinuxhome]#/etc/init.d/mysqldstart

2)安装rsyslog-mysql包

[root@mylinuxlog]#yuminstallrsyslog-mysql-y

3)创建rsyslog依赖的数据库:

[root@mylinuxdoc]#mysql</usr/share/doc/rsyslog-mysql-5.8.10/createDB.sql[root@localhosthome]#mysqlWelcometotheMySQLmonitor.Commandsendwith;or\g.YourMySQLconnectionidis4Serverversion:5.1.73SourcedistributionCopyright(c)2000,2013,Oracleand/oritsaffiliates.Allrightsreserved.OracleisaregisteredtrademarkofOracleCorporationand/oritsaffiliates.Othernamesmaybetrademarksoftheirrespectiveowners.Type'help;'or'\h'forhelp.Type'\c'toclearthecurrentinputstatement.mysql>showdatabases;#查看数据是否导入+--------------------+|Database|+--------------------+|information_schema||Syslog||mysql||test|+--------------------+4rowsinset(0.00sec)

4)配置rsyslog启用模块,/etc/rsyslog.conf

在#### Modules #####启用模块:

$ModLoad ommysql

在####rules####段中定义记录日志信息于数据库中

facility.priority :ommysql:SERVER_IP,DATABASE,USERNAME,PASSWORD

[root@mylinuxrsyslog.d]#vim/etc/rsyslog.conf####MODULES####$ModLoadommysql...####RULES####facility.priority:ommysql:SERVER_IP,DATABASE,USERNAME,PASSWORD[root@localhosthome]#/etc/init.d/rsyslogrestartShuttingdownsystemlogger:[OK]Startingsystemlogger:[OK]

5)搭建lamp环境,安装loganalyzer

#yum-yinstallhttpdphpphp-mysqlphp-gd[root@localhosthome]#httpdhttpd:Couldnotreliablydeterminetheserver'sfullyqualifieddomainname,usinglocalhost.localdomainforServerName[root@mylinuxhome]#wget[root@mylinuxhome]#tarxfloganalyzer-3.6.6.tar.gz[root@mylinuxhome]#mkdir/var/www/html/loganalyzer[root@mylinuxhome]#cp-Rloganalyzer-3.6.6/src/*/var/www/html/loganalyzer/[root@mylinuxhome]#cp-Rloganalyzer-3.6.6/contrib/*/var/www/html/loganalyzer/#cd/var/www/html/loganalyzer/#chmod+xconfigure.shsecure.sh#./configure.sh#./secure.sh#chmod666config.php#chown-Rapache.apache./*

6)在浏览器输入网站地址,按照提示就可以完成配置。