日志服务器的运作机制大致是这样的:
1、客户端将日志发送到服务器,服务端的日志里于是出现了客户端的日志
2、服务端将日志导入mysql,通过php程序进行日志分析并显示在网页上。
环境:CentOS 6.3 x64
服务端:loganalyzer.test.org 192.168.1.249
客户端:apache01.test.org 192.168.1.21
一、配置基本的日志服务器
1、在服务端开启接收日志选项,编辑/etc/rsyslog.conf,取消下面两行注释:
$ModLoad imtcp $InputTCPServerRun 514
这会让rsyslog监听本地tcp 514端口,请注意iptables防火墙要打开该端口。
同理,如果需要监听udp 514端口,则启用下面这段代码
$ModLoad imudp $UDPServerRun 514
2、在客户端修改开启发送日志选项,编辑/etc/rsyslog.conf ,在行末添加如下内容:
*.* @@192.168.1.249
也可以写域名,但是为了减少依赖和服务的可靠性,建议使用IP地址。
全部日志发送的话,感觉有很多垃圾,比如cron日志,可以选择性的发送一些日志
*.info;mail.none;cron.none @@192.168.1.249
注意:上面有两个@,如果服务端采用udp协议,则只需要一个@
1*.* @192.168.1.249
tcp更稳定可靠,udp更快速高效, 请根据需要选择。
3、重启rsyslog服务
/etc/init.d/rsyslog restart
不出意外,在服务端应该就可以看到客户端的日志了。
二、在服务端配置loganalyzer
1、安装LAMP
yum -y install httpd mysql-server php php-mysql php-gd php-xml php-xmlrpc php-mbstring php-mcrypt php-snmp --enablerepo=epel sed -i '/ServerTokens/{s/OS/Minor/g}' /etc/httpd/conf/httpd.conf sed -i '/ServerSignature/{s/On/Off/g}' /etc/httpd/conf/httpd.conf echo " " >/var/www/html/index.php sed -i '/;date.timezone/{s/;//g;s/=/= Asia\/Shanghai/g}' /etc/php.ini
2、配置rsyslog-mysql
yum install rsyslog-mysql -y chkconfig --level 2345 mysqld on /etc/init.d/mysqld start mysql_secure_installation
找到 /usr/share/doc/rsyslog-mysql-5.8.10/createDB.sql,
导入数据库:
# mysql -u root -p
这会创建一个数据库loganalyzer,和两个表 SystemEvents / SystemEventsProperties
授予权限
mysql -u root -p -e "GRANT ALL PRIVILEGES ON loganalyzer.* TO rsyslog@localhost IDENTIFIED BY 'rsyslogpassword';" mysql -u root -p -e "flush privileges;"
编辑/etc/rsyslog.conf
在文件末尾添加两行让系统日志导入到mysql中去
$ModLoad MySQL *.* >127.0.0.1,loganalyzer,rsyslog,rsyslogpassword
后面三个字符段的格式是:【数据库名】【用户名】【密码】,之间用逗号分开
重启服务
/etc/init.d/rsyslog restart
配置检查
tail /var/log/message 是否有数据库连接报错
登录mysql,检查Syslog数据库中的SystemEvents是否依然为空
# mysql -u root -p -e "select * from loganalyzer.SystemEvents;"
3、配置loganalyzer第一、二、三步直接next,然后跳到第七步,选择下列值(注意大小写!!)
第八步,完成配置
配置失败,可以清空文件config.php来重新配置loganalyerzer 。
©著作权归作者所有:来自51CTO博客作者紫色葡萄的原创作品,如需转载,请注明出处。