【问题标题】:Logstash - find length of split result inside mutateLogstash - 在 mutate 中查找拆分结果的长度
【发布时间】:2015-09-25 07:54:37
【问题描述】:

我是 Logstash 的新手。目前我正在尝试解析 CSV 格式的日志。我需要用空格分隔符分割一个字段,然后我会根据分割结果添加新的字段。

这是我需要创建的过滤器:

filter {
...
mutate {
    split => ["user", " "]
    if [user.length] == 2 {
        add_field => { "sourceUsername" => "%{user[0]}" }
        add_field => { "sourceAddress" => "%{user[1]}" }
    }
    else if [user.length] == 1 {
        add_field => { "sourceAddress" => "%{user[0]}" }
    }
}
...
}

if 脚本后出现错误。 请指教,有什么方法可以在 mutate 插件中捕获分割结果的长度。

谢谢, 赫里

【问题讨论】:

    标签: elasticsearch logstash logstash-configuration


    【解决方案1】:

    根据您的代码示例,我假设您已完成 csv 解析,并且您已经有一个字段 user,其值包含 sourceAddress 或包含 sourceUsername sourceAddress 的值(由空格分隔)。

    现在,有一个lot of filters 可用于检索更多字段。您不需要使用 mutate 过滤器来拆分字段。在这种情况下,更灵活的方法是grok filter

    过滤器:

    grok {
        match => {
            "user" => [ 
                "%{WORD:sourceUsername} %{IP:sourceAddress}",
                "%{WORD:sourceUsername}"
                ]
        }
    }
    

    字段 "user" => "192.168.0.99" 会导致

    "sourceAddress" => "191.168.0.99".

    字段 "user" => "Herry 192.168.0.99" 会导致

    "sourceUsername" => "Herry", "sourceAddress" => "191.168.0.99"

    当然,如果您的 sourceAddress 不是 IP,您可以将 IP 更改为 WORD

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-03-20
      • 1970-01-01
      • 1970-01-01
      • 2023-04-10
      • 1970-01-01
      • 2012-09-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多