Rsyslog 是一个 syslogd 的多线程增强版,在syslog的基础上扩展了很多其他功能,如数据库支持(MySQL, PostgreSQL、Oracle等)、日志内容筛选、定义日志格式模板等。除了默认的udp协议外,rsyslog还支持tcp协议来接收日志。
本文只做简单配置与说明。更多与日志相关的服务的详细解释与配置,请参考http://w.gdu.me/wiki/Linux/rsyslog_logrotate.html
rsyslogd服务器及负载均衡;rsyslog和logrotate服务
环境准备:
操作系统:CentOS-6.5-x86_64
内核:# uname -r 2.6.32-431.el6.x86_64
关闭Selinux:1. 永久有效修改 /etc/selinux/config 文件中的 SELINUX="" 为 disabled ,然后重启。
2. 即时生效setenforce 0
关闭防火墙:1、永久有效 chkconfig iptables off 2临时关闭 # /etc/rc.d/init.d/iptables stop
服务器_IP:172.16.19.12(node2)
客户端_IP:172.16.19.2(stu19)
LAMP环境直接使用yum安装。
时间同步:如果涉及部署多名服务器时,最好使用NTP服务器同步时间。
本地光盘作为yum源(CentOS-6.5-x86_64-bin-DVD1)
服务器端配置
rsyslog支持将日志存储于MySQL服务器中:
1)安装LAMP环境,配置好mysql数据库服务,创建Syslog库并授权远程用户syspass登陆,密码为syspass;
1 # yum -y install httpd mysql-server mysql php php-mysql php-gd gd 2 # service mysqld start 3 # /usr/bin/mysqladmin -u root password 'root' 4 # mysql -uroot -proot 5 # ##由于本处使用了明文密码,出于安全,生产环境中建议此后修改用户的密码。 6 mysql > grant all on Syslog. * to 'sysuser' @ 'localhost' identified by 'syspass'; 7 mysql > grant all on Syslog. * to 'sysuser' @ ' 127.0 . 0.1 ' identified by 'syspass'; 8 mysql > flush privileges;
2)安装rsyslog(本机默认已安装)与rsyslog-mysql包,rsyslog-mysql会生成ommysql.so库和CreateDB.sql初始库;rsyslog-mysql为rsyslog将日志传送到mysql数据库的一个模块,这里必须安装。
1 # yum -y install rsyslog-mysql rsyslog 2 # rpm -ql rsyslog-mysql 3 / lib64 / rsyslog / ommysql.so 4 / usr / share / doc / rsyslog - mysql - 5.8 . 10 / createDB.sql
3)使用createDB.sql语句创建rsyslog依赖的数据库:
# mysql -uroot -proot < /usr/share/doc/rsyslog-mysql-5.8.10/createDB.sql
生成库:Syslog
生成表:SystemEvents SystemEventsProperties
4)修改配置文件,配置rsyslog启用模块,服务监听端口为514,且修改RULES段的相关日志段使其存储于mysql数据库中
1 在 # ### Modules #####启用模块: 2 # Provides UDP syslog reception 3 $ModLoad imudp 4 $UDPServerRun 514 # ## 允许514端口接收使用UDP协议转发过来的日志 5 6 # Provides TCP syslog reception 7 $ModLoad imtcp 8 $InputTCPServerRun 514 # ### 允许514端口接收使用TCP协议转发过来的日志 9 10 $ModLoad ommysql # 手动添加 11 12 在 # ### RULES ####段中定义记录日志信息于数据库中,根据所需定义,可以把全部的日志信息都存储在库中,本处只测试部分。 13 * .info;mail.none;authpriv.none;cron.none :ommysql: 127.0 . 0.1 ,Syslog,sysuser,syspass 14 # ##ommysql:数据库地址,数据库名,数据库用户名,数据库密码
5) 重启rsyslog服务,并查看514端口是否监听
# service rsyslog restart
# ss -anltp |grep 514
LISTEN 0 25 :::514 :::* users:(("rsyslogd",19513,6))
LISTEN 0 25 *:514 *:* users:(("rsyslogd",19513,2))
本机测试:
首先使用yum安装vsftpd包,然后在使用命令tail -f /var/log/messages 查看日志文件已经没有显示相关的日志信息了。
在mysql数据库中查询到相关日志信息
# mysql -uroot -proot
mysql> use Syslog
mysql> select * from SystemEvents;
在表中可以看到node2安装vsftpd包的日志信息。
客户端相关:
配置:
客户端主机名为:stu19
1、安装rsyslog包,默认安装,# yum install rsyslog -y
# rpm -q rsyslog
rsyslog-7.4.7-6.el7.x86_64
2、修改配置文件rsyslog.conf,添加如下内容
# vim /etc/rsyslog.conf
*.* @@172.16.19.12:514 # 允许日志都送到rsyslog的服务端, @@表示通过tcp协议发送;@表示通过udp进行转发
3、重启rsyslog服务。
# /etc/rc.d/init.d/rsyslog restart
测试:
1、在客户端使用命令安装lrzsz ;
2、tail -f /var/log/messages已经查不到日志信息了
3 、在服务器的数据库表中
通过webGUI展示日志信息 安装 loganalyzer
首先下载好loganalyzer-3.6.5.tar.gz 以及中文语言包
1 # tar xf loganalyzer-3.6.5.tar.gz -C /var/www/html/ 2 # cd /var/www/html/ 3 # mv loganalyzer-3.6.5 loganalyzer 4 目录中有个INSTALL文件,根据里面的提示进行安装。 5 # mv loganalyzer/src/* ./loganalyzer 6 # cp loganalyzer/contrib/* ./loganalyzer/ 7 # cd /var/www/html/loganalyzer/ 8 # chmod +x configure.sh secure.sh 9 # ./configure.sh 10 # ./secure.sh 11 # chmod 666 config.php 12 下载个汉化文件 13 # mkdir /var/www/html/loganalyzer/lang/zh 14 # 下载汉化文件 admin.php info.txt main.php ,把三个文件入在上面新建的zh目录中 15 # chown -R apache.apache ./* 16 # service httpd restart
在浏览器中输入http://172.16.19.12/loganalyzer,出现如下图,单击here处进行安装
如果没有报错信息,就直接点击“next”直到Step3
按需进行基本的配置,此处的自动解析IP地址设置为No
从Step3直接跳转到Step7,根据此前的数据库信息填写几处关键信息(红色方框内),其他的默认
直至此处,点击Finish,安装配置已经完成;
loganalyze的页面
网页的右上角处修改语言为Chinese
测试:
在服务器端使用yum 安装lrzsz,在页面中的第一条就显示相关日志了。