elasticsearch 从ElasticSearch中的文本中提取数字
我使用logstash将日志发送到ElasticSearch 5.1实例,并使用Kibana 5.1显示所有结果 如何仅从日志的已知模式字符串中提取数字,然后汇总每分钟的所有数字 例如,我的日志行包含以下文本: “处理53条记录” “处理45条记录” “处理97条记录” 我想创建一个名为已处理的_记录的字段,分别获取值53、45和97,然后我想创建另一个名为已处理的_记录的字段,其中包含每分钟已处理的_记录的摘要
elasticsearch 从ElasticSearch中的文本中提取数字,
elasticsearch,indexing,logstash,kibana,analyzer,
elasticsearch,Indexing,Logstash,Kibana,Analyzer,我使用logstash将日志发送到ElasticSearch 5.1实例,并使用Kibana 5.1显示所有结果 如何仅从日志的已知模式字符串中提取数字,然后汇总每分钟的所有数字 例如,我的日志行包含以下文本: “处理53条记录” “处理45条记录” “处理97条记录” 我想创建一个名为已处理的_记录的字段,分别获取值53、45和97,然后我想创建另一个名为已处理的_记录的字段,其中包含每分钟已处理的_记录的摘要 我是ELK新手,所以我不知道是否需要更改logstash conf文件和/或Kib
我是ELK新手,所以我不知道是否需要更改logstash conf文件和/或Kibana来提取记录数,日志文件需要与Grok解析器匹配,例如:
%{WORD} %{NUMBER:processed_records} %{WORD}
由于您的日志文件可能比这更复杂,因此有在线工具可提供帮助:
- 要获取Grok模式的列表,请参阅
- 要构造新的Grok语句,请参见
- 测试Grok语句或
在查询时求和时,可以使用Kibana UI,或者如果编写Elasticsearch DSL,则使用聚合。在没有执行的情况下,如果必须避免重新索引,则可以在Kibana中使用脚本字段 简介如下:
- 通过在elasticsearch.yaml中添加以下内容来启用无痛正则表达式支持: script.painless.regex.enabled:true
- 重新启动elasticsearch
- 通过管理->索引模式->脚本字段,在Kibana中创建一个新的脚本字段
- 选择painless作为语言,选择number作为类型
- 创建实际脚本,例如:
- 要执行新字段,您必须完全重新加载网站,只需在打开的发现网站上重新搜索,将无法获取新字段。(这几乎让我放弃了让它工作的努力——。-)
- 在发现或可视化中使用脚本
您可以在查询内部生成脚本字段,如下所示:但这似乎有点太过隐蔽,难以轻松维护:/您也可以使用解剖插件来实现同样的功能
dissect { mapping => { "message" => "%{processing} %{processed_records} %{records}" }
然后在Kibana中相应地配置了摘要 您必须编写一个grok筛选器来捕获日志中的记录数。你写过吗?我不知道grok过滤器的事。我很快就会查出来的。谢谢谢谢,这很有帮助!
dissect { mapping => { "message" => "%{processing} %{processed_records} %{records}" }