其余版本,请参阅版本化的插件文档。html
有关插件的问题,请在讨论论坛中打开一个主题,对于bug或特性请求,在Github中打开一个issue,关于Elastic支持的插件列表,请考虑Elastic支持矩阵。git
date过滤器用于解析字段中的日期,而后使用该日期或时间戳做为事件的logstash时间戳。github
例如,syslog事件一般有这样的时间戳:segmentfault
"Apr 17 09:32:01"
你应该使用MMM dd HH:mm:ss
的日期格式来解析这个。数组
日期过滤器对于事件的排序和对旧数据的回填特别重要,若是在你的事件中没有获得正确的日期,那么之后搜索它们可能会出现顺序不对。ide
若是没有这个过滤器,logstash将根据第一次看到事件(在输入时)的时间(若是时间戳尚未在事件中设置)选择一个时间戳,例如,对于文件输入,时间戳被设置为每次读取的时间。ui
这个插件支持如下配置选项以及后面描述的通用选项。编码
设置 | 输入类型 | 要求 |
---|---|---|
locale |
string | No |
match |
array | No |
tag_on_failure |
array | No |
target |
string | No |
timezone |
string | No |
还能够查看全部过滤器插件支持的选项列表的通用选项。.net
locale
插件
en
,en-US
表明BCP47,en_US
表明POSIX。MMM
的模式)和工做日名称(带有EEE
的模式),一般须要设置语言环境。match
[]
[ field, formats... ]
若是你的时间字段有多种可能的格式,你能够这样作:
match => [ "logdate", "MMM dd yyyy HH:mm:ss", "MMM d yyyy HH:mm:ss", "ISO8601" ]
iso8601
时间戳。有一些特殊的例外,下面的格式文字能够帮助你节省时间并确保数据解析的正确性。
ISO8601
- 能够解析任何有效的ISO8601时间戳,像:2011-04-19T03:44:01.103Z
UNIX
- 解析float或int值表示自纪元以来的unix时间(如1326149001秒),132和1326149001同样。UNIX_MS
- 解析int值表示自纪元以来的unix时间(如1366125117000毫秒)TAI64N
- 会解析tai64n时间值例如,若是你有一个字段logdate
,其值相似于Aug 13 2010 00:03:44
,那么你将使用这个配置:
filter { date { match => [ "logdate", "MMM dd yyyy HH:mm:ss" ] } }
[foo][bar]
匹配其值,有关更多信息,请参阅字段参考资料 y 年
2015
。15
表明2015
年。M 一年中的月份
1
为1月,12
为12月。01
为1月,12
为12月。Jan
为1月,注意:使用的语言取决于你的语言环境,查看locale
设置如何更改语言。January
,注意:使用的语言取决于你的语言环境。d 一月中的天
1
为一个月的第一天。01
为一个月的第一天。H 一天中的小时(24小时时钟)
0
为午夜。00
为午夜。m 一小时中的分钟(每小时60分钟)
0
。00
。s 一分钟中的秒(每分钟60秒)
0
。00
。S 每秒最大精度的分数为毫秒(SSS
),超过这个,追加零
0
表示亚秒值012
。01
为亚秒值01
。012
为亚秒值012。Z 时区偏移或标识
-0700
。-07:00
。America/Los_Angeles
,注意:有效的id列在Joda.org可用时区页面上。w 一年中的周
1
。01
。E 一周中的星期(文本)
Mon
,Tue
,Wed
,Thu
,Fri
,Sat
,Sun
,注意:它的实际语言取决于你的语言环境。Monday
,Tuesday
,...,注意:它的实际语言取决于你的语言环境。tag_on_failure
["_dateparsefailure"]
tags
字段target
"@timestamp"
@timestamp
字段。timezone
America/Los_Angeles
或Europe/Paris
是有效的id。该字段能够是动态的,并使用%{field}
语法包含事件的一部分。全部过滤器插件都支持如下配置选项:
设置 | 输入类型 | 要求 |
---|---|---|
add_field |
hash | No |
add_tag |
array | No |
enable_metric |
boolean | No |
id |
string | No |
periodic_flush |
boolean | No |
remove_field |
array | No |
remove_tag |
array | No |
add_field
{}
%{field}
包含事件的一部分。例如:
filter { date { add_field => { "foo_%{somefield}" => "Hello world, from %{host}" } } }
# You can also add multiple fields at once: filter { date { add_field => { "foo_%{somefield}" => "Hello world, from %{host}" "new_field" => "new_static_value" } } }
“somefield”==“hello”
,那么在成功时,这个过滤器将添加字段foo_hello
(若是存在的话),上面的值和%{host}
块将被事件中的值替换,第二个示例还将添加硬编码字段。add_tag
[]
%{field}
语法包含事件的一部分。例如:
filter { date { add_tag => [ "foo_%{somefield}" ] } }
# You can also add multiple tags at once: filter { date { add_tag => [ "foo_%{somefield}", "taggedy_tag"] } }
“somefield”==“hello”
,这个过滤器在成功时,会添加一个标签foo_hello
(第二个例子固然会添加一个taggedy_tag
标签)。enable_metric
true
id
在插件配置中添加惟一的ID
,若是没有指定ID,则Logstash将生成一个,强烈建议在配置中设置此ID,当你有两个或多个相同类型的插件时,这一点特别有用。例如,若是你有两个电子邮件输出,在本例中添加一个命名ID将有助于在使用监控API时监控Logstash。
filter { date { id => "ABC" } }
periodic_flush
false
remove_field
[]
若是此过滤器成功,则今后事件中删除任意字段,例如:
filter { date { remove_field => [ "foo_%{somefield}" ] } }
# You can also remove multiple fields at once: filter { date { remove_field => [ "foo_%{somefield}", "my_extraneous_field" ] } }
“somefield”==“hello”
,那么在成功时,若是存在名为foo_hello
的字段,这个过滤器将删除该字段,第二个示例将删除一个额外的非动态字段。remove_tag
[]
%{field}
语法包含事件的一部分。例如:
filter { date { remove_tag => [ "foo_%{somefield}" ] } }
# You can also remove multiple tags at once: filter { date { remove_tag => [ "foo_%{somefield}", "sad_unwanted_tag"] } }
“somefield”==“hello”
,这个过滤器在成功时,会删除标签foo_hello
若是它存在,第二个示例还将删除一个sad、unwanted的标记。