elasticsearch 如何使用multiline将文本日志文件导入Elasticsearch本地安装
我有一个Cypress自动化测试的文本日志文件。文件名cypress_tests.txt 日志文件以以下格式显示,示例如下所示elasticsearch 如何使用multiline将文本日志文件导入Elasticsearch本地安装,elasticsearch,logstash,kibana,filebeat,elasticsearch,Logstash,Kibana,Filebeat,我有一个Cypress自动化测试的文本日志文件。文件名cypress_tests.txt 日志文件以以下格式显示,示例如下所示 2021-05-08T14:04:24.6661291Z Spec Pass Fail Pending Skipped 2021-05-08T14:04:24.6662575Z ┌────────────────────────────────────────────────────┐ 2021-05-08T14
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 visulation构建一个条形图
当我使用Add Data import csv选项将文本文件导入Elasticsearch并创建索引时,给它一个索引名
索引字段模式如屏幕截图所示。从Elasticsearch Discover中,从下拉列表中选择日志文件,然后在左侧显示可用字段。id、索引、时间戳有一个名为message的字段。 在消息字段中,它显示日志文件中的所有数据、通过的所有规格、通过和失败测试的数量,例如,总计82(通过列),75(失败列)。所有内容都在消息字段中。下面是截图 我如何解析日志文件来映射字段,比如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.*)$
^%{TIMESTAMP\u ISO8601:start\u time}+Spec+Pass+Fail+Pending+Skipped*\n(?%{TIMESTAMP\u ISO8601}+[┌├][^│]+(\n%{TIMESTAMP_ISO8601}+│ +[^ ][^│]+│){2} \n){3}(?%{TIMESTAMP_ISO8601}+└─*┘\n%{TIMESTAMP_ISO8601:end_time}.*规格。*)$
这将获得一个字段数组,每个字段包含一个测试,加上页眉和页脚。您仍然需要使用更多的split
和grok
过滤器(或者ruby
过滤器,如果您愿意的话)要分离出单独的测试并解析它们令人敬畏的多行包装表格样式,请不要…这种格式不适用于机器
最好使用文档中描述的东西cypress run--reporter json