【问题标题】:Create json objects from logs with ELK Stack使用 ELK Stack 从日志创建 json 对象
【发布时间】:2017-03-17 18:46:03
【问题描述】:

我有一些由 Quality Center (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 脚本来执行此操作,该脚本使用正则表达式逐行处理并创建 JSON,但我认为它没有优化,因为我是 Python 新手...

我想知道我是否可以使用 Logstash 将它们存储在 Elasticsearch 中并构建看板仪表板。

提前感谢您的帮助:)

【问题讨论】:

    标签: python json elasticsearch logging logstash


    【解决方案1】:

    使用 Logstash 可以做到这一点,涉及摄取的多行编解码器和一些真正的 gnarly grok 语句。这不是我期待的项目。事实上,我会通过以下两种方式之一来解决它:

    使用ruby 过滤器

    这允许 inline ruby​​ 将大量字符串按摩到您想要的事件字段中。实际上,您正在以这种方式编写自己的codec

    使用exec 输入

    这会将将其转换为可解析格式的过程卸载到外部脚本,然后将其发送到 logstash 以注入 ElasticSearch。由于我认为您不会在一秒钟内运行多个此类,因此这可能对您有用。

    【讨论】:

    • 感谢您的回复,您能否再解释一下……我是 ELK 堆栈的新手……再次感谢
    • @steep2000 ruby​​ 和 exec 过滤器都是 Logstash 的专家模式功能,因为它们可以处理现有过滤器无法处理的 other 情况。让工作正常和集成的入门知识将是一个 30 分钟的会议演讲本身。使用exec 插件,您可以调用您已经构建的python 脚本。它需要调整输入/输出格式,但这是您最快的工作方式。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-13
    • 2019-02-03
    • 2013-06-06
    • 1970-01-01
    • 2018-07-02
    • 1970-01-01
    相关资源
    最近更新 更多