我有一些日志是由质量中心(HP Alm)和Jenkins之间的桥梁生成的:如下所示:
Building in workspace D:\Tools\Jenkins\workspace\*******-JenkinsWithQC
[Dani-JenkinsWithQC] $ D:\Tools\Jenkins\workspace\*******-JenkinsWithQC\HpToolsLauncher.exe -paramfile props20022014150821066.txt
"Started..."
Timeout is set to: 5
Run mode is set to: RUN_REMOTE
============================================================================
Starting test set execution
Test set name: JenkinsIntegartionTest, Test set id: 2457
"Number of tests in set: "2
Test 1: [1]Login will run on host: si0vm839
Test 2: [1]Logout will run on host: si0vm839
"Scheduler started at:20.02.2014 15:08:28
-------------------------------------------------------------------------------------------------------
20.02.2014 15:08:29 Running: [1]Login
20.02.2014 15:08:29 Running test: [1]Login, Test id: 938, Test instance id: 1412
Test: [1]Login, Id: 1412, Execution status: Running
Test: [1]Login, Id: 1412, Execution status: Error, Message: Access is denied
20.02.2014 15:08:33 Test complete: [1]Login
-------------------------------------------------------------------------------------------------------
20.02.2014 15:08:33 Running: [1]Logout
20.02.2014 15:08:33 Running test: [1]Logout, Test id: 939, Test instance id: 1413
Test: [1]Logout, Id: 1413, Execution status: Running
Test: [1]Logout, Id: 1413, Execution status: Error, Message: Access is denied
==============\nJob timed out!\n==============
================================================
Run status: Job failed, total tests: 2, succeeded: 0, failures: 0, errors: 2
Build step 'Execute HP tests from HP ALM' changed build result to FAILURE
Finished: FAILURE我想从这些日志中创建一个JSON,看起来如下所示:
{
'Build': {
'TestSet': [
{
'name' . : 'execution',
'id' : 2457,
'startedAt': '20.02.2014 15:08:28',
'nbOfTests': 2,
'tests' . : [
{
'name': "[1]Login",
'host': "si0vm839"
}
]
}
]
}
}我可以用python脚本来完成这个任务,它可以一行一行地处理regex并创建JSON,但是我认为它不是经过优化的,因为我是Python的新手.
我想知道是否可以用Logstash将它们存储在Elasticsearch中,并构建一个kanban仪表板.
谢谢你的帮助:)
发布于 2017-03-17 21:13:59
可以用Logstash来完成它,涉及到吞食的多行编解码器和一些真正令人讨厌的grok语句。这不是我所期待的项目。事实上,我会用两种方法来解决这个问题:
使用ruby过滤器
这允许内联红宝石按摩大量的字符串到您想要的字段在事件。实际上,您正在以这种方式编写自己的codec。
使用exec输入
这将其转换为可解析格式的过程卸载为外部脚本,然后外部脚本将其发送到logstash以注入到ElasticSearch中。因为我不认为你每秒钟要运行多个这样的程序,这可能对你有用。
https://stackoverflow.com/questions/42865050
复制相似问题