【问题标题】:upload pytest json report to logstash将 pytest json 报告上传到 logstash
【发布时间】:2023-04-09 13:37:01
【问题描述】:

我有 json 文件,用于 pytest 使用 pytest-json 插件生成的测试结果。所以每个 json 文件都包含一个测试运行的测试结果。我想通过logstash将这个单一的json文件上传到elasticsearch中。但是当我尝试使用下面的logstash conf文件时,它会拆分json文件并在elasticsearch中作为多个文档发布,我希望它只作为一个文档上传。由于这种拆分,我的结果数据都分布在多个文档中并被损坏。

logstash 配置:

    input {

        file {

                start_position => "beginning"

                path => "home/report.json"

                sincedb_path => "/dev/null"

        }
}
filter {

        json {

                source => "message"

        }

}
output {

        elasticsearch {

                hosts => "http://localhost:9200"

                index => "demo_ds"

        }
}

【问题讨论】:

  • 您的report.json 文件是什么样的?你有多条线路?每行都会被logstash视为一个文档。

标签: json elasticsearch logstash pytest elastic-stack


【解决方案1】:

使用多行编解码器配置文件输入

input {
    file {
        path => "/home/user/report.json"
        sincedb_path => "/dev/null"
        start_position => "beginning"
        codec => multiline { pattern => "^Spalanzani" negate => true what => "previous" auto_flush_interval => 2 }
    }
}

编解码器获取与正则表达式 ^Spalanzani 不匹配的每一行(即,它获取每一行)并将它们组合成一个事件。 auto_flush_interval 是必需的,否则它将永远等待匹配 ^Spalanzani 的行。

请注意,文件输入只接受绝对路径。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多