例一

input {
# 控制台输入
    stdin { }
}

filter {
# kv 插件,每一对使用 | 分割,kv 使用 = 分割
    kv {
        source => "message"
        field_split => "|"
        value_split => "="
    }
# 将 args 作为输入再次分割
    kv {
        source => "args"
        field_split => "&"
        value_split => "="
    }
} 
output {
# 输出到 es
    elasticsearch {
        hosts => ["172.17.0.2:9200"]
    }
# 同时输出到控制台
    stdout {
        codec => rubydebug
    }
}
docker run -it --rm logstash:6.5.4 \
-e 'input { stdin { } } filter { kv { source => "message" field_split => "|" value_split => "=" } kv { source => "args" field_split => "&" value_split => "=" } } output { elasticsearch {  hosts => ["172.17.0.2:9200"] } stdout { codec => rubydebug } }'

这里使用了 kv 插件进行解析,举一个例子,我的日志输入内容为:

arg1=a1|arg2=b2|arg3=c3|args=a=b&b=c&c=d&d=e

最终上面的内容会被解析成以下格式,并将数据添加到 172.17.0.2:9200 所属的 elasticsearch 中

arg1=a1
arg2=b2
arg3=c3
a=b
b=c
c=d
d=e

results matching ""

    No results matching ""