集中式日志管理的优势
在一个完整的信息系统里面,日志系统是一个非常重要的功能组成部分。查看服务器、交换机、路由器和其他网络设备的日志,可以帮助网管员迅速了解和诊断问题。通过使用rsyslog协议搭建集中日志存储,可以有效地解决日志格式不统一、存储时间短的问题,通过建立管道,预处理等技术改变了syslog日志原有的分类存放方式,实现了更为科学的日志信息分类存放,为日志的进一步分析提供了平台。
环境:RHEL 6.4
httpd
php
mysql
loganalyzer
本例采用rpm包方式安装;
1、挂载光盘:
# mount-r /dev/cdrom /mnt
2、新建yum源
# vim /etc/yum.repos.d/mycd.repo
[mycd]
name=mycd
baseurl=file:///mnt/Server/
enabled=1
gpgcheck=0
清除缓存
# yum clean all
安装所需软件
# yum -y install httpd php mysql-server mysql php-gd rsyslog-mysql
下载loganalyzer并解压
tar xf loganalyzer-3.6.4.tar.gz
将里面src文件夹下的所有内容复制到网站默认DocumentRoot目录下,(可以更改)
cd loganalyzer-3.6.4
cp -r src/*/var/www/html/
启动httpd和mysqld服务并设置开机启动
为防止在默认配置下出现错误提示,修改/etc/hosts文件添加本机的IP和hostname的对应关系
vi/etc/hosts
172.16.1.4 sta4.magedu.com sta4
# servicehttpd start
# chkconfig httpd on
# servicemysqld start
#chkconfig mysqld on
为loganalyzer建立空配置文件;
# cd /var/www/html
# touch config.php ;为初始化配置做准备
# chown-R apache.apache *
开始配置:在浏览器输入服务器地址进行访问,出现下面界面;
检查预配置,点next
检查config.php文件是否可写;
基本配置:
需事先创建loganalyzer数据库并授权给用户
[root@sta4 html]# mysql
mysql> CREATE DATABASE loganalyzer;
mysql> GRANT ALL ON loganalyzer.* TO'userlog'@'localhost' IDENTIFIED BY 'redhat';
mysql> FLUSH PRIVILEGES;
创建所需的表
创建表完成,点击下一步创建用户;
创建管理员用户
创建一个存储日志的数据库:
首先用系统自带的脚本进行初始化
[root@sta2 ~]# mysql < /usr/share/doc/rsyslog-mysql-5.8.10/createDB.sql
查看生成的数据库和表
[root@sta2 ~]# mysql
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 3348
Server version: 5.1.66 Source distribution
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| Syslog |
| loganalyzer |
| mysql |
| test |
5 rows in set (0.02 sec)
mysql> use Syslog
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
mysql> show tables;
+------------------------+
| Tables_in_Syslog |
+------------------------+
| SystemEvents |
| SystemEventsProperties |
+------------------------+
2 rows in set (0.00 sec)
完成配置
接下来编辑rsyslog服务的配置文件:
vim /etc/rsyslog.conf,
#### MODULES ####
添加rsyslog支持mysql的模块
$ModLoad ommysql
# Provides UDP syslog reception(启动UDP接收)
$ModLoad imudp
$UDPServerRun 514
#定义日志输出位置:
格式:facility.priority Target(存放位置)
存放位置还可以是除了本地文件之外的其他地方,rsyslog支持其他输出模块,可以通过man rsyslog.conf来查看
MODULES
Rsyslog has a modular design. Consequently, there is a growing number ofmodules. See the html documentation for
their full description.
omsnmp SNMP trap output module
omgssapi ;Output module forGSS-enabled syslog
ommysql; Output module for MySQL,需要安装rsyslog-mysql
………
例如:
*.* :ommysql:localhost,Syslog,userlog,redhat
设备.日志级别 :mysql模块:日志服务器,日志数据库名称,用户,密码
# Logging much elseclutters up the screen.
#kern.* /dev/console ;输出到终端显示
# Log anything (exceptmail) of level info or higher.
# Don't log privateauthentication messages!
#*.info;mail.none;authpriv.none;cron.none /var/log/messages;输出到指定目录
*.* :ommysql:localhost,Syslog,userlog,redhat
# Log all the mailmessages in one place.
mail.* -/var/log/maillog;支持异步写入,优化系统性能
# Everybody getsemergency messages
*.emerg *;表示发送给当前登录系统的用户
uuc @172.16.1.2 表示把相应的日志发到日志服务器172.16.1.2
日志系统中相关名词解释;
#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 #内核崩溃等严重信息
###从上到下,级别从低到高,记录的信息越来越少,如果设置的日志内性为err,则日志不会记录比err级别低的日志,只会记录比err更高级别的日志,也包括err本身的日志。
=====================================================================
Target:
#文件, 如/var/log/messages
#用户, root,*(表示所有用户)
#日志服务器,@172.16.1.2
#管道 | COMMAND
rsyslog支持通配机制: *:所有 ,: 列表!
修改完成后,使用logger命令来测试:
rsyslog还可以收集windows以及路由器、交换机的日志:
(1)收集windows日志:
需要安装软件,下载对应的软件分32位和64位
http://code.google.com/p/eventlog-to-syslog/
解压后直接放到system32下,找到cmd.exe ,以管理员身份运行
输入evtsys.exe -i -h 172.16.1.2 -l 4 启动
然后输入services.msc打开服务列表,可以看到Eventlog to Syslog服务
以后可以在cmd里使用net evtsys start|stop来启动或关闭了。
Usage:evtsys.exe -i|-u|-d [-h host] [-b host] [-f facility] [-p port]
[-s minutes] [-l level] [-n]
-i Install service
-u Uninstall service
-d Debug: run as console program
-h host Name of log host
-b host Name of secondary log host (optional)
-f facility Facility level of syslog message
-l level Minimum level to send to syslog.\n", stderr);
0=All/Verbose, 1=Critical,2=Error, 3=Warning, 4=Info
-n Include only those events specified in the config file.
-p port Port number of syslogd
-q bool Query the Dhcp server to obtain the syslog/port to log to
(0/1 = disable/enable)
-s minutes Optional interval between status messages. 0 = Disabled
Defaultport: 514
Defaultfacility: daemon
Defaultstatus interval: 0
Host (-h)required if installing.
效果图:
不足之处:有乱码
(2)收集路由器日志以Cisco 2691为例;
Router>en
Router#configterminal
Enter configurationcommands, one per line. End with CNTL/Z.
Router(config)#int f0/0
Router(config-if)#ipadd 172.16.1.20 255.255.0.0
Router(config-if)#no shutdown
Router(config-if)#end
Router#ping 172.16.1.2
Type escape sequence toabort.
Sending 5, 100-byteICMP Echos to 172.16.1.2, timeout is 2 seconds:
.!!!!
Router#conf t
Router(config)#logginghost 172.16.1.2
Router(config)#loggingon
Router(config)#loggingtrap notifications
Router(config)#loggingfacility local1
Router(config)#loggingsource-interface FastEthernet0/0
添加设备的主机名和IP的对应,方便显示主机名;
vi/etc/hosts
172.16.0.1 server.magelinux.com server
172.16.1.2 sta2.magedu.com www
172.16.1.20 Cisco2691
Cisco有专业的日志以及管理工具:ACS,也称AAA服务器,这里暂不做介绍。