在 Mapping 里面,将 dynamic 参数设置成 strict 可以拒绝索引包含未知字段的文档。 此条 Tips 由 medcl 贡献。

filebeat7.14解析非结构化日志如何处理不规则的空格?

Beats | 作者 lololo | 发布于2021年08月26日 | 阅读数:2684

使用到的软件及版本:
file beat版本:7.14.0
elasticseatch版本:7.14.1
kibana版本:7.14.0
原始日志:


2021-08-25 18:31:00.065 DEBUG 1 --- [MONITOR-CLI-1] c.m.r.m.e.R.selecteSyncStatus : <== Total: 0
2021-08-25 18:31:00.065  INFO 1 --- [MONITOR-CLI-1] c.m.r.m.e.R.selecteSyncStatus : <== Total: 0


问题描述:如上两条日志,时间后面有些有两个空格,有些只有一个空格。
QQ图片20210826112415.png

想要拿到日志级别“DEBUG”或“INFO”使用processors的dissect解析,该如何配置呢?或者使用es的管道该如何配置?
 
目前我是使用script脚本处理的,但我想看看有没有更好的解决办法
图片20210826111959.png

 
已邀请:

lijianghu - timesaving

赞同来自:

这种使用管道还是挺方便的,可以参考下以下示例
POST _ingest/pipeline/_simulate
{
"pipeline": {
"description": "多个空格,使用%{SPACE}*",
"processors": [
{
"grok": {
"field": "message",
"patterns": [
"%{TIMESTAMP_ISO8601:time} %{SPACE}* %{DATA:LEVEL} %{NUMBER:takes}"
]
}
}
]
},
"docs": [
{
"_source": {
"message": "2021-08-25 18:31:00.065 INFO 1 --- [MONITOR-CLI-1] c.m.r.m.e.R.selecteSyncStatus : <== Total: 0"
}
}
]
}
输出:
{
"docs" : [
{
"doc" : {
"_index" : "_index",
"_type" : "_doc",
"_id" : "_id",
"_source" : {
"time" : "2021-08-25 18:31:00.065",
"LEVEL" : "INFO",
"message" : "2021-08-25 18:31:00.065 INFO 1 --- [MONITOR-CLI-1] c.m.r.m.e.R.selecteSyncStatus : <== Total: 0",
"takes" : "1"
},
"_ingest" : {
"timestamp" : "2021-09-14T03:09:33.110419Z"
}
}
}
]
}
可以看到 INFO前不管多少空格,都可以被正常匹配。
 

要回复问题请先登录注册