当前位置:首页 > 工业控制 > 《机电信息》
[导读]随着网络技术的快速发展,采用B/S架构应用成为企业信息化主流。但网络应用也存在服务无法访问、异常等问题,造成用户体验不佳等。现在应用缺少监测手段,故障发现周期长,进而解决缓慢,甚至有些情况下会导致业务受影响中断,但无告警产生,直到用户投诉大量产生时,系统故障才被发现。

引言

随着网络技术的快速发展,采用B/S架构应用成为企业信息化主流。但网络应用也存在服务无法访问、异常等问题,造成用户体验不佳等。现在应用缺少监测手段,故障发现周期长,进而解决缓慢,甚至有些情况下会导致业务受影响中断,但无告警产生,直到用户投诉大量产生时,系统故障才被发现。

因此,监控保障应用稳定性变得尤为重要。拨测系统扮演着关键角色,相比于传统人工接收故障工单反馈,它能在提升应用稳定性方面发挥重要作用,通过对网络应用的实时测量,帮助用户快速识别问题,快速响应处理并解决问题,缩短故障的持续时间,减小影响范围。

1拨测系统原理

与被动模式相反,拨测系统[1]采用主动模式,它通过内部触发接口调用判断和监控应用的正确性来监控保障应用的稳定性。业务应用程序对外暴露接口,拨测系统通过模拟客户端或者web浏览器向应用程序发送请求,应用程序接收请求后对接收到的数据做处理,同时向拨测系统返回请求应答,然后拨测系统解析响应体是否符合预期,判断应用程序是否正常,是否对外正常提供服务,可以帮助确保应用程序的质量和可靠性。

通常判断响应体是否符合预期有以下两种方式:

1)判断响应状态码[2]:应用程序默认请求成功会返回状态码200;假如请求错误返回400、404、500等状态码,则意味着web应用出错。

2)判断响应数据:通过相等、包含、正则表达式等手段检查数据特性是否正确与完整,从而判断应用程序的正确性。

2接口测试工具对比

拨测系统底层采用接口测试方式实现。市面上有很多测试工具可供选择,下面就常见的三种方式进行介绍:

1)编程方式:使用开源社区封装的Http客户端工具包,通过编写程序方式调用接口,接收响应,判断检测结果。此方式灵活性、定制化程度高,但耦合性也同样高,后续修改可能大,不利于扩展。

2)P0stman工具[3]:它是一款轻量级接口测试工具,主要测试RESTful[4]接口,其特点包括简单易用、界面简洁、快速上手;专注于Http请求,功能相对简单,响应断言支持不够。它适合作为一个独立工具,在开发、自测阶段供程序员使用。

3)JMeter工具[5]:它是Apache基金会开发的一款功能全面的性能测试工具,既支持性能测试,也支持接口测试。纯Java跨平台工具,支持winD0ws、Linux多平台;功能强大,支持编程式的前置后置处理,灵活度高;可作为独立工具使用,也提供开发库方便程序使用。

通过上述接口测试工具的对比可知,JMeter工具既可作为独立工具做接口测试和排错,又可被程序调用使用,功能强大,扩展能力强,自研系统将基于JMeter脚本设计拨测系统。

3自研拨测系统

3.1创建JMeter脚本步骤

自研拨测系统以JMeter脚本为核心,围绕Jmx脚本上传、执行、结果解析、告警构建业务系统,因此在详细介绍系统设计之前,有必要就如何创建JMeter脚本做简要介绍。按照下述步骤创建Jmx脚本:

1)启动JMeter应用:进入JMeter—Home下的bin目录,双击jmeter.bat文件启动程序界面;

2)创建测试计划:打开JMeter后,首先创建测试计划,选中“测试计划”,右键选择添加“线程组”,在线程组界面根据需要设置线程数、启动时间、循环次数等参数;

3)添加采样器:在线程组处右键,选择添加“HTTP Request”采样器,在HTTP采样器界面上填写服务器IP、端口、路径、请求方式、参数等信息;

4)添加配置元素:根据需要,可以在线程组和采样器上添加配置元素,比如添加Http cookie管理器、Http请求头管理器、默认配置等内容;

5)添加预处理和后处理器:在线程组和采样器上增加处理器,用于对采样器发送请求前的拦截处理、响应后的数据处理;

6)添加断言:在采样器上添加断言,用于验证服务器响应是否符合预期;

7)添加监听器:在线程组上添加各类监听器,对线程组下所有采样器的执行数据进行收集、分析和展示。

通过上述步骤,完成对第三方接口的测试配置,点击“运行”按钮测试接口正确性,这样就完成了一个JMeter脚本的编写,最后点击“保存”按钮会生成一个Jmx脚本文件,自研拨测系统利用Jmx文件实现应用的拨测功能。

3.2架构设计

自研拨测系统采用程序加JMeter脚本方式设计实现。图1展示了整个系统的设计图,整个系统分为三个部分:

第一部分生成Jmx文件,利用前面小节的JMeter创建步骤,编写、调试并生成Jmx脚本,保证Jmx正确实现对第三方应用程序的接口调用。

第二部分是自研拨测系统,它由多个模块组成,模块相互配合,完成Jmx脚本的保存/执行、结果的解析、异常告警的触发。

第三部分为第三方应用服务,它们对外开放暴露接口,方便拨测系统检测服务状态。

3.3模块设计

依据拨测系统架构设计,拨测系统共分为6个模块,分别为upload配置模块、调度器模块、JMeter引擎模块、日志模块、告警模块、查询模块。

3.3.1 upload配置模块

该模块提供JMeter脚本文件的配置维护功能,负责将JMeter脚本文件从本地上传到业务服务器上。在用户界面上使用“文件上传”组件,同时录入脚本文件的相关信息,例如:脚本描述、告警接收人、告警接收人邮箱、抄送人邮箱、脚本的时间调度表达式。该模块除持久化脚本文件数据外,还会根据调度表达式调用调度器模块。

3.3.2调度器模块

调度器模块采用任务方式管理维护,用户使用上传配置模块完成脚本文件上传后,调度器模块会新建一个周期任务。周期任务可以按秒、分钟、小时、天、周、月等时间周期执行。服务端的调度框架有很多,这里采用spring的Taskschedule[6]实现,它是一个轻量级的任务调度器,允许开发者轻松地安排和管理周期性任务,如定时统计数据、定时清理缓存等。它是spring自带的调度框架,开发者无须引入额外的第三方类库,无须安装额外的第三方服务,集成方便;无须编写复杂的代码,易于使用;支持多种任务执行策略,灵活度高。当任务触发时间到达后,调度器模块会调用JMeter引擎模块。

3.3.3 JMeter引擎模块

JMeter引擎模块用来调用JMeter脚本文件,生成测试报告。制作脚本文件使用JMeter图形化界面方式,而这里利用JMeter程序开发库实现。在自研拨测系统里引入开发库,导入并使用已定义的类和方法完成脚本文件的执行。

3.3.4日志模块

JMeter脚本的运行结果是Html报告文件,日志模块会将Html报告整体打包压缩,保存在对象服务器Minio中;同时解析报告文件夹中的JSON数据,判断本次拨测结果。如果运行成功,仅仅将日志记录持久化到数据库,后续为查询模块提供数据。如果运行失败,通知告警模块进行处理,并将日志记录持久化到数据库中。

3.3.5告警模块

该模块用于发送通知,当JMeter脚本运行失败时,根据上传脚本时预先设置的发送人邮箱、抄送人邮箱,给责任人发送邮件告警,同时邮箱附件包括Html报告。最后将日志记录状态从未处理更新为已处理。

3.3.6查询模块

该模块提供灵活的查询条件,方便用户根据需要筛选和查询日志。例如根据日志状态查询历史日志数据,便于对问题进行回溯和分析。同时,将调度器模块的能力暴露给用户,用户可以查询调度任务,查看正在运行的调度任务并针对任务进行手动启动、停止、删除操作。

3.4数据库设计

根据拨测系统的模块设计,提取业务概念名词抽象出数据库实体表,upload配置模块对应script表,调度器模块对应task表,日志模块对应log-record表,告警模块对应alarm-record表。系统里一个JMeter脚本上传配置完成后,script表新增一条脚本记录,task表也新增一条对应任务记录,log-record和alarm-record表随着脚本被定时调度以及告警触发与清除在对应表里新增若干记录。

下面详细介绍四张表拥有的字段含义:

1)script表记录脚本信息,包含脚本名称、脚本描述、脚本文件所在地址、触发时间cron表达式、脚本告警接收人邮箱、告警抄送人邮箱列表信息。

2)task表记录任务信息,task-id是任务主键,script-id是外键,指向script表,task和script一对一关系,每当新增一条script记录,就会同步新增一条task任务,同时在程序内存里的调度器模块会新增一个任务对象,用于等待触发任务执行。

3)log-record表记录脚本运行日志数据。script-id是外键,指向script表。task每运行一次,log-record就新增一条记录。status字段表示本次运行结果成功还是失败;report-url字段表示本次运行产生的报告文件地址;process-flag字段针对失败状态时有效,标记是否已经处理发送告警。

4)alarm-record表存储发送告警的数据记录。log-record-id是外键,指向log-record表,表示当前告警来源于哪一个日志记录。script-id字段是外键,冗余字段,方便快速找到告警对应的脚本信息数据。alarm-type字段是告警类型,可选值有上报告警和清除告警两种。valid字段表示当前告警有效性,用于实现发送清除告警功能。

4自研拨测系统的优点

自研的拨测系统采用程序和JMeter脚本方式,具有很多优点。

1)程序和脚本耦合低:意味着它们之间的依赖较少,互相影响较小。这样的设计有助于降低系统复杂性,提高代码的可维护性和可读性。通过模块化封装,可以将程序和脚本分离,使得职责和功能更为清晰。

2)扩展容易:程序和脚本分离的设计使得系统具有较好的可扩展性。当需要新增功能和修改现有功能时,可以在不影响其他部分的前提下独立对脚本进行调整。

3)调试方便灵活:程序和脚本耦合低、职责分明的情况下,排查和调试问题变得更加容易。当出现问题时,可以快速定位故障边缘和故障源,并通过脚本进行调试验证。

4)支持丰富:依托JMeter的接口类型多样性能力,还可以支持数据库、Dubbo等形式的接口测试,提供多样的拨测能力,但程序调用方式固定不变。

总之,程序和脚本方式耦合度低、职责分明、扩展容易、调试方便灵活,有助于提高软件的质量、可靠性和可维护性,同时降低了开发和运维的难度。

5结束语

本文介绍了拨测系统的重要性、应用价值、基本工作原理以及各种接口测试工具的差异,然后展示了JMeter脚本的创建步骤,接着详细说明了自研拨测系统的设计与实施过程,最后对自主研发的拨测系统架构的优点进行了阐述。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

9月2日消息,不造车的华为或将催生出更大的独角兽公司,随着阿维塔和赛力斯的入局,华为引望愈发显得引人瞩目。

关键字: 阿维塔 塞力斯 华为

加利福尼亚州圣克拉拉县2024年8月30日 /美通社/ -- 数字化转型技术解决方案公司Trianz今天宣布,该公司与Amazon Web Services (AWS)签订了...

关键字: AWS AN BSP 数字化

伦敦2024年8月29日 /美通社/ -- 英国汽车技术公司SODA.Auto推出其旗舰产品SODA V,这是全球首款涵盖汽车工程师从创意到认证的所有需求的工具,可用于创建软件定义汽车。 SODA V工具的开发耗时1.5...

关键字: 汽车 人工智能 智能驱动 BSP

北京2024年8月28日 /美通社/ -- 越来越多用户希望企业业务能7×24不间断运行,同时企业却面临越来越多业务中断的风险,如企业系统复杂性的增加,频繁的功能更新和发布等。如何确保业务连续性,提升韧性,成...

关键字: 亚马逊 解密 控制平面 BSP

8月30日消息,据媒体报道,腾讯和网易近期正在缩减他们对日本游戏市场的投资。

关键字: 腾讯 编码器 CPU

8月28日消息,今天上午,2024中国国际大数据产业博览会开幕式在贵阳举行,华为董事、质量流程IT总裁陶景文发表了演讲。

关键字: 华为 12nm EDA 半导体

8月28日消息,在2024中国国际大数据产业博览会上,华为常务董事、华为云CEO张平安发表演讲称,数字世界的话语权最终是由生态的繁荣决定的。

关键字: 华为 12nm 手机 卫星通信

要点: 有效应对环境变化,经营业绩稳中有升 落实提质增效举措,毛利润率延续升势 战略布局成效显著,战新业务引领增长 以科技创新为引领,提升企业核心竞争力 坚持高质量发展策略,塑强核心竞争优势...

关键字: 通信 BSP 电信运营商 数字经济

北京2024年8月27日 /美通社/ -- 8月21日,由中央广播电视总台与中国电影电视技术学会联合牵头组建的NVI技术创新联盟在BIRTV2024超高清全产业链发展研讨会上宣布正式成立。 活动现场 NVI技术创新联...

关键字: VI 传输协议 音频 BSP

北京2024年8月27日 /美通社/ -- 在8月23日举办的2024年长三角生态绿色一体化发展示范区联合招商会上,软通动力信息技术(集团)股份有限公司(以下简称"软通动力")与长三角投资(上海)有限...

关键字: BSP 信息技术
关闭