elasticsearch - 使用 grok 拆分消息
问题描述
我有以下格式的日志:
2018-09-17 15:24:34;Count of files in error folder in;C:\Scripts\FOLDER\SUBFOLDER\error;1
我想在一个单独的字段中输入文件夹的路径和后面的数字。喜欢
dirTEST=C:\Scripts\FOLDER\SUBFOLDER\
count.of.error.filesTEST=1
或者
dir=C:\Scripts\FOLDER\SUBFOLDER\
count.of.error.files=1
我在 logstash 配置中使用这个 grok 模式:
if "TestLogs" in [tags] {
grok{
match => { "message" => "%{DATE:date_in_log}%{SPACE}%{TIME:time.in.log};%{DATA:message.text.log};%{WINPATH:dir};%{INT:count.of.error.files}" }
add_field => { "dirTEST" => "%{dir}" }
add_field => { "count.of.error.filesTEST" => "%{count.of.error.files}" }
}
}
logstash 日志中没有错误。
解决方案
这里有几点说明。首先,必须说解决方案似乎在做你所期望的,所以问题可能是你的索引模式没有用新字段更新。要在 Kibana 中执行此操作,您可以转到 Management -> Kibana -> Index Patterns 并刷新右上角的字段列表(在删除索引模式按钮旁边)。
其次,您必须考虑到使用点来分隔术语会使结构化数据看起来像这样:
{
"date_in_log": "18-09-17",
"count": {
"of": {
"error": {
"files": "1"
}
}
},
"time": {
"in": {
"log": "15:24:34"
}
},
"message": {
"text": {
"log": "Count of files in error folder in"
}
},
"dir": "C:\\Scripts\\FOLDER\\SUBFOLDER\\error"
}
我不知道这是否是您希望数据表示的方式,但也许您应该考虑其他解决方案来更改 grok 模式中字段的命名。
推荐阅读
- c - 基本 SDL2 应用程序使用 MinGW-w64 编译但不运行
- typescript - VS Code 不更新 TS+Lerna monorepo 中的有效导出('x 没有导出的成员 y')
- database - 在 Spring JPA 中链接 3 个多对多连接表的最佳方法是什么?
- tensorflow - Tensorboard 图显示无意义的结果没有输入大小
- excel - Excel VBA:插入值后应用预定义的单元格格式
- python - 访问多个股票代码的 yfinance Ticker 对象会导致 AttributeError
- java - 在 Apache Tomcat 上部署战争花费了太多时间
- flutter - 为子颤动中的内容创建动态数组
- python - 如何按字母顺序组织列表中的列表?
- r - 从 Github 安装的软件包是否需要 Rtools?