天天看点

rsyslog+phplogcon+debian5高可用图形化日志分析

<a href="http://www.9iv.com/down/soft/1504.htm">http://www.9iv.com/down/soft/1504.htm</a>

<a href="http://code.google.com/p/php-syslog-ng/">http://code.google.com/p/php-syslog-ng/</a>

环境介绍

前言:本人也是个新手,只是公司之前用的syslog-ng在处理每天超过1.5G(平均数)的日志量会出现查询和搜索缓慢的问题,而且在高并发的环境中有客户端搜索日志明显存在负载过高。所以我们引用了slunk(商业版)+rsyslog进行日志迁移,本文不打算写的很复杂,本着实用性和更适合国内的需要,略加修改,尽量简化实用,所以这里我的实际环境就是我家的下载盒子(VIA600A+1G+IDE80G+VIA100M网卡)+Linksys wrt54G-dd-wrt v24sp2 Release: 07/21/09 (SVN revision: 12533)+远程的客户端,来模拟一个基本的环境,兄弟在这里抛块砖,欢迎大家做更深入的研究。

需要用到的几个软件:

debian:~# dpkg --list |grep rsyslog

ii  rsyslog                           3.18.6-4                 enhanced multi-threaded syslogd

ii  rsyslog-mysql                     3.18.6-4                 MySQL output plugin for rsyslog

debian:~#

LAMP的基本环境是必须得而且PHP还要支持gd库

debian:~# dpkg --list |grep php

ii  libapache2-mod-php5               5.2.6.dfsg.1-1+lenny3    server-side, HTML-embedded scripting languag

ii  php5                              5.2.6.dfsg.1-1+lenny3    server-side, HTML-embedded scripting languag

ii  php5-cli                          5.2.6.dfsg.1-1+lenny3    command-line interpreter for the php5 script

ii  php5-common                       5.2.6.dfsg.1-1+lenny3    Common files for packages built from the php

ii  php5-gd                           5.2.6.dfsg.1-1+lenny3    GD module for php5

ii  php5-mysql                        5.2.6.dfsg.1-1+lenny3    MySQL module for php5

ii  php5-snmp                         5.2.6.dfsg.1-1+lenny3    SNMP module for php5

安装过程简单描述如下:

apt-get install rsyslog  rsyslog-mysql

由于采用集中管理,所以原配置大可以抛弃修改如下:(由于本人习惯把附加配置放到*.d的目录下,所以这里rsyslog.d就是后建立的用来放日志的配置模板和过滤条件)

debian:~# cat /etc/rsyslog.conf

# if you experience problems, check

# rsyslog v3: load input modules

# If you do not load inputs, nothing happens!

# You may need to set the module load path if modules are not found.

$ModLoad immark   # provides --MARK-- message capability

$ModLoad imuxsock # provides support for local system logging (e.g. via logger command)

$ModLoad imklog   # kernel logging (formerly provided by rklogd)

# Include conf.d style configurations

$IncludeConfig /etc/rsyslog.d/*.conf

debian:~# cat /etc/rsyslog.d/mysql.conf

### Configuration file for rsyslog-mysql

### Changes are preserved

$ModLoad ommysql

*.* mmysql:localhost,Syslog,root,*********(数据库密码)

debian:~# cat /etc/rsyslog.d/server.conf |grep -v "^#" |grep -v "^$"  (这个是做为服务端必要的配置,相见rsyslog的官方文档)

$ModLoad imtcp.so  # load module

$InputTCPServerRun 514 # start up TCP listener at port 514

$ModLoad imudp.so  # provides UDP syslog reception

$UDPServerRun 514 # start a UDP syslog server at standard port 514

$DirCreateMode 0755

$umask 0022

$template dd-wrt, "/var/log/rsyslog/%HOSTNAME%/%syslogfacility-text%.%syslogpriority-text%-%$YEAR%%$MONTH%%$DAY%.log"  

:fromhost-ip, contains, "192.168.1.254" -?dd-wrt

*.* -?dd-wrt

##根据自己的需要设置目录存储格式,有点和syslog-ng相似。

phplogcron的安装也很简单,主要是目录权限要注意,按照他的提示就可以了,这里把数据库建立的过程丢出来。

debian:~# cat 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

        SystemEventID int NULL ,

        ParamName varchar(255) NULL ,

        ParamValue text NULL

需要把这些导入到数据库当中,数据库名随便,在安装phplogcon的时候会提示的。

注意一个安全问题,就是要通过apache的目录访问权限来认证访问:

Alias /phplog "/data/www/phplog/"

        &lt;Directory /data/www/phplog/&gt;

         AuthType Basic

        AuthName "My Logging Server Login Authenticaion"

        AuthUserFile /etc/apache2/passwords

        Require user yctang

               Options FollowSymLinks MultiViews

                AllowOverride None

                Order allow,deny

                allow from all

        &lt;/Directory&gt;

设置成功后服务端就没什么了,重启下看看是不是有日志生成了。

debian:/var/log/rsyslog/fw# ls |grep 0731

user.warn-20090731.log

客户端配置简单说下,由于我是为了记录我家路由器的日志,所以就在DD-WRT的web界面把日志功能打开了,填入服务器的IP

远程客户端是CentOS5 的(@一个是UDP @@两个是TCP)

*.*             @@vyatta.****.org:514

其他客户端和网络设备配置可以参考简单修改即可。