随着互联网技术的日益发展,测试开发工程师要达到“保障质量、提升效率”目标,提升效率更体现在方方面面。作为测试开发工程师,需要掌握基本开发技能,对代码能力也有一定的要求,这也是对项目多一道强有力的保障。
在功能测试遇到BUG时,测试开发工程师需在编译器中调试代码,一边追根溯源,一边监测代码质量。而“追根溯源”这一步最重要的依据就是系统输出日志,日志也是开发人员定位问题的第一检查场所。因此,为提升这部分工作效率,小编想通过ELK搭建一套日志收集、存储、展示的工具,来解决目前存在的日志查看效率低下、缺少可视化界面等问题。
1、什么是ELK
ELK由又Elasticsearch、Logstash和Kibana三个工具的首字母拼写而成,下面对这些工具进行简单介绍。
(1)Logstash
Logstash是一种数据处理管道,能够从多个不同的来源收集数据,进行转换之后将数据发送到需要的地方,它支持几乎任何类型的日志。
(2)Elasticsearch
Elasticsearch是一个基于Lucene分布式、RESTful风格的搜索和数据分析引擎,可以近乎实时的存储、检索数据,具有良好的扩展性。
(3)Kibana
Kibana是一个开源的分析和可视化平台,是用于展示日志信息的图形界面,能够分析和可视化存储在 Elasticsearch指标中的日志数据。
2、如何构建ELK通道
使用ELK工具搭建的日志管理平台整体架构如图1所示。其中Logstash用来收集、分析、过滤日志信息,收集到的信息经过预处理和过滤之后发送到Elasticsearch;Elasticsearch提供日志分析存储功能,实现全文搜索;Kibana为日志信息可视化功能提供展示界面,展示存储在Elasticsearch中的日志数据,供用户查询分析。
图1 日志管理平台架构图
Logstash中日志收集与预处理比较操作较为复杂,需要手动编写配置文件。Logstash包含三个部分:输入插件(input)、过滤器(filter)、输出插件(output),输入插件收集来自各个模块的日志,过滤器插件预处理收集到的日志,输出插件将日志写入目标。Logstash处理日志的详细流程如图2所示,Logstash启动前需要编写一个(.conf)配置文件,配置文件中有三个插件及各自包含的控件等配置。
图2 Logstash日志处理流程示意图
Elasticsearch与Kibana的配置文件较为简单,只需更改已有配置文件参数。
Elasticsearch更改配置如下:
http.port: 9200
http.cors.allow-origin: "/.*/"
http.cors.enabled: true
Kibana更改配置如下:
elasticsearch.url: "http://localhost:9200"
三个工具的启动方式也类似,进入软件安装包的bin目录下,通过命令行启动即可。最后再浏览器中输入Kibana的地址,端口号默认5601,界面如图3所示。
图3 Kibana界面展示图
3、使用ELK的思考
在测试环境中,将被测系统的日志收集存储到ELK平台,最终在Kibana界面中查看,不仅能够对存储的日志进行全文检索,直接定位到输出级别为ERROR的日志,同时对于Linux操作和IDE调试不熟练的测试人员,能够降低通过日志定位问题的门槛。
日志作为一个持续输出的增量文件,在后续的使用中应考虑存储空间的问题,设计方案定期解决过期日志;当遇到日志迸发的高峰期时,硬件条件一定的情况下,需要调整Logstash的配置参数,提高整体数据传输速率。对于以上问题,小编会在接下来的实践中不断摸索尝试,为大家带来更多解决方案。
作者:张艺
来源:51Testing软件测试网原创