LAMP基于rsyslog+loganalyzer实现日志集中管理及分析

前言

作为一名运维工程师,查看分析系统日志是每天必做的功课,但每次查看日志都得一台服务器一台服务器的看,几台服务器还可以这么对付,但如果管理成百上千台线上服务器,这种方法就捉襟见肘了。于是我们就需要用到日志服务器了,但是如何能让它更直观的显示呢?loganalyzer是一个不错的选择,本文将讲解如何使用rsyslog+loganalyze实现日志统一管理及分析。

简介

LogAnalyzer是一款syslog日志和其他网络事件数据的Web前端,它提供了对日志的简单浏览、搜索、基本分析和一些图表报告的功能。

部署过程

环境介绍

系统环境:CentOS6.6

rsyslog:系统自带

loganalyzer:loganalyzer3.6.5(含中文语言包)

web服务器:172.16.10.100(httpd-2.4.9,同为日志客户端)

php服务器:172.16.10.110(php-5.5.26)

数据库服务器:172.16.10.211(MariaDB-5.5.36)

日志服务器:172.16.10.212

DNS服务器:172.16.10.10

日志服务器及客户端配置

服务器端

[root@scholar ~]# vim /etc/rsyslog.conf 

# Provides UDP syslog reception
$ModLoad imudp
$UDPServerRun 514     

# Provides TCP syslog reception
$ModLoad imtcp
$InputTCPServerRun 514

重启服务,查看监听端口

01.jpg

客服端

[root@web ~]# vim /etc/rsyslog.conf

#将所有日志存放位置由本地改为日志服务器
*.info;mail.none;authpriv.none;cron.none             @172.16.10.212 #指定日志服务器

重启服务

02.jpg

服务端查看日志

03.jpg

日志接收正常,日志服务器已然可以正常工作

接下来我们让日志服务器将日志传给数据库服务器

安装所需包

[root@scholar ~]# yum install rsyslog-mysql -y #提供传输模块

查看rsyslog-mysql生成文件,将生成的数据库文件创送给数据库

04.jpg

日志服务器配置先停一下,我们先配置数据库

数据库服务器配置

导入数据库

05.jpg

授权用户

06.jpg

数据库配置完成我们返回日志服务器

[root@scholar ~]# vim /etc/rsyslog.conf 

#添加此项
$ModLoad ommysql

#修改此项,指向数据库
*.info;mail.none;authpriv.none;cron.none  :ommysql:172.16.10.211,Syslog,rsysloguser,rsyslogpass

重启服务

07.jpg

查看数据库中是否已有日志信息

08.jpg

已经传送进去了,日志服务器连接数据库成功,接下来就是安装loganalyzer了

DNS服务器配置

修改正反向区域文件

正向区域文件

09.jpg

反向区域文件

10.jpg

检查语法,启动服务

11.jpg

web服务器配置

loganalyzer作为日志的web前端,应该只允许管理员访问,所以我们做一个基于用户的访问控制

我们本次使用虚拟主机,当然也可以使用中心主机,这个随意

[root@web ~]# vim /etc/httpd24/httpd.conf 
#关闭中心主机
#DocumentRoot "/usr/local/apache/htdocs"
#启用虚拟主机
Include /etc/httpd24/extra/httpd-vhosts.conf

配置虚拟主机

[root@web ~]# vim /etc/httpd24/extra/httpd-vhosts.conf 

<VirtualHost *:80>
    DocumentRoot "/web/log"
    ServerName log.scholar.com
    ProxyRequests Off         #关闭正向代理
    ProxyPassMatch ^/(.*\.php)$ fcgi://172.16.10.110:9000/web/log/$1 #代理至php服务器
<Directory "/web/log">
         Options none
         AllowOverride AuthConfig
         AuthType Basic            #认证方式
         AuthName "Log Area."    #质询时弹出的提示信息
         AuthUserFile /etc/httpd24/.htpasswd #用户账号密码存放位置
         Require valid-user   #所有合法用户都可访问,也可用定义单用户及组认证
</Directory>
</VirtualHost>

提供认证文件

12.jpg

准备loganalyzer

13.png

准备完成后需要把文件传给php服务器一份,或者php服务器也执行此操作,位置跟web服务器保持一致

检查语法,启动服务

14.jpg

安装loganalyzer

15.jpg

需要身份认证,基于用户的访问控制完成

输入用户及密码,继续

16.jpg

提示没有配置文件,点击here进入安装向导

17.jpg

Next继续

18.jpg

保证此文件可写,继续

19.jpg

创建用户数据库,继续

20.jpg

创建表,继续

21.jpg

检查SQL结果,Next

22.jpg

创建管理用户,Next

23.jpg

创建日志系统,Next

24.jpg

安装完成,Finish

测试loganalyzer

25.jpg

可修改语言为中文

26.jpg

如果切换中文出现乱码,请修改字符集

[root@web web]# vim /web/log/include/functions_common.php #源码包的include目录
#将含有return htmlentities字段的行改为如下格式
 return htmlentities($myStr, ENT_NOQUOTES,"UTF-8");

然后登陆系统,进入Admin Center设置字符集

27.jpg

28.jpg

修改后再次切换中文即可正常显示,其他功能就不一一展示了,请自行查看

The end 

好了,rsyslog+loganalyzer就说到这里了,loganalyzer查看日志还是挺直观的,是不是so easy呢,搭建过程中遇到问题可留言。以上仅为个人学习整理,如有错漏,大神勿喷~~~

原创文章,作者:书生,如若转载,请注明出处:http://www.178linux.com/3662

评论列表(2条)

  • jianglw
    jianglw 2015-11-25 23:50

    Could not find the configured table,maybe misspelled or the tablenames are case sensitive
    不清楚怎么传图片,就敲了下错误提示,我反复尝试了N次都报这个错误,selinux iptables 关闭都不行
    环境 服务器(http rsyslog mysql php 在线安装),数据库已赋权,客户端连接测试OK。
    请忙帮找找问题出在哪里,万分感谢 jianglw@wyn88.com

    • 书生
      书生 2015-11-26 17:06

      @jianglw亲 不会Google么 百度都能查到 config.php的问题 一般权限问题 自行查看