装完之后总感觉,恩。好像很容易就分析了系统日志,目的是达到了。但问题是好像功能太过简单和呆板化,如果我要做其它分析怎么办?loganalyzer基本功能必须得到彻底的了解。官网什么的我也去找过,不过天生英语弱智,没找出什么有用的东西(还好软件是用的网友汉化版)。于是一边从网上找资料一边自己分析。好吧,好歹还得到了一点东西。
一、关闭loganalyzer的资助信息
其实这个东西虽然有点碍事,但总感觉把它去掉有点不道德。额,当我什么都没说吧。
# vim /var/www/html/log/src/include/functions_common.php
把 $content['SHOW_DONATEBUTTON'] 的值改成 false
再次读入文件的时候就消失了,不需要重启任何服务。
二、对于loganalyzer功能的基本认识
没登录的时候,可以看到的功能是
搜索,其实是一个比较全面的高级筛选器。
显示事件,查看分析过的日志内容,这个是基本功能。
统计,这个是根据数据源而产生的统计图表。
报表,如果不登录,只能看到模板,不能使用。模板的新建,使用下面单列说明。
帮助,除了第一个文档可以看看以外,下面三个好像都够水。
知识库,好像也打不开。
管理中心,在登录之后可以使用。
设置,分成默认的全局设置和个人设置。这个进入系统之后都可以改。
数据源,即最原始的日志信息。可以是文件也可以是mysql数据库。
字段,这个是内部字段,是视图积木的最小块。
视图,这个其实是显示出的二维表结构。
搜索,其实就是已经定下了条件的快捷搜索。
图表,这个是统计图表设置。
消息分析器,这个是解决拆分数据源内日志字符串使之与字段相对应。
报表模块,根据四个报表模板对需求的数据进行报表设置。
数据映射,字段分内部和loganalyzer字段。内部字段是rsyslog的日志字段,这里就是完成日志字段和软件字段的对应。
三、数据源的添加。
一时不知道从何说起,先做吧,先完之后再细说。
a.添加 cron日志分析
这里说明一下,因为我写的是 *.*其实包括cron在内所有rsyslog记录的日志都已经写入mysql了。这里单独拿出来,是为演示数据源的添加。
恩,添加
源的名称:cron
来源类型:磁盘文件 //这里直接取的是/var/log/cron
视图选择:syslog fidlds //这个就是显示的二维表
消息分析器:注意,这里是空的
日志类型:syslog / Rsyslog //这时其实就是日志记录源。
Syslog file:这里是写明日志文件的路径 //注意一点,日志文件权限最好644否则可能日志 无法读取。
完成。
好了。下面查看一下效果:
显示事件
右上角选择“消息源:cron”
显示成功。不过要注意,facility(来源设备)和Severity(严重程度)这两行是没有的。
日志本身也没有
不过如果换成数据库里的数据源。应该是有的:
b.添加apache日志
其实apache日志之前已经用awstats做过分析了,效果比这个要好。不过那个格式要求是combined,而这里两个格式都通用。So,试试看common格式。
# vim /etc/httpd/conf/httpd.conf
把 CustomLog log/access_log combined 改成 CustomLog "/var/log/access_log" common
这里说明一下,磁盘目录文件强制要求放在/var/log之下,链接好像不起作用。
名字设成 apache 这个随便
消息分析器是 apache2common 这里必写否则会有字段无法显示。
视图也要改成 Webserver Fields
数据源选择 apache 之后,日志分析如下:
消息分析器,只有四个。有两个是apache的,一个是syslog,还有一个IIS的。官方没有再提供新的,自己也学也没办法添加。So,暂时到这里吧。
四、报表的使用
报表很重要,但确实用得不是很熟。
点开之后,如下:
auditsummary 事件日志审计总结报告
eventsummary 事件日志总结报告
logonlogoff 事件日志登录/登出总结报告
syslogsummary Syslog总结报告
这是我选了最后一个
标题和默认的一样,按需求自己改一下。
过滤器,这个东西说白了就是筛选条件。图上我添加的”Date 最后条件是 last 最近24小时”意思就是说筛选出昨天的所有日志。其它的可以通过“添加过滤器”完成多条件查询。
日志源,这个不必说了吧。选自己要的。
输出格式,这个有html和pdf两种,具体看自己要求。
输出目标,有个直接输出和保存到文件,因为我是要邮件发出的,所以保存到文件了。
保存路径,这个自不必说了,当心目标路径的权限apache要能写。
最后保存并返回了。
有了,不过后面的还要点进去看,直接点名字。
看到红色的么,复制一下。
然后用mail发邮件
进入控制台
# /usr/bin/php /var/www/html/log/src/cron/cmdreportgen.php runreport syslogsummary 1
OK,html文件生成。接下来,准备发邮件。
首先,把sendmail服务打开。
# service sendmail start
# echo "内容" | mail -v -s "标题" -r 发件邮箱 -a "/tmp/report.html" 收件邮箱
这里建议还是加 -v,因为之前试过不加的话,可能会在队列里排很久。
尽量用 -r 参数,因为不加发件邮箱,很可能被当成垃圾邮件。收件邮箱的白名单最好做一下设置,毕竟内容一般不是很多,很容易被当成垃圾处理。
最后打开结果如下:
PS,不要把report.html的内容直接发到邮箱。
生成文件然后发送到邮箱,一般是用于每天定时发送报告。这个和crontab一起使用。
# crontab -e
0 8 * * * /usr/bin/php /var/www/html/log/src/cron/cmdreportgen.php runreport syslogsummary 1 && echo "内容" | mail -v -s "loganalyzer 每日rsyslog总结 " -r 发件邮箱 -a "/tmp/report.html" 收件邮箱
# service crond restart
这样每天上班的时候就能看到前一天的报表了
报表不发邮件:
其实就是输出目标变成直接输出。
然后效果是:
可以直接从报表查看。
看到绿色的箭头了么。
如果是输出到文件,点完之后是这样的:
而如果是直接输出是这样的:
SO.就直接输出了。
这两种方式区别在于:
输出到文件,可以转发到邮件,也可以发到另外的文件夹进行收集,不过这个除了管理员,其它用户没有直接查看的权力。
输出到文件,则只读用户也可以查看报表内容。
(其实两者按html输入的话,结果是一样的。输出到文件并发邮件那个其实是我截图有问题。)
最后说明一下,这里是为了实验,所以只输出默认的100条,按个人建议越大越好,不过还是按实际要求来比较好。设置在:
Max hosts 显示多少个主机信息
Max Syslogmessages per host 每个主机信息最大的数量
Counter Threshold 阀值,如果一个事件反复出现,而且最后合计值大于这个值。那会被标为红色。如:
五、图表
Loganalyzer的图表比较简单,好像都是单数据。额。好像一般图表也只是单数据。
管理中心
然后添加图表
这里主要是三个属性。
名称,不要重复
图表类型,主要有三种,垂直,饼状,水平。
图表字段,这个是核心,自己选择自己要监控的字段。
六、字段,映射,视图
这个是本篇的最后一节,本来我也不想搞三合一的,但这三个关联性比较强,放在一起分析比较容易理解。
Loganalyzer的默认的视图 Syslog Fields 没有来源IP。So,添加。
首先,修改数据库结构。
mysql> use Syslog;
mysql> ALTER TABLE SystemEvents ADD FromIP VARCHAR(60) DEFAULT NULL AFTER FromHost;
其实这个如果用phpmyadmin更加方便一点
安装phpmyadmin可能要用到php-mbstring,SO.安装就好了
# rpm -ivh php-mbstring-5.3.3-3.el6_2.8.i686.rpm
#service httpd restart //phpmyadmin就可以访问了
第二,编辑/etc/rsyslog.conf
# vim /etc/rsyslog.conf
在” *.* :ommysql:localhost,Syslog,rsyslog,123456 ” 行之上添加
添加
$template insertpl,"insert into SystemEvents (Message, Facility, FromHost, FromIP, Priority, DeviceReportedTime, ReceivedAt, InfoUnitID, SysLogTag) values ('%msg%', %syslogfacility%, '%HOSTNAME%', '%fromhost-ip%', %syslogpriority%, '%timereported:::date-mysql%', '%timegenerated:::date-mysql%', %iut%, '%syslogtag%')",SQL
把” *.* :ommysql:localhost,Syslog,rsyslog,123456 ”修改为:
*.* :ommysql:localhost,Syslog,rsyslog,123456;insertpl
然后重启服务
#service rsyslog restart
OK.场外的工作已经结束了。下面准备loganalyzer
第三Loganalyzer设置
字段添加:
这里其实并没有完全吃透,不过大概分析一下:
字段ID,这个是指数据库表SystemEvents的字段
显示名称,这个是loganalyzer显示的名称
内部字段ID,这个是loganalyzer做内部数据连接用的,不过名字只要不与其它重复可以随便起,为了与显示名相对应默认的内部字段都是”SYSLOG_”+显示名称
搜索过滤器,这个怎么说,还记得刚刚报表在添加完 过滤编辑器(筛选条件)之后后面出面的具体条件么。如:
红框里是过滤的字段,绿框中就是具体条件。这个搜索过滤器,决定的就是后面这个绿框里出现的到底是什么。不过很可惜没有找到loganalyzer中有关于搜索过滤器的信息。不建议使用其它字段的搜索过滤器,因为做报表添加字段的时候会自动识别到之前那个字段上去。建议直接填“显示名字”——因为有几个字段就是如此,而且会自动识别出来的过滤器好像和HOST字段很像,对于IP来说,字符型的字段已经够用了。
SO.我还会继续查找,哪有如果有发现,请告知一声。
添加新视图
把新字段加入视图中,不过原始的三个视图默认不能修改,所以照着 Syslog Fields 做一个,把新字段加进去就可以了。
添加新的映射关系
映射关系是视图的灵魂所在——说简单点,映射关系就将视图字段所对应数据库字段的值取过来填充视图二维表。既然视图都重做了,那依样重做一个新的映射关系。
最后做完,大概就是这个样子。不过要说明一下:
映射名,别忘记写
红框里都是loganalyzer的字段,橙框里都是数据库表SystemEvents的字段,这里大小写不强求。
添加的方法:
在黄框内选择loganalyzer字段,然后写入要映射的数据库表字段就可以了。除了新字段IP映射为fromip之外,其它的基本照抄MonitorWare 。
有个小问题,添加uID映射为id的时候,好像会出错,建议单独先行添加,免得加了一大堆最后一个错误前功尽弃。
最后配置新的数据源,使得映射关系可以从数据库里提取数据,以便应用于新的视图。
先定名字,Syslog IP
数据源,还是选MYSQL
视图,选刚刚新建的 Syslog Fields New
下面的表类型,其实是映射关系,选择刚刚新建的 New Syslog
余下其它的就和刚刚安装时的配置一样了。具体可以参考数据源 My Syslog Source
点击数据源上的显示事件
右上角数据源选择:Syslog IP,视图会自动转换成: Syslog Fields New
最后结果,IP已经出来了:
对比一下Syslog Fields视图