如何使用 logstash 累积过滤器?
How to cumul filters with logstash?
我目前正在使用 docker 探索弹性搜索、kibana 和 logstash。 (版本7.1.1)三个容器运行好了
我有一些数据文件包含一些像这样的行:
foo=bar type=alpha T=20180306174204527
我的 logstash.conf 包含:
input {
file {
path => "/tmp/data/*.txt"
start_position => "beginning"
}
}
filter {
kv {
field_split => "\t"
value_split => "="
}
}
output {
elasticsearch { hosts => ["elasticsearch:9200"] }
stdout {
codec => rubydebug
}
}
我处理这个数据:
{
"host" => "07f3051a3bec",
"foo" => "bar",
"message" => "foo=bar\ttype=alpha\tT=20180306174204527",
"T" => "20180306174204527",
"@timestamp" => 2019-06-17T13:47:14.589Z,
"path" => "/tmp/data/ucL12018_03_06.txt",
"type" => "alpha"
"@version" => "1",
}
第一步工作完成。
现在我想添加一个过滤器来将键 T
的值转换为时间戳。
{
...
"T" => "2018-03-06T17:42:04.527Z",
"@timestamp" => 2019-06-17T13:47:14.589Z,
...
}
我不知道该怎么做。我试图在 kv
过滤器之后添加第二个过滤器,但是当我添加新文件时没有任何变化。
在 kv
过滤器之后添加此过滤器:
date {
match => [ "T", "yyyyMMddHHmmssSSS" ]
target => "T"
}
date 过滤器将尝试使用提供的模式解析字段 T
以创建一个日期,该日期将写入 T
字段(默认情况下它会覆盖@timestamp
字段)。
我目前正在使用 docker 探索弹性搜索、kibana 和 logstash。 (版本7.1.1)三个容器运行好了
我有一些数据文件包含一些像这样的行:
foo=bar type=alpha T=20180306174204527
我的 logstash.conf 包含:
input {
file {
path => "/tmp/data/*.txt"
start_position => "beginning"
}
}
filter {
kv {
field_split => "\t"
value_split => "="
}
}
output {
elasticsearch { hosts => ["elasticsearch:9200"] }
stdout {
codec => rubydebug
}
}
我处理这个数据:
{
"host" => "07f3051a3bec",
"foo" => "bar",
"message" => "foo=bar\ttype=alpha\tT=20180306174204527",
"T" => "20180306174204527",
"@timestamp" => 2019-06-17T13:47:14.589Z,
"path" => "/tmp/data/ucL12018_03_06.txt",
"type" => "alpha"
"@version" => "1",
}
第一步工作完成。
现在我想添加一个过滤器来将键 T
的值转换为时间戳。
{
...
"T" => "2018-03-06T17:42:04.527Z",
"@timestamp" => 2019-06-17T13:47:14.589Z,
...
}
我不知道该怎么做。我试图在 kv
过滤器之后添加第二个过滤器,但是当我添加新文件时没有任何变化。
在 kv
过滤器之后添加此过滤器:
date {
match => [ "T", "yyyyMMddHHmmssSSS" ]
target => "T"
}
date 过滤器将尝试使用提供的模式解析字段 T
以创建一个日期,该日期将写入 T
字段(默认情况下它会覆盖@timestamp
字段)。