这次为了把交换机及路由器的日志文件集中放置,并方便调试,安装了rsyslog,并对其进行配置,使其可记录网络设备传来的syslog,并将之存入 Mysql数据中,以便我们集中管理,下面是具体的配置过程: 1、首先从www.rsyslog.com/下载并安装最新版本的 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则要把以下三行的#去掉:
#$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
. /etc/init.d/functions [ -f /usr/local/sbin/rsyslogd ] || exit 0 [ -f /sbin/klogd ] || exit 0
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,怎么解决??请参考:http://kb.monitorware.com/viewtopic.php?f=36&t=1754, 而我的解决方案是自定义模板,而不能用其默认的模板了!我定义了一个模板:MySQLInsert并用它来执行sql语句,关于模板的概念,请参考http://www.rsyslog.com/doc-rsyslog_conf.html这 里有详细的解释 参考我的rsyslog.conf:
$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的一些经过,希望对大家有帮助
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
接受中文windows日志的时候,出问题了, 数据库乱码,网页乱码(已解决),到出excel表格又乱码。 太悲剧了###### 请问是否可以设置 rsyslog 在remote tcp/ip协议发送消息时,使用多线程的方式?######rsyslog如何限制某台服务器的日志输出?不能没有限制的接收所有服务器过来的日志啊?这块的配置好像网上没有一个人提到过。###### 这是抄袭吧?
http://blog.chinaunix.net/uid-20746501-id-1878528.html