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]