首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Logstash插件,匹配时添加字段

Logstash插件,匹配时添加字段
EN

Stack Overflow用户
提问于 2016-04-21 11:45:26
回答 2查看 6.6K关注 0票数 1

我有这样一场相亲:

代码语言:javascript
复制
grok{ match => [ “message”, “Duration: %{NUMBER:duration}”, “Speed: %{NUMBER:speed}” ] }

如果与grok模式匹配,我还想向捕获的变量添加另一个字段。我知道我可以使用变异插件和if-否则添加新的字段,但我有太多的匹配,这将是太长的方式。举个例子,我想为给定的文本捕获右侧字段。

代码语言:javascript
复制
"Duration: 12" => [duration: "12", type: "duration_type"]
"Speed: 12" => [speed: "12", type: "speed_type"]

有办法这样做吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-04-21 11:57:02

我不能百分之百确定这是否是你所需要的,但我也做了一些类似的事情。我对我的消息进行了基本的解析,然后再用可选的匹配来分析一个特定的字段。

代码语言:javascript
复制
grok {
            break_on_match => false
            patterns_dir => "/etc/logstash/conf.d/patterns"
            match => {
                "message" => "\[%{LOGLEVEL:level}\] \[%{IPORHOST:from}\] %{TIMESTAMP_ISO8601:timestamp} \[%{DATA:thread}\] \[%{NOTSPACE:logger}\] %{GREEDYDATA:msg}"
                "thread" => "(%{GREEDYDATA}%{REQUEST_TYPE:reqType}%{SPACE}%{URIPATH:reqPath}(%{URIPARAM:reqParam})?)?"
            }
        }

正如您所看到的,第一个简单地匹配完整的消息。我有一个字段线程,基本上就是Logger信息。但是,在我的设置中,http请求将一些信息附加到线程名中。在这些情况下,我也想选择匹配它们。

通过上述设置,只有在线程能够匹配字段的情况下,才会创建字段reqType、reqPath、reqParam。否则他们就不会了。

我希望这是你想要的。

谢谢你,阿图尔

票数 2
EN

Stack Overflow用户

发布于 2016-04-21 14:38:27

像这样吗?

代码语言:javascript
复制
filter{
  grok { match =>  [ "message", "%{GREEDYDATA:types}: %{NUMBER:value}" ] }
  mutate {
    lowercase => [ "types" ]
    add_field => { "%{types}" => "%{value}"
                   "type" => "%{types}_type" }
    remove_field => [ "value", "types" ]
  }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36768609

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档