Chinaunix首页 | 论坛 | 博客
  • 博客访问: 410522
  • 博文数量: 59
  • 博客积分: 1510
  • 博客等级: 上尉
  • 技术积分: 857
  • 用 户 组: 普通用户
  • 注册时间: 2009-06-03 11:50
文章分类

全部博文(59)

文章存档

2011年(1)

2010年(36)

2009年(22)

我的朋友

分类: LINUX

2010-07-14 17:01:22

这次为了把交换机及路由器的日志文件集中放置,并方便调试,安装了rsyslog,并对其进行配置,使其可记录网络设备传来的syslog,并将之存入 Mysql数据中,以便我们集中管理,下面是具体的配置过程:

1、首先从下载并安装最新版本的 rsyslog

2、安装时很容易

 (1)把源代码解压,并进入源代码树中执行:

./configure --enable-mysql

这里要注意,你的mysql要安装正确,特别是版本,比如我的mysql版本是:5.0.22,系统是redhat,那么我就要安装有MySQL- client-standard-5.0.22-0.rhel4.i386.rpm,总之如果这一步执行出错,比如我的刚开始是提示错 误:checking for mysql_init in -lmysqlclient 在这一步有问题,后来重新安装了MySQL-client-standard-5.0.22-0.rhel4.i386.rpm就ok了

(2)依次执行:make和make install就ok

3、配置rsyslog.conf

在源代码树下有一个示例文件,把它拷贝到/etc下

(1)如果你要接受远程设备的syslog则要把以下三行的#去掉:

# UDP Syslog Server:
#$ModLoad imudp.so  # provides UDP syslog reception
#$UDPServerRun 514 # start a UDP syslog server at standard port 514

并同时在iptables中开放514端口

(2)配置rsyslog自动启动

由于rsyslog没有为redhat准备启动脚本,所以要我们自己建,其实也很简单,我直接把syslog的启动脚本改了下,把里面的syslog改为 rsyslog,如下所示:

more /etc/init.d/syslog

#!/bin/bash
#
#
# chkconfig: 2345 12 88
# description: Syslog is the facility by which many daemons use to log \
# messages to various system log files.  It is a good idea to always \
# run syslog.
### BEGIN INIT INFO
# Provides: $syslog
### END INIT INFO

# Source function library.
. /etc/init.d/functions

[ -f /usr/local/sbin/rsyslogd ] || exit 0
[ -f /sbin/klogd ] || exit 0

# Source config

RETVAL=0


start() {
        echo -n $"Starting rsyslog: "
        /usr/local/sbin/rsyslogd
        RETVAL=$?
        echo
        echo -n $"Starting kernel logger: "
        daemon klogd $KLOGD_OPTIONS
        echo
        [ $RETVAL -eq 0 ] && touch /var/lock/subsys/rsyslog
        return $RETVAL
}
stop() {
        echo -n $"Shutting down kernel logger: "
        killproc klogd
        echo
        echo -n $"Shutting down rsyslog: "
        killproc rsyslogd
        RETVAL=$?
        echo
        [ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/rsyslog
        return $RETVAL
}
rhstatus() {
        status rsyslogd
        status klogd
}
restart() {
        stop
        start
}

case "$1" in
  start)
        start
        ;;
  stop)
        stop
        ;;
  status)
        rhstatus
        ;;
  restart)
        restart
        ;;
  condrestart)
        [ -f /var/lock/subsys/rsyslog ] && restart || :
        ;;
  *)
        echo $"Usage: $0 {start|stop|status|restart|condrestart}"
        exit 1
esac

exit $?

 

就只改了一点点,名字也没变,这样出不用ln来建链接了,都用原来的

(3)记录到mysql

如果要使用sql来记录日志则先要建表,找到rsyslog-3.20.0\plugins\ommysql下的createDB.sql文件,打开它, 把里面的建表语句在你的数据库里执行,当然你也可以自建一个新数据库,一切由你

之后加载mysql模块,当然你一定要确认ommysql.so在lib文件夹里存在,如果你之前使用./configure --enable-mysql进行配置则会在/usr/local/lib/rsyslog下存在ommysql.so文件(操作系统不同,目录可能不一 样),然后在rsyslog.conf文件中加上:

$ModLoad ommysql

local4.*     :ommysql:127.0.0.1,yourdb,yourname,yourpass;

注意我是local4来接受远程的syslog

在交换机上的配置:

华为的:

info-center loghost 1.1.1.1 facility local4 //local4要和rsyslog.conf 里配置的一致,1.1.1.1为你的syslog服务器地址记得要改啊
 info-center loghost source Vlan-interface 11//你的网管VLAN接口,要改的
info-center source SHELL channel loghost log level notifications//我只想要操作日志,其他的不关心,如果你想要更多,请更改

思科的:

logging   1.1.1.1(配置 syslog服务器地址,可以定义多个) 
service timestamps debug datetime localtime show-timezone msec
service timestamps log datetime localtime show-timezone msec   (syslog 信息包含时间戳)
logging facility local4   (定义 facility 级别,缺省为local7,可以设置从 local0 到 local7)
logging trap warning   (定义severity 级别缺省为 infor 级别)

到这里,一切基本ok了,

到你的mysql服务器是看看:

select * from SystemEvents

应该已经记录有日志了

但这里还有个小bug,我们会发现fromhost的这个字段不对,并不是你的交换机的地址,这是rsyslog的一个bug,怎么解决??请参考:, 而我的解决方案是自定义模板,而不能用其默认的模板了!我定义了一个模板:MySQLInsert并用它来执行sql语句,关于模板的概念,请参考这 里有详细的解释

参考我的rsyslog.conf:

# UDP Syslog Server:
$ModLoad imudp.so  # provides UDP syslog reception
$UDPServerRun 514 # start a UDP syslog server at standard port 514
# MySQL log
$ModLoad ommysql
$template MySQLInsert,"insert into SystemEvents( ReceivedAt,DeviceReportedTime,message,FromHost,syslogtag) values('%timegenerated:::
date-mysql%','%timereported:::date-mysql%','%msg%','%fromhost-ip%','%syslogtag%')", SQL

local4.*     :ommysql:127.0.0.1,syslogdatabase,syslogusername,syslogpass;MySQLInsert

注意我使用了%fromhost-ip%,而不是%HOSTNAME%

好了,基本上就这样了,以上就是我配置rsyslog的一些经过,希望对大家有帮助。

摘自:

阅读(2199) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~