日志整体来讲是来记录历史事件的,记录在过去一段事件系统的行为。将过去一段时间所发生的时间按时间序列记录到指定的存储结构中,记录的主要内容有事件的来源、发生的时间、内容、事件的关键程度(日志级别)。例如:在操做系统中安装和卸载过什么软件,这些操做会记录下来。记录日志的主要目的是在发生问题的时候,是解决问题的重合依据之一。php
在Linux中,通常状况下会记录系统进程(syslog)和内核事件(klogd)进程相关的日志。html
rsyslog是CentOS6系列提供记录日志的工具,具备以下特色:mysql
支持多线程模式web
支持像TCP,SSL,TLS,RELP等协议sql
能够将日志信息记录到像MySQL, PGSQL, Oracle等多种关系型数据中数据库
强大的过滤器,可实现过滤系统信息中的任意部分apache
自定义输出格式vim
适用于企业级别日志记录需求 安全
auth | 认证相关的 |
authpriv | 认证受权相关的 |
cron | 周期性计划任务相关的 |
daemon | 守护进程相关的 |
kern | 内核相关的 |
lpr | 打印相关的 |
邮件相关的 | |
mark | 防火墙标记相关的 |
news | 新闻组相关的(较早) |
security | 安全相关的,同auth |
syslog | 记录日志工具本身的日志 |
user | 用户相关的 |
uucp | unix to unix copy,unix之间共享文件的协议(较早) |
local0-local7 | 用户自定义的 |
* | 表示全部 |
! | 表示取反 |
称之为级别,来定义日志的紧急程度。常见的有:bash
debug | 调试信息,最详细的信息 |
info | 基本信息 |
notice | 通知信息 |
warn warnning | 警告信息 |
err error | 错误信息 |
crit | 蓝色警惕信息 |
alert | 橙色警惕信息 |
emerg panic | 红色警惕信息 |
这里的级别从上到下表示级别越高,危险程度也越高,像emer级别是系统可能已经挂掉了。这里也可以使用 *来表示全部级别,none: 没有任何级别 。
target指的是日志存储的位置,常见的有:
本地文件路径:例如/var/log/messages
用户: *
日志服务器:@SERVER_IP(使用UDP协议) @@SERVER_IP(使用TCP协议)
管道:|COMMAND
关系型数据库: 例如: ommysql:localhost:Syslog:log:log(下面详细介绍)
rsyslog的主配置文件:/etc/rsyslog.conf,在这个配置文件中主要有三方面的定义,以下:
一、MODULES模块,在这里主要定义加载的模块等信息 #### MODULES #### # 例如:做为日志服务器,使用udp/514做为监听端口 $ModLoad imudp $UDPServerRun 514 二、GLOBAL DIRECTIVES模块,全局配置模块,在这里定义一些全局生效的属性 #### GLOBAL DIRECTIVES #### # Use default timestamp format $ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat # File syncing capability is disabled by default. This feature is usually not required, # not useful and an extreme performance hit #$ActionFileEnableSync on # Include all config files in /etc/rsyslog.d/ $IncludeConfig /etc/rsyslog.d/*.conf 三、定义日志规则 #### RULES #### # 其定义格式 : # facility.priority Target mail.info /var/log/maillog # 比指定级别更高的全部级别,包括指定的级别自己; mail.=info -/var/log/maillog # 明确指定级别,这里的 - 表示异步写入磁盘,不加默认同步写入磁盘 mail.!info * # 除了指定级别,通知全部的用户 *.info @172.16.10.88 # 全部facility的info级别,将日志以udp通讯方式记录到172.16.10.88的日志服务器上 mail.*: :ommysql:localhost:Syslog:ftp:ftppass # mail的全部级别,记录到mysql数据库中,登录帐号是:ftp@localhost -u ftp -p ftppass。数据库名称是Syslog mail,news.info: # mail,news的info和更高的级别
日志信息格式:
# 时间 主机 进程(PID):事件 Aug 7 02:32:14 server abrtd: Init complete, entering main loop Aug 7 02:32:26 server kernel: readahead-collector: starting delayed service auditd
实验原理拓扑图:
##########################实验配置########################################## ###########################在172.16.10.9主机上############################### vim /etc/rsyslog.conf 修改以下内容: $ModLoad imtcp $InputTCPServerRun 514 *.info;mail.none;authpriv.none;cron.none /var/log/messages # 重启服务 service rsyslog restart ########################################################################## ###########################在172.16.10.1上################################ vim /etc/rsyslog.conf # 这里将须要的日志发送到日志服务器上 *.info;mail.none;authpriv.none;cron.none @@172.16.10.9 # 重启服务 service rsyslog restart ######################################################################
测试结果:
配置原理图以下:
# 配置以下: ###########################################在172.16.10.9上############################################## 一、安装rsyslog和mysql交互的软件 yum install rsyslog-mysql -y 二、搭建好lamp平台(这里再也不详细介绍) yum install httpd mysql php mysql-server php-gd -y 三、导入rsyslog所用到的数据库和表 # 具体经过 rpm -ql rsyslog-mysql 查看 mysql -u root -p < /usr/share/doc/rsyslog-mysql-5.8.10/createDB.sql ### createDB.sql内容以下: CREATE DATABASE Syslog; USE Syslog; CREATE TABLE SystemEvents ( ID int unsigned not null auto_increment primary key, CustomerID bigint, ReceivedAt datetime NULL, DeviceReportedTime datetime NULL, Facility smallint NULL, Priority smallint NULL, FromHost varchar(60) NULL, Message text, NTSeverity int NULL, Importance int NULL, EventSource varchar(60), EventUser varchar(60) NULL, EventCategory int NULL, EventID int NULL, EventBinaryData text NULL, MaxAvailable int NULL, CurrUsage int NULL, MinUsage int NULL, MaxUsage int NULL, InfoUnitID int NULL , SysLogTag varchar(60), EventLogType varchar(60), GenericFileName VarChar(60), SystemID int NULL ); CREATE TABLE SystemEventsProperties ( ID int unsigned not null auto_increment primary key, SystemEventID int NULL , ParamName varchar(255) NULL , ParamValue text NULL ); 受权登录用户: mysql> grant all on Syslog.* to log@'localhost' identified by 'logpass'; mysql> flush privileges; 四、编辑配置文件 # vim /etc/rsyslog.conf $ModLoad ommysql *.info;mail.none;authpriv.none;cron.none :ommysql:localhost,Syslog,log,logpass 五、重启服务 service rsyslog restart #################################################################################################################################
测试结果:记录的结果以下,这样看起来比较费劲。
# 具体安装步骤,可参考 loganalyzer-3.6.5/INSTASLL tar xf loganalyzer-3.6.5.tar.gz cp loganalyzer-3.6.5/src/ /var/www/html/ -R cd /var/www/html/ mv src loganalyzer chown -R apache.apache loganalyzer # 重启服务 /etc/init.d/httpd restart
经过 http://172.16.10.9/loganalyzer 具体安装过程再也不一一展现,重要的是每次安装这类软件的方法。几乎每一个软件都会自带一个像INSTALL,README的文件,安装前尽可能读一下。
在安装过程当中,最重要的配置以下:要与对应的数据库名,表名,登陆名一一对应。
loganalyzer:功能展现,能够形象的展现日志信息。
其余的功能在这里再也不一一介绍,只能本身摸索。
OVER.