软件提供的功能:
1、rsyslog是RHEL或centos系统6.x版本的日志服务,代替以前系统的syslog服务。在这个架构中rsyslog服务主要是收集日志的功能,把日志归类,写入数据库。
2、mysql是简单的数据库,在这个架构中主要任务是存放收集过来的日志信息,以便提供给loganalyzer软件来显示出来。
3、loganalyzer是一个日志分析工具,比较简单。在这个架构中主要是从mysql数据库中提取数据依条形和图形直观的显示出来,提供筛选、搜索、归类、统计等功能。
4、evtsys是运行在windows平台下,把系统收集的日志发送到mysql中,保存起来。
整个环境需要的条件:
在整个框架中,rsyslog、mysql、http、php等使用系统自带的rpm包,loganalyzer是从网上下载的源码包文件,地址如下http://download.adiscon.com/loganalyzer/loganalyzer-3.6.3.tar.gz。
整个日志服务是建立在LAMP架构之上的,需要对LAMP有所了解。
两台RHEL6.4系统的主机,一个是server一个是client,把防火前和selinux关闭。本例中test1为server,test2为client。
搭建步骤:
1、先在server上来验证一下LAMP架构。(需要安装的包使用yum去安装,这里就不再罗列)
a、初始化mysql服务,然后进入mysql数据库,执行mysql-u用户名-D数据库名-p密码进行验证mysql是否存在问题;
b、开启httpd服务,打开浏览器,输入本机IP地址,验证httpd服务。找到DirectoryIndex关键字,添加index.php。如:DirectoryIndexindex.htmlindex.phpindex.html.var;
c、修改httpd.conf配置文件,在/var/www/html/添加测试index.php页面。进行LAMP的整体测试。代码如下
vi /var/www/html/index.php <?php $link=mysql_connect(localhost,root,123456); ##(主机名,用户名,密码) if(!$link) echo "失败!"; else echo "成功!"; mysql_close(); ?>
接下来我们开始建立rsyslog服务器。在配置之前先来读下配置文件以及和配置文件有关的文件。
#### MODULES 日志的模块#### $ModLoad imuxsock #imuxsock是模块名,支持本地系统日志的模块 $ModLoad imklog #imklog是模块名, 支持内核日志的模块 #$ModLoad immark #immark是模块名,支持日志标记 #$ModLoad imudp #imupd是模块名,支持udp协议 #$UDPServerRun 514 #允许514端口接收使用UDP和TCP协议转发过来的日志 #$ModLoad imtcp #imtcp是模块名,支持tcp协议 #$InputTCPServerRun 514 ################# GLOBAL DIRECTIVES #################定义全局日志格式的指令 $ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat #定义日志格式默认模板 $IncludeConfig /etc/rsyslog.d/*.conf #载入rsyslog.d文件中所有以conf结尾的文件 #### RULES #### *.info;mail.none;authpriv.none;cron.none /var/log/messages #####记录所有日志类型的info级别以及大于info级别的信息到/var/log/messages,但是mail邮件信息,authpriv验证方面的信息和cron时间#任务相关的信息除外 authpriv.* /var/log/secure #####authpriv验证相关的所有信息存放在/var/log/secure mail.* -/var/log/maillog #####邮件的所有信息存放在/var/log/maillog; 这里有一个-符号, 表示是使用异步的方式记录, 因为日志一般会比较大 cron.* /var/log/cron ####计划任务有关的信息存放在/var/log/cron *.emerg * (*表示所有用户) ###记录所有的大于等于emerg级别信息, 以wall方式发送给每个登录到系统的人 uucp,news.crit /var/log/spooler ####记录uucp,news.crit等存放在/var/log/spooler local7.* /var/log/boot.log ####本地服务器的启动的所有日志存放在/var/log/boot.log中 #############################rsyslog.conf###############中日志规则的定义的格式 facitlity.priority Target #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.22.1 #管道 | COMMAND
再来看看日志滚动服务。所有的日志文件都会随着时间的推移和访问次数的增加而迅速增长,因此必须对日志文件进行定期清理以免造成磁盘空间的不必要的浪费,同时也加快了管理员查看日志所用的时间。因而logrotate就非常有存在的必要了,Redhat系统中已经默然安装logrotate且利用logrotate设置了相关对rsyslog日志迅速增长的设置。logrotate的执行由crond服务实现。在/etc/cron.daily目录中,有个文logrotate,它实际上是个shellscript,用来启动logrotate。logrotate程序每天由cron在指定的时间(/etc/crontab)启动。
sed -e '/^#/d' -e '/^$/d' /etc/logrotate.conf weekly #每周清理一次日志文件 rotate 4 #保存四个轮换日志 create #清除旧日志的同时,创建新的空日志文件 dateext #使用日期为后缀的回滚文件 #可以去/var/log目录下看看 include /etc/logrotate.d #包含/etc/logrotate.d目录下的所有配置文件 /var/log/wtmp { #对/var/log/wtmp这个日志文件按照下面的设定日志回滚 monthly #每月轮转一次 create 0664 root utmp #设置wtmp这个日志文件的权限,属主,属组 minsize 1M #日志文件必须大于1M才会去轮换(回滚) rotate 1 #保存一个轮换日志 } /var/log/btmp { missingok #如果文件丢失不报错 monthly create 0600 root utmp rotate 1 } [root@jie1 ~]# cat /etc/logrotate.d/syslog /var/log/cron #这些文件是rsyslog.conf文件中全局配置定义中指定的Target的路径 /var/log/maillog /var/log/messages /var/log/secure /var/log/spooler { sharedscripts postrotate # 轮换之后重启rsyslog服务 /bin/kill -HUP `cat /var/run/syslogd.pid 2> /dev/null` 2> /dev/null || true endscript }
2、rsyslog建立:
a、先安装rsyslog服务包的,有一个需要特别注意的是有个rsyslog-mysql的rpm包需要装上去,这个是日志和数据库结合的包,是必须装的。
b、配置/etc/rsyslog.conf文件。添加1、2行,查找并把注释符号去掉
vi /etc/rsyslog.conf SYSLOGD_OPTIONS="-c 2 -r -x -m 180" ##添加, KLOGD_OPTIONS="-x" ##添加, $ModLoad immark.so ##查找,并把注释符号去掉。 $ModLoad imudp.so ##查找,并把注释符号去掉。 $UDPServerRun 514 ##查找,并把注释符号去掉。
参数描述如下:
-c指定运行兼容模式。
-r指定监听端口。默认514
-x在接收客户端消息时,禁用DNS查找。需和-r参数配合使用。
-m标记时间戳。单位是分钟,为0时,表示禁用该功能。
修改完保存配置文件后重启rsyslog服务。
3、客户端(test2)设置:
vi /etc/rsyslog.conf *.* @172.16.2.240 ##添加改行,@ 之后是server端ip地址。 vi /etc/bashrc ##可选项,会记录:那台主机由谁在什么目录执行什么命令 export PROMPT_COMMAND='{ msg=$(history 1 | { read x y; echo $y; });logger "[euid=$(whoami)]":$(who am i):[`pwd`]"$msg"; }' ##添加 source /etc/bashrcce ##执行后立即生效
修改完并保存配置文件后重启rsyslog服务。
4、第一阶段验证测试。
a、在客户端输入logger-pinfo“测试信息”;
b、在客户端的/var/log/messager文件中去查看是否有执行的这条命令和输入的结果。
Nov 19 06:49:46 test2 root: [euid=root]:root pts/0 2013-11-19 06:49(172.16.2.240):[/root]cat /var/log/messages Nov 19 06:50:30 test2 root: 测试信息 Nov 19 06:50:30 test2 root: [euid=root]:root pts/0 2013-11-19 06:49(172.16.2.240):[/root]logger -p info "测试信息"
第一行是root用户在test2主机上的root目录下执行的cat命令。
c、去服务端查看下/var/log/messager中的文件内容看是否有执行的命令和提示信息(主机名是test2的)
Nov 19 06:50:30 test2 root: 测试信息 Nov 19 06:50:30 test2 root: [euid=root]:root pts/0 2013-11-19 06:49 (172.16.2.240):[/root]logger -p info "测试信息" Nov 19 06:50:33 test2 root: [euid=root]:root pts/0 2013-11-19 06:49 (172.16.2.240):[/root]cat /var/log/messages
以上两个主机的messager查看结束的顺序也是这样。
5、与mysql整合。
a、找到rsyslog-mysql的安装目录,执行sql脚本,目的是创建Syslog数据库库。
一般默认使用rpm包安装的路径在/usr/share/doc/rsyslog-mysql-“版本信息”/下有个createDB
.sql脚本文件。
mysql -u root -p < createDB.sql Enter password: ##输入密码后即可导入成功。 mysql> show databases; ##显示数据库服务器中没有日志的数据库 +--------------------+ | Database | +--------------------+ | information_schema | | Syslog | | mysql | | test | +--------------------+ 3 rows in set (0.00 sec) mysql> \q
mysql> use Syslog; #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) mysql> grant all on Syslog.* to 'syslog'@'localhost' identified by 'redhat'; #设置用户访问数据库服务器中Syslog数据库的用户名和密码 Query OK, 0 rows affected (0.00 sec) mysql> flush privileges; #重读授权表,及时生效 Query OK, 0 rows affected (0.00 sec) mysql> \q Bye
c、修改rsyslog文件,保存后重启服务。内容如下:
vi /etc/rsyslog.conf $ModLoad ommysql.so ##添加 *.* :ommysql:localhost,Syslog,rsyslog,redhat ##添加
第二行是把ommysql的模块添加到rsyslog服务中,这个模块是rsyslog-mysql提供的。
第三行是把所有信息通过ommysql参数添加到数据库中。格式是*.*(内容):ommysql:主机名:数据库:取得权限的用户名:密码
6、第二阶段的测试
方法和第一阶段一样,除了第一阶段显示的日志外,在数据库中也可以看到信息,如下:
mysql> select * from SystemEvents where DeviceReportedTime = "2013-11-19 06:50:30" \G *************************** 1. row *************************** ID: 19049 CustomerID: NULL ReceivedAt: 2013-11-19 06:50:30 DeviceReportedTime: 2013-11-19 06:50:30 Facility: 1 Priority: 6 FromHost: test2 Message: 测试信息 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 processid: checksum: 0 *************************** 2. row *************************** ID: 19050 CustomerID: NULL ReceivedAt: 2013-11-19 06:50:30 DeviceReportedTime: 2013-11-19 06:50:30 Facility: 1 Priority: 5 FromHost: test2 Message: [euid=root]:root pts/0 2013-11-19 06:49 (172.16.2.240):[/root]logger -p info "测试信息" 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 processid: checksum: 0 2 rows in set (0.01 sec)
以上mysql中的记录可以看出,rsyslog的日志已经存放到数据库中了,到这一步就可以说完成90%了。
7、安装loganalyzer源码包,并配置环境。
wget http://download.adiscon.com/loganalyzer/loganalyzer-3.6.3.tar.gz tar zxvf loganalyzer-3.6.3.tar.gz cd loganalyzer-3.6.3 复制loganalyzer源代码到apache的DocumentRoot下 cp -r src/* /var/www/html/loganalyzer cp -r contrib/* /var/www/html/loganalyzer chown -R daemon.daemon /var/www/html/loganalyzer 通过web向导安装loganalyzer前,必须先执行以下两个脚本 cd /var/www/html/loganalyzer/ sh configure.sh sh secure.sh 注:该脚本实际上是创建该目录下的config.php,并配置该文件权限。 在浏览器输入网址,进入安装向导 http://IP/loganalyzer http://IP/loganalyzer
8、在windows平台上安装evtsy软件
1.下载evtsys http://eventlog-to-syslog.googlecode.com/files/Evtsys_4.4.3_64-Bit.zip 2.解压文件将包内64-Bit文件夹下的所有文件复制C:\Windows\System32下 3.开启evtsys服务 运行- cmd > cd c:\Windows\System32 > evtsys -i -s 10 -h 192.168.7.11 -p 514 > net start evtsys 最好写个bat脚本,让开机自动运行。