日志系统中相关名词解释:

#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服务器日志不便于查看分析,于是搭建一个日志分析工具就非常的有必要了。


二、基于web的loganalyzer日志分析工具的搭建


所需软件包:
loganalyzer-3.6.4.tar.gz

1.解压软件包,生成配置文件


[root@clone2 ~]# tar xvf loganalyzer-3.6.4.tar.gz
[root@clone2 ~]# cd loganalyzer-3.6.4
[root@clone2 ~]# mv src/* /usr/local/apache/htdocs/syslog/
[root@clone2 ~]# mv contrib/* /usr/local/apache/htdocs/syslog/
[root@clone2 ~]# chmod u+x /usr/local/apache/htdocs/syslog/*.sh
[root@clone2 ~]# ./configure.sh                                    #生成loganalyzer的配置文件config.php
[root@clone2 ~]# ./secure.sh
[root@clone2 ~]# setfacl -m u:apache:rw config.php   #授予apache对loganalyzer配置文件的读写权限。

2.建立loganalyzer 所需的数据库,创建用户并授权。

mysql> create database loganalyzer;

mysql>grant all on loganalyzer.* to 'loganalyzer'@'loaclhost' identified by 'password';

mysql>grant all on loganalyzer.* to 'loganalyzer'@'127.0.0.1' identified by 'password';

mysql>flush privileges;


3.安装loganalyzer

在浏览器中输入你的主机名(本机以clone2.victor.com为例)


RPM方式搭建的LAMP+rsyslog+loganalyzer以实现集中式日志管理系统_第1张图片

RPM方式搭建的LAMP+rsyslog+loganalyzer以实现集中式日志管理系统_第2张图片


RPM方式搭建的LAMP+rsyslog+loganalyzer以实现集中式日志管理系统_第3张图片

RPM方式搭建的LAMP+rsyslog+loganalyzer以实现集中式日志管理系统_第4张图片

RPM方式搭建的LAMP+rsyslog+loganalyzer以实现集中式日志管理系统_第5张图片

RPM方式搭建的LAMP+rsyslog+loganalyzer以实现集中式日志管理系统_第6张图片

RPM方式搭建的LAMP+rsyslog+loganalyzer以实现集中式日志管理系统_第7张图片

RPM方式搭建的LAMP+rsyslog+loganalyzer以实现集中式日志管理系统_第8张图片

RPM方式搭建的LAMP+rsyslog+loganalyzer以实现集中式日志管理系统_第9张图片