这里演示的只是简单的本地LAMP结构,mysql用来存储由rsyslog服务发来的日志,php用来运行loganalyzer程序。

loganalyzer是一个php应用,用来展示mysql中存储的日志。

loganalyzer下载地址:

http://download.adiscon.com/loganalyzer/loganalyzer-4.1.3.tar.gz


目录:

1、安装LAMP。


3、mysql给rsyslog授权存储日志。



注意:时间同步。不然可能数据库中只有rsyslog重启的记录,而没有其它记录。

loganalyzer所在系统:centos 7.1


1、安装LAMP:

[root@localhost ~]# yum install httpd php php-mysql mariadb-server -y

测试web可用(添加php测试页):

[root@localhost ~]# vim /var/www/html/index.php

[root@localhost ~]# systemctl start httpd        #启动httpd服务。
[root@localhost ~]# systemctl start mariadb       #启动mysql服务。

wKiom1agf-HzxB0TAAAjDYIyuFA426.jpg



2、客户端note2:

安装rsyslog-mysql 用以支持mysql系列数据库:

[root@node2 ~]# yum install rsyslog-mysql -y
[root@node2 ~]# rpm -ql rsyslog-mysql
/lib64/rsyslog/ommysql.so                        #支持模块(库)。
/usr/share/doc/rsyslog-mysql-5.8.10
/usr/share/doc/rsyslog-mysql-5.8.10/createDB.sql

最后面是一个自动生成数据库和表的sql脚本。我们这里mysql是刚装的,没有远程管理用户,所以就复制到mysql所在主机导入一下。

[root@node2 ~]# scp /usr/share/doc/rsyslog-mysql-5.8.10/createDB.sql 172.16.40.10:/root

LAMP主机:

[root@localhost ~]# mysql < /root/createDB.sql     #也可以在mysql交互界面用source来导入。
[root@localhost ~]# mysql -e 'SHOW DATABASES;'
+--------------------+
| Database           |
+--------------------+
| information_schema |
| Syslog             |        #生成了Syslog数据库。
| mysql              |
| performance_schema |
| test               |
+--------------------+

给客户端授权用户:

MariaDB [Syslog]> GRANT INSERT ON Syslog.* TO 'loguser'@'172.16.40.%' IDENTIFIED BY 'abcdefg';


note2:

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

rsyslog日志管理(mariadb+loganalyzer)_第1张图片

在RULES段里面改一下。

wKioL1aghxixEE-jAAAvyDgoNr0979.jpg

我这里把原来保存至messages的记录,送到了数据库172.16.40.10。

连接数据库的格式,模块要用冒号引起来:

:ommysql:数据库地址,数据库名,用户,密码



重启rsyslog服务(客户端是centos6):

[root@node2 ~]# service rsyslog restart
Shutting down system logger:                               [  OK  ]
Starting system logger:                                    [  OK  ]

这里可以yum安装一些东西试一下,看mysql中是否有记录。

我这里用yum卸载了zsh,已经有记录了。

MariaDB [Syslog]> SELECT * FROM Syslog.SystemEvents\G
.....
*************************** 5. row ***************************
                ID: 5
        CustomerID: NULL
        ReceivedAt: 2016-01-21 15:28:13
DeviceReportedTime: 2016-01-21 15:28:13
          Facility: 1
          Priority: 6
          FromHost: node2
           Message:  Erased: zsh
.....
         SysLogTag: yum[1802]:
.....

而且也还有rsyslog启动的记录。



客户端2(node1):

过程是一样的,只不过不用再导入那个sql脚本了。

[root@node1 ~]# yum install rsyslog-mysql -y
[root@node1 ~]# vim /etc/rsyslog.conf

#### MODULES ####

$ModLoad ommysql        #模块
# The imjournal module bellow is now used as a message source instead of imuxsock.
$ModLoad imuxsock # provides support for local system logging (e.g. via logger command)
$ModLoad imjournal # provides access to the systemd journal
.....
#### RULES ####

*.info;mail.none;authpriv.none;cron.none                :ommysql:172.16.40.10,Syslog,loguser,abcdefg

重启服务,centos7

[root@node1 ~]# systemctl restart rsyslog


LAMP主机:

mysql

*************************** 7. row ***************************
                ID: 7
        CustomerID: NULL
        ReceivedAt: 2016-01-21 15:40:38
DeviceReportedTime: 2016-01-21 15:40:38
          Facility: 5
          Priority: 6
          FromHost: node1
           Message:  [origin software="rsyslogd" swVersion="7.4.7" x-pid="1545" x-info="http://www.rsyslog.com"] start

日志记录过来了。



再来把loganalyzer安装上。

LAMP:

为php授权可以查看Syslog库。哪位朋友可以提示一下,为什么用SELECT 权限不行。j_0063.gif

MariaDB [(none)]> GRANT ALL ON Syslog.* TO 'loganalyzer'@'localhost' IDENTIFIED BY 'abcdefg';
Query OK, 0 rows affected (0.01 sec)
[root@localhost ~]# tar xf loganalyzer-4.1.3.tar.gz 
[root@localhost ~]# cd loganalyzer-4.1.3
[root@localhost loganalyzer-4.1.3]# ls
ChangeLog  contrib  COPYING  doc  INSTALL  src

src目录下的就是php代码。复制到/var/www/html/下面即可。contrib目录里面有两个脚本,内容很简单,只是用来创建config.php和为此文件改变权限为666的。

[root@localhost loganalyzer-4.1.3]# cp -rf src/* /var/www/html/
cp:是否覆盖"/var/www/html/index.php"? y

来看一下那两个脚本:

[root@localhost loganalyzer-4.1.3]# cat contrib/configure.sh 
#!/bin/sh

touch config.php
chmod 666 config.php
[root@localhost loganalyzer-4.1.3]# cat contrib/secure.sh 
#!/bin/sh
chmod 644 config.php

设置成666只是为了php程序有权限写入配置。

[root@localhost loganalyzer-4.1.3]# cp contrib/configure.sh /var/www/html/
[root@localhost loganalyzer-4.1.3]# cd /var/www/html/
[root@localhost html]# bash configure.sh

现在就可以打开网页来完成安装了。

rsyslog日志管理(mariadb+loganalyzer)_第2张图片

rsyslog日志管理(mariadb+loganalyzer)_第3张图片

rsyslog日志管理(mariadb+loganalyzer)_第4张图片

配置文件没有写权限。

[root@localhost html]# ll config.php
-rw-rw-rw-. 1 root root 0 1月  21 15:59 config.php
[root@localhost html]# getenforce
Enforcing
[root@localhost html]# setenforce 0

是selinux的问题,命令关闭的方式重启以后失效。长久生效可以在/etc/selinux/config 文件中的SELINUX=enforcing改成disabled就可以了。

rsyslog日志管理(mariadb+loganalyzer)_第5张图片

rsyslog日志管理(mariadb+loganalyzer)_第6张图片

这里默认就行。

rsyslog日志管理(mariadb+loganalyzer)_第7张图片

上面选择成PDO也一样,它们是不同的连接器。

下一步再下一步就完成了。

wKioL1agqd2xvJHbAABf6U_yo9w315.jpg



还需要安装上php-gd这个库,才能显示图表。




如果是用rsyslog自身来做日志集中存储。

客户端:

*.info;mail.none;authpriv.none;cron.none                @172.16.40.10

服务端:

rsyslog日志管理(mariadb+loganalyzer)_第8张图片

UDP,TPC只开一种就可以,开两种也可以。



这个东西自已感觉不怎么好用,问题也有点多。服务类日志也不会用rsyslog来记录,上面数据库部分也是用rsyslog来记录的,数据库只是存储而已。



补充点概念:

 syslog  系统日志是一个专门记录系统日志的服务在CentOS5 上面就是叫做syslog。
进程与软件名: syslogd系统日志, klogd记录内核的。
而在CentOS6 或7上面叫做rsyslog , 增强版的。进程只有rsyslogd

日志:
facility: 日志设施  从功能或程序上对日志进行分类,并由专门的工具负责记录日志。
            auth        认证
            authpriv        授权
            cron        任务计划有关crontab
            daemon        守护进程有关
            kern        内核有关
            lpr        打印
            mail        邮件
            mark        防火墙标记
            news        新闻组
            security        安全相关
            syslog        系统日志自身的或无法分类的。
            user        关于各个用户的
            uucp        很早以前unic到unic复制数据的协议,现在很少见到。
            local1---local7   8个可以自定义的类别

priority: 级别  
记录的日志是所设级别与更高级别的日志。如记录info,就包含了notice,warning.....emerg。
            debug  调试 所有信息
            info   程序正常记录的信息
            notice 注意,异常信息。
            warning 警告信息
            err    错误信息   
            crit    橙色警报
            alert    红色警报
            emerg/panic  挂掉的信息
            
指定级别:
            *    表示所有级别
            none    没有级别
            priority    直接指定的级别包含所有高于此级别的
            =priorty    仅此级别

定义一个日志的级别和类别是用:类别.级别   日志存放路径     来指定的。
facitlity.priority    Target
        
通配机制:
            *  所有的
            ,  列表
            ! 取反
如:

mail.info      /var/log/maillog      info与info以上的级别
mail.=info    /var/log/maillog        仅info级别的日志。
mail.!info                除了info与以上的所有级别。
*.info                    所有类别info与info以上级别。
mail,news.info                mail,news都用info级别。

Target:  日志位置
            1.  文件, 如:/var/log/messages
            2.  用户,*表示所有用户。  发给用户。  如:系统挂了的信息。
            3.  日志服务器, 如: @172.16.100.1
            4.  管道     COMMAND   如: 发给某个命令处理一下。
            5.  - 开头表示异步存储。
            
配置文件:
/etc/rsyslog.conf      CentOS5 上是 syslog.conf

日志存储文件发生变化以后,要重启rsyslog服务。如用vim打开了messages文件。
不然rsyslog服务会不再保存此数据文件的日志。


j_0022.gif