发明内容
为了达到上述目的,本发明提供了一种对广告投放引擎进行监控的系统,该系统包括:后台管理模块,用于监控系统中与监控相关的数据项的配置、管理;监控数据采集模块,提供监控数据的采集和相关的管理功能,供监控数据分析模块使用;监控数据分析模块,对采集到的数据进行分析,如果分析发现异常情况,则记录到数据库中;报警模块,将数据库中记录的异常情况以邮件或短信方式发送给相关人员;对外接口,在投放引擎主动发布方式中,被调用以将报警信息写入数据库的报警信息表中。
进一步,根据本发明的监控系统所监控的投放引擎包括以下模块:对外接口,提供相关监控数据的查询功能,供监控系统中的监控数据采集模块调用;监控信息发布模块,提供主动发布监控信息的功能,它通过调用监控系统中的对外接口来实现。
进一步,本发明中的投放引擎按功能分布在各个服务器上,包括:广告数据库服务器、后台缓存与管理服务器、前端投放服务器、计数服务器、日志汇总服务器、日志数据库服务器,对所述各个服务器进行监控的数据项包括以下所述中的一项或多项:日志文件的大小、剩余硬盘空间、每小时容量偏差比率、每小时投放量偏差比率、CPU占用率、广告投放引擎是否启动、相关服务是否启动。
进一步,本发明所述后台管理模块用于对监控的各个服务器进行添加、删除、查询、类型设置以及维护所要监控的数据项和数据项是否处于正常状态的一系列量化标准,当监控数据分析模块对采集的数据与量化标准相比较后判断不满足该量化标准,则判断为异常。
进一步,本发明所述报警模块包含:发送报警信息子模块,定时从数据库中取出状态为“未发送”的报警信息,以邮件或短信方式发送给相关管理人员,然后将该信息标识为“已发送”状态;报警信息管理子模块,提供对报警信息表中的历史报警信息的查询功能,管理人员可以按照异常信息的标题、异常信息的产生时间作为查询条件来查询报警信息,对于已经过期的历史报警信息,提供删除功能。
此外,本发明还提供一种对广告投放引擎进行监控的方法,其包括如下步骤:步骤(1)监控系统启动后,监控数据采集模块会从监控系统数据库中读取系统配置信息,包括投放引擎的服务器IP、需要监控的数据项;步骤(2)监控数据采集模块根据从数据库中获取的配置信息定时调用投放引擎服务器中的对外接口,取得监控数据;步骤(3)监控数据采集模块将采集到的数据存入监控系统数据库中;步骤(4)监控数据分析模块定时从数据库中的监控数据表中获取监控数据,并对这些数据进行分析,发现异常情况后,自动生成报警信息,其中报警信息的状态被初始化为“未发送”;步骤(5)监控数据分析模块将上一步骤中生成的报警信息存入数据库的报警信息表中;步骤(6)报警模块定时从报警信息表中获取状态为“未发送”的报警信息;步骤(7)报警模块将上述信息发送给相关人员,然后将报警信息表中对应的报警信息状态置为“已发送”。
进一步,本发明方法还包括:步骤(a)投放引擎在运行过程中出现异常时,其监控信息发布模块主动调用监控系统中提供的对外接口来发布异常信息;步骤(b)监控系统的对外接口直接将报警信息存入数据库的报警信息表中。
进一步,在本发明方法中,投放引擎按功能分布在各个服务器上,包括:广告数据库服务器、后台缓存与管理服务器、前端投放服务器、计数服务器、日志汇总服务器、日志数据库服务器,对所述各个服务器进行监控的数据项包括以下所述中的一项或多项:日志文件的大小、剩余硬盘空间、每小时容量偏差比率、每小时投放量偏差比率、CPU占用率、广告投放引擎是否启动、相关服务是否启动。
进一步,在本发明方法中,当监控数据分析模块对采集的数据与后台管理模块提供的量化标准相比较后判断不满足该量化标准,则判断为异常。
本发明具有以下优点:相对于通用监控系统,它不仅能够对服务器的CPU占用率、硬盘剩余空间等进行监控和报警,还能够对系统中的业务数据流进行监控和报警;当接收到报警信息后,管理员只需要登录监控系统即可查看各台服务器上的相关状态和业务数据,可以非常方便地定位系统异常情况,而不需要来回登录多台服务器去诊断和调试系统;投放引擎运行过程中出现异常时,能够主动发送报警信息,这样管理人员就能够在更短的时间内发现和解决问题。
具体实施方式
为使本发明的上述目的、特征和优点更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明:
图1是描述根据本发明的监控系统与投放引擎服务器之间连接关系的示意图;广告监控系统是整个广告系统中的一个子系统,监控系统所要监控的是广告系统的另外一个子系统--广告投放引擎。投放引擎部署在一系列服务器上,每台服务器负责一些特定的任务,如下文中的表1所示,投放引擎服务器包括的类型有:广告数据库服务器、后台缓存与管理服务器、前端投放服务器、计数服务器、日志汇总服务器、日志数据库服务器。投放引擎运行时,数据会按照一定的流程流经各台服务器,监控系统会按照相关规则定时从这些服务器上采集监控信息,当监控系统发现投放引擎异常时,会向相关管理人员发送报警信息,以便管理人员及时进行处理。如图1所示,监控系统位于一台独立的监控中心服务器上,而部署了广告投放引擎的每台服务器都会独立与监控中心服务器进行交互。
监控系统的系统架构如图2所示,它由5个模块组成,各模块的主要功能如下:
(1)后台管理模块:负责监控系统中与监控相关的数据项的配置、管理;
(2)监控数据采集模块:提供所监控数据项数据的采集和相关的管理功能,供监控数据分析模块使用;
(3)监控数据分析模块:对采集到的数据进行分析,如果分析发现异常情况,则记录到数据库中;
(4)报警模块:将数据库中记录的异常情况以邮件或短信等方式发送给相关人员;
(5)对外接口:系统运行时出现异常后,常见做法是在捕获异常的代码块中打印错误日志,等到相关人员发现系统异常后,登陆到服务器查看错误日志,定位异常出现的原因。投放引擎在运行过程中可能出现各种异常现象,而这些异常现象经常是在系统运行了较长一段时间后才被发现,为了更及时地发现异常,在监控系统中设置对外接口,在投放引擎主动发布方式中,该对外接口被调用以通过其汇报异常信息,对外接口直接将报警信息存入数据库的报警信息表中。
另一方面,为了实现对投放引擎的监控,需要投放引擎提供如下功能模块:
(1)对外接口:提供相关监控数据的查询功能,供监控系统中的监控数据采集模块调用;
(2)监控信息发布模块:提供主动发布监控信息的功能,它通过调用监控系统中的对外接口来实现。
由图2可知,监控信息可通过2种方式来获取:
(1)监控系统主动采集方式:监控系统通过周期性地调用投放引擎服务器上的对外接口来收集投放引擎服务器上的监控数据,并由监控系统中的监控数据分析模块对这些数据进行分析并生成报警数据,然后发送给相关人员;
(2)投放引擎主动发布方式:投放引擎在运行过程中如果出现异常,就主动调用监控系统中的对外接口来汇报这些异常信息。
图3展示了监控系统主动采集方式的工作流程:
步骤1监控系统启动后,监控数据采集模块会从监控系统数据库中读取系统配置信息,如投放引擎的服务器IP、每台服务器的角色、需要监控的数据项(即数据内容)等;
步骤2监控数据采集模块根据从数据库中获取的配置信息定时调用投放引擎所在各台服务器上相应的对外接口,取得监控数据;
步骤3监控数据采集模块将采集到的数据存入监控系统数据库中;
步骤4监控数据分析模块定时从数据库中的监控数据表中获取监控数据,并对这些数据进行分析,发现异常情况后,自动生成报警信息,其中报警信息的状态被初始化为“未发送”;
步骤5监控数据分析模块将上一步骤中生成的报警信息存入数据库的报警信息表中;
步骤6报警模块定时从报警信息表中获取状态为“未发送”的报警信息;
步骤7报警模块将上述信息发送给相关人员,然后将报警信息表中对应的报警信息状态置为“已发送”。
图4为描述根据本发明的投放引擎主动发布方式的示意图:
步骤1投放引擎在运行过程中出现异常时,其监控信息发布模块主动调用监控系统中提供的对外接口来发布异常信息;
步骤2监控系统的对外接口直接将报警信息存入数据库的报警信息表中;
步骤3报警模块定时从报警信息表中获取状态为“未发送”的报警信息;
步骤4报警模块将上述信息发送给相关人员,然后将报警信息表中对应的报警信息状态置为“已发送”。
如图5所示,描述了根据本发明的对广告投放引擎进行监控的方法的流程图,更详细的描述了监控系统主动采集方式和投放引擎主动发布方式的整个流程。
监控系统的后台管理模块需要实现的管理包括:
(1)监控对象管理。监控对象即广告投放引擎所分布的所有服务器,具体的操作包括:监控对象的添加、删除、查询、类型设置等。按功能,可以将监控对象分为表1中的几种类型。在广告系统中,每种监控对象类型对应有1到多个监控对象。
1 |
广告数据库服务器 |
2 |
后台缓存与管理服务器 |
3 |
前端投放服务器 |
4 |
计数服务器 |
5 |
日志汇总服务器 |
6 |
日志数据库服务器 |
表1根据功能划分的投放引擎服务器的类型
(2)监控标准管理。监控标准就是判断投放引擎是否处于正常状态的一系列量化标准。下表为监控标准的结构示例,其中的第一条表示:监控系统每隔5分钟检查一次日志服务器的剩余硬盘空间,当剩余硬盘空间低于20GB但超过10GB时,监控系统就会发送一条类型为“Warn”(告警)的报警信息,表明系统可能出现异常,但不是特别严重;当低于10GB时,监控系统就会发送一条级别为“Exception”(异常)的报警信息,表明系统出现比较严重的异常,需要管理人员立即处理。采用“Warn”和“Exception”两种级别的报警方式,是为了给管理人员提供分级预警机制。
表2监控标准
(3)监控对象类型与监控标准的关联关系管理。不同类型的监控对象需要监控的内容也不应完全相同,比如:对负责前端广告投放的服务器,需要监控它们的缓存中的广告数据;对日志数据库服务器,由于没有缓存数据可以监控,需要对日志文件的大小和剩余硬盘空间进行监控。对日志汇总服务器需要监控其每小时容量偏差比率和每小时投放量偏差比率;对广告数据库服务器需要监控硬盘剩余空间。此外,对各个服务器还可监控CPU占用率、广告投放引擎是否启动、相关服务是否启动。由此可知,一个监控标准对应于一种或多种类型的监控对象,一种监控对象也同样会对应有多个监控标准,两者是多对多的关系,它们之间的对应关系需要在后台管理模块中进行管理。
(4)监控数据查询。系统管理人员收到报警信息后,可以登陆到监控系统查看详细的监控数据,以便于定位和解决问题。
投放引擎的业务数据主要存在于内存或数据库中,监控系统无法直接取得,因此投放引擎所在服务器提供了一系列对外的访问接口,以便于监控系统能够采集投放引擎内存中的业务数据,接口以Servlet或WebService等方式来提供。投放引擎中的对外接口(Java风格)具体包括以下提供不同业务数据的接口:
(1)public String getFreeDi skSpace()
功能:获取剩余磁盘空间;
返回值:XML格式的字符串。
(2)public String getCpuUsedPercent()
功能:获取CPU占用率;
返回值:XML格式的字符串。
(3)public String getCapacityDeviation(int curHour)
功能:查询指定小时的广告容量与最近一段时期内相同小时的平均容量偏差比例;
参数curHour:查询的小时;
返回值:XML格式的字符串。
(4)public String getDeliveryDeviation(int curHour)
功能:查询指定小时的广告投放量与最近一段时期内相同小时的平均投放量偏差比例;
参数curHour:查询的小时;
返回值:XML格式的字符串。
(5)public String getLogFileDeviation(int curHour)
功能:查询日志文件大小变化比例;
参数curHour:查询的小时;
返回值:XML格式的字符串。
(6)public String isServiceStarted(String serviceName)
功能:查询指定服务器是否已经启动某个服务;
参数serviceName:指定的服务名称;
返回值:XML格式的字符串。
(7)public String getFai luredTask()
功能:查询未执行成功的定时任务信息;
返回值:XML格式的字符串。
(8)public String isApiOk(String apiName)
功能:测试API是否能够正常调用;
参数apiName:API名称;
返回值:XML格式的字符串。
(9)public String getMemcacheData(String key)
功能:查询Memcache缓存中的数据;
参数:缓存数据的key;
返回值:XML格式的字符串。
软件系统运行过程中出现异常后,通常的做法是在捕获异常的代码块中打印错误日志信息,等到相关人员发现系统运行不正常后,登陆到服务器,查看错误日志,定位异常出现的原因。为了及时地发现异常,以便更快地解决问题,在监控系统中也提供了一个对外接口和报警模块,在投放引擎主动发布方式中,该对外接口被调用,对外接口即将报警信息写入报警信息表,该报警信息表包括:参数ip:发生异常的服务器IP;参数alertType:报警级别,分Warn和Exception两种;参数info:异常信息描述。如果发布成功,返回true,发布失败,则返回false。这样监控系统就能及时发现异常并定位异常出现原因。报警模块主要包含两个子模块:发送报警信息子模块:定时从数据库中取出状态为“未发送”的报警信息,以邮件或短信等方式发送给相关管理人员,然后将该信息标识为“已发送”状态。报警信息管理子模块:提供对报警信息表中的历史报警信息的查询功能,管理人员可以按照异常信息的标题、异常信息的产生时间等作为查询条件来查询报警信息;对于已经过期的历史信息,提供删除功能。
以上是对本发明的优选实施例进行的详细描述,但本领域的普通技术人员应该意识到,在本发明的范围内和精神指导下,各种改进、添加和替换都是可能的。这些都在本发明的权利要求所限定的保护范围内。