这里演示的只是简单的本地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 <?php phpinfo(); ?>
[root@localhost ~]# systemctl start httpd #启动httpd服务。 [root@localhost ~]# systemctl start mariadb #启动mysql服务。
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
在RULES段里面改一下。
我这里把原来保存至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 权限不行。
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
现在就可以打开网页来完成安装了。
配置文件没有写权限。
[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就可以了。
这里默认就行。
上面选择成PDO也一样,它们是不同的连接器。
下一步再下一步就完成了。
还需要安装上php-gd这个库,才能显示图表。
如果是用rsyslog自身来做日志集中存储。
客户端:
*.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服务会不再保存此数据文件的日志。