CN114238338A - 一种多维度的DevOps度量指标采集方法 - Google Patents
一种多维度的DevOps度量指标采集方法 Download PDFInfo
- Publication number
- CN114238338A CN114238338A CN202111576139.7A CN202111576139A CN114238338A CN 114238338 A CN114238338 A CN 114238338A CN 202111576139 A CN202111576139 A CN 202111576139A CN 114238338 A CN114238338 A CN 114238338A
- Authority
- CN
- China
- Prior art keywords
- index
- field
- devops
- database
- time
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/242—Query formulation
- G06F16/2433—Query languages
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computational Linguistics (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明涉及DevOps领域和软件工程领域,本发明公开了一种一种多维度的DevOps度量指标采集方法,主旨在于能够高效采集DevOps工具产生的原始数据,并且按照自定义维度灵活进行搜索和展示,所述方法包括:获取DevOps各阶段工具所产生的指标数据所对应的结构化数据库元信息;指标采集组件根据用户自定义数据库查询条件和度量指标维度字段生成DML语句和搜索引擎ElasticSearch索引模板;调用所述指标采集组件,定时采集度量指标数据,并向搜索引擎ElasticSearch发起批量写入请求;根据开发人员配置的维度字段向搜索引擎ElasticSearch聚合查询指标结果。
Description
技术领域
本发明涉及DevOps领域和软件工程领域,更具体地,涉及一种多维度的DevOps度量指标采集方法。
背景技术
DevOps是Development和Operations的组合词,代表着重视软件开发人员(Dev)和IT运维技术人员(Ops)之间沟通合作的文化;旨在透过自动化软件交付和架构变更的流程,使得构建、测试、发布软件的过程能够更加地快捷、频繁和可靠。
DevOps的落地实施需要引入大量的工具链:例如在项目管理阶段的Jira和Ones,在版本控制和协作阶段的Gitlab和SVN,持续集成阶段的Jenkins和Gitlab CI,质量扫描阶段的SonarQube,自动化测试阶段有Ant、Selenium、Jmeter等,持续部署阶段有Spinnaker、Tekton等。
不同工具在DevOps各阶段的每次运行均会产生相应的数据,如需求的状态信息,代码提交信息,单次构建结果、自动化测试结果,部署结果等。从这些原始数据中,我们可以计算出许多关键性的DevOps度量指标,例如按照不通维度统计构建次数、自动化测试通过百分比、部署频率等。度量指标是衡量DevOps成功与否的关键。
DevOps的工具链运行数据均存放至各工具的数据库或文件中,需要人工编写大量数据库查询语句或脚本,根据不同的数据展示维度将数据采集至统一的数据库。通常由于未设置字段索引,难以高效地查询关键维度数据。且随着DevOps工具链的升级,原始数据库表结构易发生改变,难以维护其中的对应关系。
发明内容
本发明的目的在于提供一种多维度的DevOps度量指标采集方法,能够高效采集DevOps工具产生的原始数据,并且按照自定义维度灵活进行搜索和展示。
根据本发明为了实现上述目的采用以下技术方案:
一种多维度的DevOps度量指标采集方法,包括以下步骤:
步骤S1,获取DevOps各阶段工具产生的指标数据所在的结构化数据库元信息;
步骤S2,指标采集组件根据用户自定义数据库查询条件和度量指标维度字段生成DML语句和搜索引擎ElasticSearch索引模板;
步骤S3,调用所述指标采集组件,定时采集度量指标数据,并向搜索引擎ElasticSearch发起批量写入请求;
步骤S4,根据配置的指标维度字段向搜索引擎ElasticSearch聚合查询指标结果。
上述技术方案中,在步骤S1之前还包括:步骤S0,实现基于统一用户ID和项目ID的DevOps工具链,
其中,所述DevOps工具链具体包括但不限于以下几种:
(1)Jira需求管理原始数据库;
(2)通过Jenkins REST API获取的项目构建信息,至少包含以下字段:任务全称、触发者、构建结果、任务执行耗时;
(3)SonarQube任务执行数据库,至少包含字段:任务全称,评分,缺陷数,漏洞数,触发者;
上述技术方案中,步骤S1包括:
S11、将所述数据库链接信息尝试创建数据库连接对象,并将数据库连接信息写入搜索引擎ElasticSearch;
S12、通过判断数据库类型获取数据的元数据信息,如MySQL或MariaDB数据库的INFORMATION_SCHEMA、Oracle数据库的tablespace_name。
4.根据权利要求1所述的一种多维度的DevOps度量指标采集方法,其特征在于,其中,步骤S2包括:
S21、从步骤S1中的元数据信息中获取数据库表信息和字段信息,选择所需的表,以及表中的有效数据字段和维度字段,指标采集组件通过拼接的方式将查询字段组装成完整的数据库查询语句DML;
S22、指标采集组件将生成的DML和所设置的度量指标维度字段持久化至搜索引擎ElasticSearch的采集配置索引中,其中,度量指标维度字段可为用户ID、项目ID、组织名称等可聚合字段。
S23、指标采集组件根据聚合维度字段为搜索引擎ElasticSearch创建索引模板,模板名称以“表名*”命名,指定字段映射规则,维度字段采用keyword分词,其余字段则不进行分词处理,提高聚合搜索效率。
上述技术方案中,步骤S3包括:
S31、在定时执行规定的一次执行周期内,任务开始时,计算当前时间和上次同步时间,并生成如下DML语句:
SELECT表名称(字段1,字段2,字段3,…)WHERE`time_field`>=上次同步时间AND`time_field`<当前时间,其中time_field为原始采集表中定义的时间戳字段;
其中,上次同步时间默认值为Unix初始时间“1970年1月1日0时0分”在S33中动态修改。;
s32、执行DML语句后,将获取到的行数据循环批量写入搜索引擎ElasticSearch,且写入索引名称为查询数据库表的名称;
S33、对S32的执行结果判断,若成功,则在步骤S22中的采集配置索引中更新字段“上次同步时间”为本次执行时间,若失败,则更新采集配置索引内的syncErrorMsg字段,写入失败原因,由于“上次同步时间”未更新,下一个执行周期将继续获取失败周期内的未采集的数据。
上述技术方案中,步骤S4包括:
S41、维度字段可根据需要自行选择,但时间字段必须作为布尔查询中的MUST字句,根据时间区间搜索定量数据,防止因数据量过大而导致耗时过长,子聚合维度和聚合方式按需执行。
S42、子聚合的聚合方式可根据需要自行选择,最终生成自定义的聚合查询构造器,向搜索引擎ElasticSearch重新发起查询请求。
因为本发明采用上述技术方案,因此具备以下有益效果:
本发明提出的一种多维度的DevOps度量指标采集方法,通过生成自定义的数据操作语言,从DevOps工具链的数据库中采集指标数据并批量写入搜索引擎ElasticSearch,并根据维度信息生成聚合查询语句,使得DevOps数据采集较编写定时任务方式更加灵活、配置性更强且数据不重复。
附图说明
图1为本发明实施例流程简图。
具体实施方式
下面结合附图和实施例,对本发明的具体实施方式作进一步详细描述。以下实施例用于说明本发明,但不用来限制本发明的范围。
如图1所示,为本发明的多维度DevOps度量指标采集方法的流程示意图,包括:
S1.获取DevOps各阶段工具所产生的指标数据所对应的结构化数据库元信息。
其中,所述的DevOps各阶段工具包括项目管理工具Jira,持续集成工具Jenkins,代码质量扫描工具SonarQube。由于Jenkins采用文件目录的方式存储数据,通过解析每次构建结果的XML文件结构,获取构建结果详细信息。
为了能够准确和直观地配置DevOps度量指标字段,应用程序将尝试连接数据库,根据数据库的类型定义元数据查询语句并获取数据库表结构、字段定义等元信息。
S2.将自定义的DML(数据操作语言,Data Manipulation Language)和指定指标维度字段提供给指标采集组件。
具体地,采集器根据开发人员选择的数据库表字段,采用SQL语句拼接的方式生成DML查询语句,可针对性地查询出对DevOps度量指标有意义的数据行,从而减少无意义字段查询,提升结构化查询速度和数据传输效率。另外,采集组件将保存自定义的DML并持久化至搜索引擎ElasticSearch,供每次执行数据采集定时任务使用。为了提高搜索引擎ElasticSearch多维度聚合查询的效率,将进一步创建索引模板(Index Template),为所需查询的维度字段创建分词。
S3.调用所述指标采集组件,定时采集度量指标数据,并向搜索引擎ElasticSearch发起批量写入请求。
其中,所述定时采集根据S2中持久化的DML和数据库信息以及根据当前执行时间和上一次执行时间生成WEHRE子句(WHERE CLAUSE),生成最终的DML语句并执行,将采集的数据按批次写入(Bulk Request)搜索引擎ElasticSearch,提升写入效率。写入完成后,需要将本次采集结果(包括本次任务执行时间,本次任务是否成功)持久化,供下一次执行生成DML查询语句。这里定义了DbSyncConfig用于描述一项数据指标的采集详细规则。
DbSyncConfig的定义如下:
其中,description用于标识此采集规则的具体采集指标。dbInfo表示数据库的连接配置信息接口,程序可根据数据库类型实现不同的数据库连接类和对象。tableName和fetchFields分别表示采集目标表和目标表具体的采集字段。fetchFields默认值为空,应用程序将采集所有表字段。程序根据aggregationFields所存储的可聚合度量指标字段,向搜索引擎ElasticSearch创建索引模板。enable可动态控制采集任务是否执行。timeField为查询的时间字段,程序根据此字段来过查询采集间隔时间周期内产生的增量数据。
lastSyncTime表示上次执行采集的启动时间,同时也是DML中WHERE语句中的上一次启动时间。SyncErrorMsg可记录采集错误异常堆栈,便于开发人员排查采集问题。
CronExpression为CRON表达式,可针对不同指标定义不同的采集频率,该参数由默认值,为每天的24小时执行。程序会每分钟判断所有采集任务的cronExpression是否应当在当前时间触发。
S4.根据开发人员配置的维度字段和聚合方式向搜索引擎ElasticSearch聚合查询指标结果;
其中,应用程序将组装SearchRequest查询语句,首先根据时间区间进行布尔查询(BoolQuery),然后根据聚合字段和聚合方式按顺序添加至子聚合。
本发明提出的一种多维度的DevOps度量指标采集方法,通过自定义的采集字段和维度从DevOps工具链中获取指标数据并向搜索引擎ElasticSearch创建索引模板,批量上传采集数据,使得DevOps工具链的数据收集和聚合更加地通用、高效和灵活。
最后,本发明的方法仅为较佳的实施方案,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (6)
1.一种多维度的DevOps度量指标采集方法,其特征在于,包括以下步骤:
步骤S1,获取DevOps各阶段工具产生的指标数据所在的结构化数据库元信息;
步骤S2,指标采集组件根据用户自定义数据库查询条件和度量指标维度字段生成DML语句和搜索引擎ElasticSearch索引模板;
步骤S3,调用所述指标采集组件,定时采集度量指标数据,并向搜索引擎ElasticSearch发起批量写入请求;
步骤S4,根据配置的指标维度字段向搜索引擎ElasticSearch聚合查询指标结果。
2.根据权利要求1所述的一种多维度的DevOps度量指标采集方法,其特征在于,在步骤S1之前还包括:步骤S0,实现基于统一用户ID和项目ID的DevOps工具链,
其中,所述DevOps工具链具体包括但不限于以下几种:
(1)Jira需求管理原始数据库;
(2)通过Jenkins REST API获取的项目构建信息,至少包含以下字段:任务全称、触发者、构建结果、任务执行耗时;
(3)SonarQube任务执行数据库,至少包含字段:任务全称,评分,缺陷数,漏洞数,触发者。
3.根据权利要求1所述的一种多维度的DevOps度量指标采集方法,其特征在于,其中,步骤S1包括:
S11、将所述数据库链接信息尝试创建数据库连接对象,并将数据库连接信息写入搜索引擎ElasticSearch;
S12、通过判断数据库类型获取数据的元数据信息,如MySQL或MariaDB数据库的INFORMATION_SCHEMA、Oracle数据库的tablespace_name。
4.根据权利要求1所述的一种多维度的DevOps度量指标采集方法,其特征在于,其中,步骤S2包括:
S21、从步骤S1中的元数据信息中获取数据库表信息和字段信息,选择所需的表,以及表中的有效数据字段和维度字段,指标采集组件通过拼接的方式将查询字段组装成完整的数据库查询语句DML;
S22、指标采集组件将生成的DML和所设置的度量指标维度字段持久化至搜索引擎ElasticSearch的采集配置索引中,其中,度量指标维度字段可为用户ID、项目ID、组织名称等可聚合字段。
S23、指标采集组件根据聚合维度字段为搜索引擎FlasticSearch创建索引模板,模板名称以“表名*”命名,指定字段映射规则,维度字段采用keyword分词,其余字段则不进行分词处理,提高聚合搜索效率。
5.根据权利要求1所述的一种多维度的DevOps度量指标采集方法,其特征在于,其中,步骤S3包括:
S31、在定时执行规定的一次执行周期内,任务开始时,计算当前时间和上次同步时间,并生成如下DML语句:
SELECT表名称(字段1,字段2,字段3,…)WHERE`time_field`>=上次同步时间AND`time_field`<当前时间,其中time_field为原始采集表中定义的时间戳字段;
其中,上次同步时间默认值为Unix初始时间“1970年1月1日0时0分”在S33中动态修改。;
s32、执行DML语句后,将获取到的行数据循环批量写入搜索引擎ElasticSearch,且写入索引名称为查询数据库表的名称;
S33、对S32的执行结果判断,若成功,则在步骤S22中的采集配置索引中更新字段“上次同步时间”为本次执行时间,若失败,则更新采集配置索引内的syncErrorMsg字段,写入失败原因,由于“上次同步时间”未更新,下一个执行周期将继续获取失败周期内的未采集的数据。
6.根据权利要求1所述的一种多维度的DevOps度量指标采集方法,其特征在于,步骤S4包括:
S41、维度字段可根据需要自行选择,但时间字段必须作为布尔查询中的MUST字句,根据时间区间搜索定量数据,防止因数据量过大而导致耗时过长,子聚合维度和聚合方式按需执行。
S42、子聚合的聚合方式可根据需要自行选择,最终生成自定义的聚合查询构造器,向搜索引擎ElasticSearch重新发起查询请求。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111576139.7A CN114238338A (zh) | 2021-12-21 | 2021-12-21 | 一种多维度的DevOps度量指标采集方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111576139.7A CN114238338A (zh) | 2021-12-21 | 2021-12-21 | 一种多维度的DevOps度量指标采集方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114238338A true CN114238338A (zh) | 2022-03-25 |
Family
ID=80760847
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111576139.7A Pending CN114238338A (zh) | 2021-12-21 | 2021-12-21 | 一种多维度的DevOps度量指标采集方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114238338A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114896247A (zh) * | 2022-05-06 | 2022-08-12 | 山东浪潮新基建科技有限公司 | 应用于城市大脑的指标数据生成方法 |
CN116795845A (zh) * | 2023-08-23 | 2023-09-22 | 深圳市金政软件技术有限公司 | 数据的展示方法、装置、终端设备和可读存储介质 |
-
2021
- 2021-12-21 CN CN202111576139.7A patent/CN114238338A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114896247A (zh) * | 2022-05-06 | 2022-08-12 | 山东浪潮新基建科技有限公司 | 应用于城市大脑的指标数据生成方法 |
CN116795845A (zh) * | 2023-08-23 | 2023-09-22 | 深圳市金政软件技术有限公司 | 数据的展示方法、装置、终端设备和可读存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11409764B2 (en) | System for data management in a large scale data repository | |
US11360950B2 (en) | System for analysing data relationships to support data query execution | |
US11461294B2 (en) | System for importing data into a data repository | |
US7809763B2 (en) | Method(s) for updating database object metadata | |
US20090193039A1 (en) | Data driven system for data analysis and data mining | |
CN114238338A (zh) | 一种多维度的DevOps度量指标采集方法 | |
US20130041900A1 (en) | Script Reuse and Duplicate Detection | |
US20110078135A1 (en) | Database index monitoring system | |
CN105224527B (zh) | 适用于多种目的表更新方式的通用etl方法 | |
CN113934750A (zh) | 基于编译方式的数据血缘关系分析方法 | |
KR100877156B1 (ko) | 비정형 질의언어에 대한 사전 성능 분석 시스템 및 방법 | |
US10592400B2 (en) | System and method for creating variants in a test database during various test stages | |
CN116975116A (zh) | 一种大数据分析***的数据条件筛选方法 | |
CN117076742A (zh) | 数据血缘追踪方法、装置及电子设备 | |
US20160179866A1 (en) | Method and system to search logs that contain a massive number of entries | |
KR102125010B1 (ko) | 데이터베이스 전환 분석 시스템 및 방법 | |
CN118069701B (zh) | 反向查询链路的构建方法、装置、计算机设备及存储介质 | |
Berti et al. | StarStar models: Process analysis on top of databases | |
US11947905B1 (en) | Template builder for dynamically generated executables | |
CN117827942A (zh) | 一种基于数据血缘与质量的数据最优寻址检索方法及装置 | |
Heller | Improve SQL Performance | |
CN116226168A (zh) | 一种用于宽表数据验证的方法及*** | |
Detelich | Large-Scale Date Normalization in ArchivesSpace with Python, MySQL, and Timetwister | |
Heine et al. | The data checking engine: Complex rules for data quality monitoring | |
CN118093561A (zh) | 一种基于sql脚本的数据质量检测方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |