RPM方式搭建的LAMP+rsyslog+loganalyzer以实现集中式日志管理系
日志系统中相关名词解释:
#facility: 设备(或日志类型):
auth#pam产生的日志,认证日志
authpriv#ssh,ftp等登录信息的验证信息,认证授权认证
cron#时间任务相关
kern#内核相关的日志
lpr#打印
mail#邮件相关的日志
mark(syslog) #rsyslog服务内部的信息,时间标识
news#新闻组
user#用户程序产生的相关信息
uucp#unix to unix copy, unix主机之间相关的通讯
local 1-7#自定义的日志设备
#priority: 日志级别:
debug#有调式信息的,日志信息最多
info#一般信息的日志,最常用
notice#最具有重要性的普通条件的信息
warning, warn#警告级别
err, error#错误级别,阻止某个功能或者模块不能正常工作的信息
crit#严重级别,阻止整个系统或者整个软件不能正常工作的信息
alert#需要立刻修改的信息
emerg, panic#内核崩溃等严重信息
###从上到下,级别从低到高,记录的信息越来越少,如果设置的日志内性为info,则日志不会记录比info级别低的日志,只会记录比info更高级别的日志,也包括info本身的日志。
Target:日志存放位置,
#文件, 如/var/log/messages
#用户, root,*(表示所有用户)
#日志服务器,@172.16.1.2
#管道| COMMAND
rsyslog支持通配机制:
*:所有
,: 列表
! :取反
实验环境:
RHEL 6.4
clone2.victor.com 为rsyslog服务器,其ip:192.168.222.133
ip 192.168.222.131的主机位客户端
一.RPM方式搭建的LAMP+rsyslog以实现集中式日志管理系统
1.挂载光盘至/mnt/cdrom,配置本地yum 源.
vim /etc/yum.repos.d/local.repo
[localbase]
name=RedHat6
baseurl=file:///mnt/cdrom
enabled=1
gpgcheck=0
2.rmp 包方式搭建LAMP环境
yum -y insatll httpd mysql mysql-server php php-mysql mysql-devel php-gd
httpd用来提供web服务
php使apache支持php,因为loganalyzer是用php编写
php-mysql用于loganalyzer连接数据库
php-gd用于绘图
环境搭好之后启动httpd及mysql服务
3.安装rsyslog 以及 rsyslog连接mysql的驱动
[root@clone2~]yum install rsyslog rsyslog-mysql
[root@clone2 ~]# rpm -ql rsyslog-mysql #查看rsyslog-mysql 生成哪些文件
/lib/rsyslog/ommysql.so
/usr/share/doc/rsyslog-mysql-5.8.10
/usr/share/doc/rsyslog-mysql-5.8.10/createDB.sql
4.创建日志文件的数据库
[root@clone2 ~]# cd /usr/share/doc/rsyslog-mysql-5.8.10/ # 查看日志文件的sql脚本
[root@clone2 rsyslog-mysql-5.8.10]# ls
createDB.sql
[root@clone2 rsyslog-mysql-5.8.10]# mysql -u root -p < createDB.sql #导入日志文件的sql脚本,生成日志文件的数据库
mysql> show databases; #此时登录mysql数据库,可以查看到生成了一个名为Syslog的数据库
+--------------------+
| Database |
+--------------------+
| information_schema |
| Syslog #记录日志文件的数据库 (日志主要记录在SystemEvents 这张表格中。) |
| mysql |
| test |
+--------------------+
5.# 建立一个普通用户,授予此用户具有操控Syslog数据库的权限
mysql> GRANT ALL ON Syslog.* TO 'rsysloguser'@'localhost' IDENTIFIED BY 'password';
Query OK, 0 rows affected (0.00 sec)
mysql> GRANT ALL ON Syslog.* TO 'rsysloguser'@'127.0.0.1' IDENTIFIED BY 'password';
Query OK, 0 rows affected (0.00 sec)
mysql> flush privileges;
6.配置rsylog服务器端:
编辑rsyslog的配置文件 /etc/rsyslog.conf
ModLoad imudp #加载udp的模块
$UDPServerRun 514 #允许接收udp 514的端口传来的日志
$ModLoad imtcp #加载tcp的模块
$InputTCPServerRun 514 #允许接收tcp 514的端口传来的日志
$ModLoad ommysql #加载mysql的模块
*.* :ommysql:127.0.0.1,Syslog,rsysloguser,password #添加这行,把其他行都注释掉,这行表示把所有的设施的所有日志都记录到数据库服务器中的Syslog
数据库中,以rsysloguser用户,password密码访问数据库
*.* :ommysql:127.0.0.1,Syslog(数据库名称),rsysloguser(用户名),rsyslogp@ss(密码)
[root@clone2 ~]# service rsyslog restart
7.客户端(192.168.222.131)配置:
vim /etc/rsyslog.conf
*.* @192.168.222.133 #添加这一行,用于客户端和服务器端通信
service rsyslog restart
8.测试:
在客户端 即192.168.222.131这台机器上
logger -p notice "test log from 192.168.222.131"
验证是否在远端服务器的mysql数据库里有日志记录:
mysql -ursysloguser -p
USE Syslog
SELECT * FROM SystemEvents;
************************** 1519. row ***************************
ID: 1519
CustomerID: NULL
ReceivedAt: 2014-02-04 17:34:20
DeviceReportedTime: 2014-02-04 17:34:20
Facility: 1
Priority: 5
FromHost: www
Message: test log from 192.168.222.131 #远程客户端的日志测试记录。
NTSeverity: NULL
Importance: NULL
EventSource: NULL
EventUser: NULL
EventCategory: NULL
EventID: NULL
EventBinaryData: NULL
MaxAvailable: NULL
CurrUsage: NULL
MinUsage: NULL
MaxUsage: NULL
InfoUnitID: 1
SysLogTag: root:
EventLogType: NULL
GenericFileName: NULL
SystemID: NULL
1519 rows in set (0.02 sec)
虽然日志存放在mysql数据库服务器中,是解决了日志集中管理,但是存放在mysql服务器日志不便于查看分析,于是搭建一个日志分析工具就非常的有必要了。
推荐阅读: