应用运维系统的首要能力是在应用业务流程处理出现宕机、假死、错误或运行缓慢等异常状态时,先于用户发现,并及时通知相关责任人。其主要技术手段是采用软件程序主动模拟用户的操作过程,设置自动化巡检策略,定时主动拨测应用业务流程,采集相关指标。应用运维巡检拨测场景用到的工具和自动化测试工具一样,这类工具一般都支持这两个场景。常用的工具有Blackbox、Apache JMeter、Selenium、Postman等。
一、Blackbox
1、简介
Blackbox是在开源指标数据采集、存储平台Prometheus框架下使用的应用运行状态主动检测工具。其所有代码和功能都在Prometheus Exporter数据采集框架下开发实现,因此Blackbox默认只提供与Prometheus的对接。在使用过程中,可以在近用户端的网络环境下部署独立的Blackbox拨测节点,然后通过配置定时策略实现对目标应用服务端状态的主动检测。
2、主要功能
Blackbox功能简单实用,主要用来部署在与目标应用的用户端网络环境配置相似且临近真实用户的仿真环境下,模拟用户端以主动对应用关键服务接口和网络连通状态进行检测。其对目标应用的拨测地址、认证和周期等策略都以YAML格式的配置文件的形式定义。在运行过程中,对于拨测策略改变导致的配置文件修改,Blackbox支持在运行期重加载,不需要重启。
Blackbox能够对应用HTTP/HTTPS协议的Web页面、RESTful API接口、Web Service API接口,以及网络TCP连接、DNS状态和ICMP(IPv4、IPv6)发起主动拨测。在运行状态,Blackbox会按策略配置对指定应用页面、接口或网络进行主动拨测扫描。所有探测到的数据指标按照Prometheus的指标命名规则命名。监控数据在Exporter框架下以如下格式定义,并通过HTTP提供Prometheus拉取。
Blackbox扫描后采集的样本数据提供了对应用指定业务流程对应的Web页面/API接口地址的DNS解析时间、发送请求响应时间、HTTP请求返回状态码、请求重定向次数等指标的访问。通过这些指标,应用运维人员可以及时发现应用指定业务流程的异常状态。
二、Apache JMeter
1、简介
Apache JMeter是由Java语言编写的、独立部署运行的轻量级应用性能主动测试工具,可用于模拟用户端行为,主动生成用于负载压力测试的Web应用程序的性能。它可用于模拟服务器、服务器组、网络或对象的重负载,以测试其强度或分析不同负载类型下的总体性能。Apache JMeter的主要目标应用场景是性能测试。其在软件测试阶段的应用非常广泛,如测试应用并发量、吞吐量和高负荷状态下的稳定性。在对业务流程巡检拨测时,其可以作为主动拨测请求的发送节点,结合被动的应用性能监控工具,如APM工具、NPM工具来监控应用的可用性和性能波动情况。
2、主要功能
Apache JMeter主要应用在开发期,用于模拟和定义测试计划,生成负载对应用系统性能的压力测试。在应用运行期,Apache JMeter可以模拟用户访问操作或第三方系统调用接口,支持应用运维自定义逻辑来拨测目标应用系统。Apache JMeter可以通过自定义逻辑对几十种类型的协议、中间件和接口进行主动拨测,其中包括:
- Web-HTTP、HTTPS(Java、Node.js、PHP、ASP.NET等);
- SOAP/REST Web服务;
- FTP;
- JDBC连接数据库;
- LDAP;
- 通过JMS面向消息的中间件(MOM);
- SMTP、POP3和IMAP;
- 本机命令或shell脚本;
- TCP;
- Java对象。
除此之外,Apache JMeter还允许通过IDE界面快速定义测试计划(来自浏览器或本机应用程序),支持CLI命令行模式,可从任何Java兼容操作系统(Linux、Windows、Mac OSX等)加载测试。Apache JMeter能够提供完整的多线程框架,允许多个线程并发采样,以及通过单独的线程组同时对不同函数进行采样,支持生成并提供完整且随时可以呈现的动态HTML报告。Apache JMeter还能够缓存和离线分析/重播测试结果。
三、Selenium
1、简介
Selenium是最广泛使用的开源Web应用自动化测试工具集,包括一系列工具。Selenium起初是由Jason Huggins开发的用来在ThoughtWorks公司内部使用的工具。其设计目标是代替人来主动测试Web应用,对Web应用发起自动化测试。Selenium直接运行在浏览器中,模拟真正的用户操作来拨测目标应用。除了测试场景,Selenium还可以用在应用运维过程中来对指定应用业务流程进行主动拨测。由于支持更灵活的操作流程定义,相比于Blackbox、Apache JMeter这类工具,Selenium可以对应用中操作流程比较复杂的业务流程进行拨测。
2、主要功能
Selenium内部集成了设计简洁、使用简单的编程接口WebDriver来驱动浏览器对应用界面进行操作。它支持大多数常用的浏览器类型,包括Firefox、Safari、Chrome、Opera等。它支持的用来模拟应用操作的测试流程或拨测流程的编程语言包括Java、Python、C#、Ruby、JavaScript和Kotlin。
总的来说,Selenium在模拟用户操作以进行主动巡检拨测的场景下的功能主要有以下几个。
- 其可模拟应用指定业务流程的操作全过程,拨测业务流程的可用性,主动发现应用服务器假死、死锁等难以监控的异常状态。
- 其可针对特定输入获取指定操作的返回结果,验证页面或接口返回结果的正确性,发现业务逻辑错误、代码缺陷等问题。
- 其可定期模拟多个用户的并发操作,压力测试应用的并发处理能力和通量,精确探查应用并发处理的瓶颈,并为配置优化和容量规划采集指导数据。