rsyslog支持的特性

    支持多线程

    支持tcp,ssl,tls.relp

    可以把日志存储于关系型数据库中

    支持过滤器,可以实现过滤日志中的任意部分。

    支持自定义格式

    适用于企业级的日志记录需求。

    功能模块化

rsyslog用facility接收各个应用和程序的日志,并把日志分类。有以下几类

    auth        与认证相关的

    authpriv 与用户认证授权相关的,如用户登陆

    cron     与周期任务相关的

    daemon    与守护进程相关的

    kern        与内核相关的

    lpr     与打印相关的

    mail   与邮件子系统相关

    mark   与防火墙标记相关的

    security  与安装相关的

    syslog   与日志服务本身相关的

    user     与用户相关的

    uucp  unix早期共享文件的协议    

    news  与新闻组相关

    local 0  到 local 7  8个自定义级别。

通配符,用来指定facility时使用字符

    *   表示所有的facility

    ,    用来facility例表中,分隔facility使用

    !    用来取反

facility记录日志的级别,(称为 priority),越向下级别越高。

    debug  调试级别,信息最为详细

    info       仅次于debug

    notic      通知级别

    warn       警告,另一种写法:warning

    err         错误,还有另一种写法:error

    crit        蓝色警报

    alert      橙色警报

    emerg   红色警报,此级别相当严重了。

指定级别时还有其它写法

    *   表示所有级别

    none  没有任何级别,一般表示不做记录。

日志发送位置称为target,有以下几类

    文件路径   如:/var/log/message   ,如果文件路径前面加-表示此日志记录不用同步写入。

    用户          如:*   星表示发送给登陆当前系统的所有用户

    日志服务器     如:@172.16.2.10

    管道                如: | awk     表示把日志交给awk处理。   

rsyslog的配置文件:

    主配置文件:/etc/rsyslog.conf 

    其它配置文件:/etc/rsyslog.d/*.conf

主配置文件分为三段

        #### MODULES ####      用来加载各个模块

# Provides UDP syslog reception    使用udp协议为其它主机提供日志服务器功能

#$ModLoad imudp      加载udp模块

#$UDPServerRun 514     指定监听udp协议的端口

# Provides TCP syslog reception  启动tcp协议为其它主机提供日志服务功能

#$ModLoad imtcp                         加载模块

#$InputTCPServerRun 514            监听tcp端口

        #### GLOBAL DIRECTIVES ####        全局指定,定义rsyslog工作特性

        #### RULES ####                                定义日志记录类型和级别

日志记录要写在 #### RULES ####  中,写法如下:

    <记录日志类型><.><记录日志级别>         该级别以上级别的日志都会被记录

    <记录日志类型><.>=<记录日志级别>         只记录该级别的日志,其它级别不记录。

    <记录日志类型><.>!<记录日志级别>         除了该级别的其它日志级别

日志文件记录格式如下:

        时间      地点       人物            动作详细信息

rsyslog + mysql + loganalyzer 构建日志服务器_第1张图片

====================================================================

配置rsyslog为其它主提供日志服务--------大体配置步骤如下:

    1,服务器端配置:编辑/etc/rsyslog.conf文件,启动监听的端口。是否修改日志文件存放位置,根据自己的需要而定,重启rsyslog服务。

    2,修改客户机日志配置文件/etc/rsyslog.conf,把需要发送到日志服务器的日志段的发送位置修改为  @日志服务器的ip。

日志服务器配置

# vim /etc/rsyslog.conf        

#### MODULES ####启动以下行

$ModLoad imudp

$UDPServerRun 514

$ModLoad imtcp

$InputTCPServerRun 514

# service rsyslog restart

客户机配置,这里假设把本机的全部日志都发送到日志服务器。

# vim /etc/rsyslog.conf  编辑主配置文件

#*.info;mail.none;authpriv.none;cron.none /var/log/messages          注释此行

*.info @172.16.2.16                添加此行,172.16.2.16是我的日志服务器。此时会把本机的所有日志都发给日志服务器。

# service rsyslog   restart

测试是否配置成功,以管理软件为例----------------------------------------

在日志服务器执行

# tail -f  /var/log/messages   动态监视日志文件新产生的日志,最下面是没有关于安装软件记录的。

客户机操作

# echo ===============  >> /var/log/message             给message文件一个分隔线。

# tail /var/log/message

rsyslog + mysql + loganalyzer 构建日志服务器_第2张图片

#  yum -y install elinks     安装软件,让系统发生日志。

#  tail /var/log/messages      查看是否有日志,正确配置是没有日志的。

到日志服务器查看监视的日志

rsyslog + mysql + loganalyzer 构建日志服务器_第3张图片

==================================================================

配置日志服务器,记录日志存储于mysql数据库中--------大体配置步骤如下

  1,安装日志服务器mysql的驱动模块。

  2,修改配置文件,启用mysql驱动模块,把日志记录位置修改为mysql数据库。

  3,在mysql数据库服务器为日志服务器授权。

  4,安装

# yum -y install rsyslog-mysql               安装rsyslog的mysql驱动模块

# rpm -ql rsyslog-mysql    

/lib64/rsyslog/ommysql.so     模块文件所在的位置      

/usr/share/doc/rsyslog-mysql-5.8.10           

/usr/share/doc/rsyslog-mysql-5.8.10/createDB.sql     mysql创建数据库用的脚本,把此文件放在mysql服务器执行。

# vim /etc/rsyslog.conf      修改配置文件

#### MODULES ####      加入以下行,启动支持mysql模块

$ModLoad ommysql         

#### RULES ####           修改以下行,把日志文件都记录在mysql中。

*.info;mail.none;authpriv.none;cron.none :ommysql:172.16.2.13,Syslog,rsyslog,rsyslog   加入此行,Syslog为数据库名,第一个rsyslog为mysql用户名第二个是密码

执行完mysql服务器授权后再重启rsyslog服务

----在mysql服务器执行---------------------------------------------

# mysql < /root/createDB.sql   因在日志服务器已经把此脚本传到mysql服务器了。

# mysql

MariaDB [(none)]> grant all on Syslog.* to [email protected] identified by 'rsyslog';

MariaDB [(none)]> flush privileges;

测试 ----------------------------------

在rsyslog服务器执行

# echo ======================== >> /var/log/messages

#  tail -f  /var/log/messages             监视日志,如果配置正确,应该没有日志产生。

在客户机端执安装软件测试

# yum -y install bind   测试安装一个软件用来产生日志。

在mysql查看

MariaDB [Syslog]> select * from SystemEvents;       查看表中有没有数据

rsyslog + mysql + loganalyzer 构建日志服务器_第4张图片

==============================================================

数据库中有记录了,在数据库查看比较难。所以使用web页面展示的软件 loganalyzer软件。

loganalyzer是一个php程序,所以需要web服务。

# yum -y install httpd php php-mysql php-gd mysql-server     安装发布loganalyzer所需要的软件。

# service httpd start      启动httpd服务,测试服务是否能正常运行,级提供服务。

# cd /var/www/html

# wget http://download.adiscon.com/loganalyzer/loganalyzer-3.6.5.tar.gz   下载loganalyzer程序

#  cp loganalyzer-3.6.5/src ./log

# cp loganalyzer-3.6.5/contrib/* log/

# cd log

# chmod u+x configure.sh secure.sh

# ./configure.sh

# ./secure.sh

# chown -R apache:apache ../log

配置完成,到windows的浏览器里输入http://172.16.2.16/log/。

rsyslog + mysql + loganalyzer 构建日志服务器_第5张图片

rsyslog + mysql + loganalyzer 构建日志服务器_第6张图片

rsyslog + mysql + loganalyzer 构建日志服务器_第7张图片

rsyslog + mysql + loganalyzer 构建日志服务器_第8张图片

rsyslog + mysql + loganalyzer 构建日志服务器_第9张图片

出现了以上错误,因为没的日志文件导致

# touch /var/log/syslog

# chown apache:apache /var/log/syslog

rsyslog + mysql + loganalyzer 构建日志服务器_第10张图片

rsyslog + mysql + loganalyzer 构建日志服务器_第11张图片

rsyslog + mysql + loganalyzer 构建日志服务器_第12张图片

至此日志就可以在网页查看分析了。