如何使用多行将文本日志文件导入 Elasticsearch 本地安装

How do I import a text log file into Elasticsearch local installation with multiline

我有一个赛普拉斯自动化测试的文本日志文件。文件名 cypress_tests.txt 日志文件以以下格式显示,示例如下

2021-05-08T14:04:24.6661291Z     Spec                       Pass Fail Pending Skipped 
2021-05-08T14:04:24.6662575Z   ┌────────────────────────────────────────────────────┐
2021-05-08T14:04:24.6762664Z   │ √  chart-color      00:10  1     -    -      -     │
2021-05-08T14:04:24.6763156Z   │    s.spec.ts                                       │
2021-05-08T14:04:24.6763941Z   ├────────────────────────────────────────────────────┤
2021-05-08T14:04:24.6764594Z   │ √  charts.spec      00:10  1     -    -      -     │
2021-05-08T14:04:24.6765313Z   │    .ts                                             │
2021-05-08T14:04:24.6765791Z   ├────────────────────────────────────────────────────┤
2021-05-08T14:04:24.6766445Z   │ √  enterprise-      00:05  -     1    -      -     │
2021-05-08T14:04:24.6767007Z   │    model.spec.ts                                   │
2021-05-08T14:04:24.6914477Z   └────────────────────────────────────────────────────┘
2021-05-08T14:04:24.6915160Z     √  All specs passed! 00:15 2     1   -       -

我想将此文本文件导入到我本地安装的 Elasticsearch 中并为其建立索引。我想搜索通过和失败的测试数量,包括测试用例名称。然后我可以使用 Kibana 可视化构建条形图。

当我使用添加数据导入 csv 选项将文本文件导入 Elasticsearch 并创建索引时,为其指定一个索引名称 索引字段模式如下图所示。

在 Elasticsearch Discover 中,从下拉列表中选择日志文件,然后它会在左侧显示可用字段。 id, index, timestamp 有个字段叫message。 在消息字段中,它显示了日志文件中的所有数据、所有通过的规范、通过和失败测试的次数,例如通过列的总数为 82,失败列为 75。一切都在消息字段中。截图如下

我如何解析日志文件以映射字段,例如 82 是 Pass 列(从上面的示例日志屏幕截图来看,它是值 2),chart-colous.spec.ts 是 spec 列? 下面屏幕截图中的 75 用于“失败”列

如果无法完成,我是否需要告诉我们自动化框架的所有者更改将测试结果写入日志文件的方式?

非常感谢任何帮助和指导。谢谢。

您需要告诉自动化框架的所有者生成机器可读性更高的内容。塞浦路斯可以输出json...使用它。

下面是人类可读表格格式 grok 噩梦的部分示例:

^%{TIMESTAMP_ISO8601:start_time} +Spec +Pass +Fail +Pending +Skipped *\n(?<testblock>%{TIMESTAMP_ISO8601} +[┌├][^│]+(\n%{TIMESTAMP_ISO8601} +│ +[^ ][^│]+│){2}\n){3}(?<footer>%{TIMESTAMP_ISO8601} +└─*┘\n%{TIMESTAMP_ISO8601:end_time}.*specs.*)$

这会为您提供一组字段,每个字段包含一个测试,外加页眉和页脚。您仍然需要使用更多的 splitgrok 过滤器(如果您愿意,也可以使用 ruby 过滤器)来分离出各个测试并解析它们令人敬畏的多行包装表格样式。只是不要...此格式不适用于机器。

最好使用 cypress run --reporter json 所记录的东西 here