监控平台(J2EE)声音告警程序功能设计与实现
平台简单介绍:
是一个监控平台,做一些定时任务监控、主机批处理运行监控、主机实时交易信息监控以及主机监控等等。后台抽数部分是用C实现的,前端展示、分析、报警等用J2EE实现。而我正是负责J2EE这一块的设计和实现。
这里简单记录了当时所做声音报警功能设计和实现以及如何分析等等。
这里使用定时任务的监控来分析:
1. 声音报警程序功能要求
说明:监控表(watch_task,也就是定时任务结果表),当有定时任务执行失败时,前端页面给出声音报警提示。当然后台也直接发短信到相应的处理人员手机中。
2. 后台扫描监控表可选实现方案
(1) 使用socket与主机通讯。当有失败记录进入watch_task表时,服务主机发给程序服务器一个信息,收到信息后作出简单的处理以及声音报警。
(2) 使用线程实时扫描watch_task表,当又失败记录进入时,前端页面做相应处理且给出声音警告。
(3) 使用struts2拦截器定时扫描表,当又失败记录进入时,前端页面做相应处理且给出声音警告。说明:需要通过页面自动刷新(激活action)时,才扫描。需要注意的是,本来系统session控制也是通过struts2拦截器实现的,拦截时得有个先后顺序。
(4) 使用ServletContextListener结合TimerTask定时扫描表,前端页面做相应处理且给出声音警告。
最后选择:根据个人因素以及能力侧重点考虑,使用第4个方案。在web.xml配置该监听器,应用服务器启动时开始监听,一分钟扫描一次监控表。
3. 实现机制
我的实现有些老土,让各位道友笑话了。是这样的:
设计一张对照表warn_compare,表结构如下:
字段 |
数据类型 |
注释 |
意义 |
Data_type |
Char(1) |
数据类型 |
主键,0-定时任务监控 1-批处理运行监控…… |
Count0 |
Integer |
计数 |
用于记录到上一次扫描为止时,所有的失败且未处理记录数 |
TimerTask定时扫描:这里的作用只是1分钟扫描一次watch_task表以及更新warn_compare表。即:当扫描到在监控表中有新的失败记录时,更新warn_compare表对应的count0字段的值。前端声音报警页面(页面设计后面详细写出)所在的frame通过每隔1分钟自动刷新一次。warnFrame在页面写法:
<framenoresize="noresize" target="contents"id="warnFrame" name="warnFrame" src="<%=path%>/warnSoundAction!conpareWarnCount.action"scrolling="no"/>。每刷新一次,后台对比一次的监控表失败且未处理总数和对照表相应值,当前者大于后者时,说明有新的失败记录进入监控表,这时警告页面就发出警告声音。
这里看不是很明白的道友可以先看后面的前端设计部分,再回头看就能看明白。
4. 前端声音告警程序设计
(1) 需要考虑的问题:
l 如何在页面加入声音播放。
l 当监控表有新的失败记录进来时,如何自动播放声音告警。
l 某个时刻,需要告警时,在线监控业务员都收到告警。当有还没有处理的任务时,用户登录后给出告警。
l 不管用户当前所在哪个页面,当有需要告警时,都会播放告警声音。
(2) 播放声音方案选择
l jsp页面嵌入声音,使用<bgsound>播放背景音乐,貌似做不到我们的要求;
l 使用Awt/Swing播放声音?若是服务器报警可以,当时客户端报警似乎不现实。
l 使用applet播放声音告警,applet依赖于客户端来展示效果。可内嵌于html、jsp等等。--可做优先考虑
l 另外在api中可发现javax目录下也提供了一个sound包对java声音的强大支持,并且在sun网站的jjse上可下载到相关的大量例子程序.有志于声音处理方向的朋友可下载试试。
l 最后我的选择是3.值得说明的是,java好像只支持.au声音文件。想测试的朋友可做个测试。当然我项目比较急,没有测过。这里我直接使用.au格式文件。
(3) 页面设计
首先平台主页面框架是用frameset实现的:
<frameset rows="120,*,1"framespacing="0"border="0"frameborder="0">
<framenoresize="noresize"target="contents"id="menuFrame"name="menuFrame"src="newmenu.jsp"scrolling="no"/>
<frame noresize="noresize"id="mainFrame"name="mainFrame"src="<%=path %>/waitDealAction!getData.action"scrolling="yes" />
<frame noresize="noresize"target="contents"id="warnFrame"name="warnFrame"src="<%=path %>/warnSoundAction!conpareWarnCount.action"scrolling="no"/>
</frameset>
说明:估计有些道友应该都可以看出来了。
120--用户显示菜单导航以及个人登录信息等部分。
*--工作区。
1--包含的是声音报警页面/或空白页面。这个页面占的比例非常小,相当于是隐藏起来的。当对比出来有新失败记录进入监控表时,转到声音告警页面。反之则转到空白页面。这两个页面设计成每个30s刷新一次的父页面中的warnFrame部分。
声音页面部分写法:
<scripttype="text/javascript">
//调用父页面的sound方法。用于弹出告警对话框
window.top.sound();
//每隔1分钟刷新一次父页面的warnFrame,刷新间隔时间最好和TimerTask扫描时间一样,不宜太短,避免出现重复告警。
function preload(){
window.parent.frames.warnFrame.location.reload();
}
setTimeout('preload()',60000);
</script>
父页面(main.jsp)中function sound()写法:
<scripttype="text/javascript">
function sound(){
$.dialog({
id: 'msg',
title:'警告窗口',
content:'url:sound/SoundDemo.jsp',
width:200,
height:100,
left:'100%',
top:'100%',
fixed:true,
drag:false,
resize:false,
init: function() {
var that = this, i =20;
var fn = function() {
that.title(i + '秒后关闭');
!i && that.close();
i --;
};
timer = setInterval(fn, 1000);
fn();
},
close:function () {
clearInterval(timer);
}
});
}
</script>
注:这里我用到jquery弹出框插件lhgdialog。效果挺好看的,但是文件稍大,会影响系统反应。但是我这个页面负荷量很小不影响,如交易类系统不建议使用。
效果图:在页面右下角弹出提示20秒后自动关闭。
弹出的这个警告窗口包含的就是声音警告页面,该页面嵌入applet小应用程序。这里我设置applet的width和height都为0px。
到这里声音告警模块已经做得差不多了。剩下的还有要不要做个applet的数字证书签名等方便资源访问。
各位道友看完,或看了部分就看不下去。可吐、可喷、可扔砖头。但是我最希望有道友给更好的修炼建议。
监控平台(J2EE)声音告警程序功能设计与实现相关推荐
- 简单三步教会你在前端监控平台:安装小程序、uni-app探针(详细教程)
Webfunny现在支持微信小程序.uni-app的监控探针了,两个平台安装探针的方式很相似. 一.微信小程序探针安装 (1)首先创建一个微信小程序项目 (2)项目生成后,复制探针代码.在小程序项目的 ...
- 建设DevOps统一运维监控平台,全面的系统监控你做好了吗?
本文转自微信号EAWorld.扫描下方二维码,关注成功后,回复"普元方法+",将会获得热门课堂免费学习机会! 前言 随着Devops.云计算.微服务.容器等理念的逐步落地和大力发展 ...
- 案例 | 光大银行如何解决传统监控痛点,打造一体化监控平台?
"光大银行为了解决传统监控管理的痛点,从监控平台的建设和全站监控能力,大屏可视化展现和智能监控分析这四点出发,打造了新一代的一体化的统一监控管理平台."--马文杰, 中国光大银行总 ...
- TIGK监控平台介绍
1 概述 众所周知监控平台对大数据平台是非常重要的,监控是故障诊断和分析的重要辅助利器,在发生事故之前就能预警,最大限度降低系统故障率. 监控系统我们可以分为业务层面,应用层面,系统层面 1. ...
- 【解决方案】AI视频智能分析安防监控平台EasyCVR在汽车销售门店/4s店的实际应用
一.方案背景 前段时间某电动车企业不停爆出维权新闻,在针对用户的维权方面,人们很快分成了两大阵营,支持和反对的声音此起彼伏,事情一再发酵.反转,每天都有新消息,令人目不暇接.由于这种在车展.车店的维权 ...
- linux监控平台介绍、zabbix监控介绍、安装zabbix
linux监控平台介绍 常见开源监控软件 cacti.nagios.zabbix.smokeping.open-falcon 等等. nagios和zabbix流行度很高. cacti.smokepi ...
- System center 2012 R2 实战十、妙用SCO+SCOM实现声音告警
SCOM默认支持邮件告警,即时消息告警,短信告警,那么如果要实现声音告警,应该如何实现呢?大家可以好好思考一下,需求就是SCOM产生警报,同时触发声音告警+短信告警+邮件报警. 当时第一个想到的是Li ...
- nagios 监控平台搭建
nagios搭建配置 一.需要的软件包 1.nagios-3.2.3.tar.gz nagios主监控包 tar -zxvf nagios-3.2.3.tar.gz cd nagios-3.2.3 ...
- linux下构建Zabbix网络监控平台
linux下构建Zabbix网络监控平台 由于图片过多,本人不想一张一张上传,请下载我的详细文章: linux下构建zabbix网络监控平台[技术文档](河南-清小小)-下载地址: http://do ...
最新文章
- Oracle rac进阶管理专家指导系列文档
- CSP认证201509-1	数列分段[C++题解]:遍历
- 微信跳一跳python全部代码_微信跳一跳python代码
- Html点击按钮时 修改某个标签的 click点击事件
- Scala具体解释---------Scala是什么?可伸展的语言!
- vSAN其实很简单-兼容列表那些事
- Centos Linux 下Pycharm 安装
- 5.1声道定位测试音源(PCM-WAV)定位测试音源(PCM-WAV)
- 进销存软件网络版连接不上,如何设置IP地址
- 钓鱼网站制作Kali
- python设置excel单元格数据类型为文本_Python xlwt设置excel单元格字体及格式
- 【数据科学家学习小组】之统计学(第二期)第一周(20191028-20191103)-momi
- Nodejs+express 代码工程打包 PKG
- IOS 自定义软键盘功能,修改换行键为发送键
- https://jingyan.baidu.com/article/c45ad29cd06453051753e2e9.html
- Android Intent Service Usage
- MODBUS-RTU数据帧格式、报文实例
- IPv5是什么意思?到底有没有IPv5?
- Navicat连接mysql时提示error:1130 hostxxx is not allowed to connect to this SQL server
- 设计心理学读后的随想
热门文章
- 认识Java程序的框架
- python文件write原理,Python写入文件(write和writelines)详解
- ZooKeeper报错:Unable to access datadir, exiting abnormally windows版本
- 每天学一点设计模式-工厂方法模式
- Arduino(5) 使用Mega2560设计上下位机串口通信系统的下位机
- 如何比较两个速度的大小地程序_58安居客小程序平台化与多小程序开发探索与实践...
- 一份招聘公告暴露英特尔外包芯片计划
- Docker curriculum (2): 构建自己的镜像
- mysql原理(1) mysql底层数据结构
- Prometheus告警实践