2341rtw 发表于 2016-1-22 09:09:04

rsyslog日志管理(mariadb+loganalyzer)

这里演示的只是简单的本地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授权存储日志。


注意:时间同步。
loganalyzer所在系统:centos 7.1

1、安装LAMP:

1
# yum install httpd php php-mysql mariadb-server -y




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

1
2
3
4
5
# vim /var/www/html/index.php

<?php
      phpinfo();
?>





1
2
# systemctl start httpd      #启动httpd服务。
# systemctl start mariadb       #启动mysql服务。






2、客户端note2:
安装rsyslog-mysql 用以支持mysql系列数据库:

1
2
3
4
5
# yum install rsyslog-mysql -y
# 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所在主机导入一下。

1
# scp /usr/share/doc/rsyslog-mysql-5.8.10/createDB.sql 172.16.40.10:/root




LAMP主机:

1
2
3
4
5
6
7
8
9
10
11
# mysql < /root/createDB.sql   #也可以在mysql交互界面用source来导入。
# mysql -e 'SHOW DATABASES;'
+--------------------+
| Database         |
+--------------------+
| information_schema |
| Syslog             |      #生成了Syslog数据库。
| mysql            |
| performance_schema |
| test               |
+--------------------+




给客户端授权用户:

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





note2:

1
# vim /etc/rsyslog.conf





在RULES段里面改一下。

我这里把原来保存至messages的记录,送到了数据库172.16.40.10。
:ommysql:DBHOST,DB,DBUSER,DBUSERPASSWD
重启rsyslog服务(客户端是centos6):

1
2
3
# service rsyslog restart
Shutting down system logger:                              
Starting system logger:                                    




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

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
MariaDB > 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:
.....




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


客户端2(node1):
过程是一样的,只不过不用再导入那个sql脚本了。

1
2
3
4
5
6
7
8
9
10
11
12
13
# yum install rsyslog-mysql -y
# 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

1
# systemctl restart rsyslog





LAMP主机:

mysql


1
2
3
4
5
6
7
8
9
*************************** 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: start




日志记录过来了。

再来把loganalyzer安装上。
LAMP:
为php授权可以查看Syslog库。哪位朋友可以提示一下,为什么用SELECT 权限不行。

1
2
MariaDB [(none)]> GRANT ALL ON Syslog.* TO 'loganalyzer'@'localhost' IDENTIFIED BY 'abcdefg';
Query OK, 0 rows affected (0.01 sec)





1
2
3
4
# tar xf loganalyzer-4.1.3.tar.gz
# cd loganalyzer-4.1.3
# ls
ChangeLogcontribCOPYINGdocINSTALLsrc




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

1
2
# cp -rf src/* /var/www/html/
cp:是否覆盖"/var/www/html/index.php"? y




来看一下那两个脚本:

1
2
3
4
5
6
7
8
# cat contrib/configure.sh
#!/bin/sh

touch config.php
chmod 666 config.php
# cat contrib/secure.sh
#!/bin/sh
chmod 644 config.php




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

1
2
3
# cp contrib/configure.sh /var/www/html/
# cd /var/www/html/
# bash configure.sh




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



配置文件没有写权限。


1
2
3
4
5
# ll config.php
-rw-rw-rw-. 1 root root 0 1月21 15:59 config.php
# getenforce
Enforcing
# setenforce 0




是selinux的问题,命令修改重启失效。可以在/etc/selinux/config 文件中的SELINUX=enforcing改成disabled就可以了。


这里默认就行。


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

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


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




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


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




服务端:

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服务会不再保存此数据文件的日志。
页: [1]
查看完整版本: rsyslog日志管理(mariadb+loganalyzer)