花点时间从日志文件
以下是原始日志:花点时间从日志文件
2017年9月17日8点34分54秒181409 10.110.82.122 200 TCP_TUNNELED 4440 1320 CONNECT TCP cdn.appdynamics.com 443/- ANILADE - 10.100 .134.6 - - “Mozilla/5.0(Windows NT 10.0; Win64; x64)AppleWebKit/537.36(KHTML,如Gecko)Chrome/60.0.3112.113 Safari/537.36”OBSERVED“Technology/Internet” - 10.100.134.6
This是我的logstash配置文件:
input {
beats {
port => "5044"
}
}
filter
#start of filter
{
grok
#start of grok filter
{
match =>
#start of match
{"message"=>"%{TIMESTAMP_ISO8601:@timestamp} (%{NUMBER:time_taken}|\-) (%{IP:sourceIP}|\-) (%{NUMBER:status}|\-) (%{WORD:action}|\-) (%{NUMBER:scBytes}|\-) (%{NUMBER:csBytes}|\-) (%{WORD:method}|\-) (%{WORD:uri_scheme}|\-) (%{URIHOST:url}|\-) (%{NUMBER:port}|\-) (?<uri_path>([a-zA-Z0-9\/\.\?\-\_]+)|(\/)) (?<uri_query>([a-zA-Z0-9\/\.\?\-\=\&\%]+)) (?<username>([a-zA-Z0-9\/\.\?\-]+)) (?<auth_group>([a-zA-Z0-9\/\.\?\-]+)) (?<destIP>([a-zA-Z0-9\.\-]+)) (?<content_type>([a-zA-Z0-9\-\/\;\%\=]+)) (?<referer>[a-zA-Z0-9\-\/\;\%\=\:\.]+) (%{QUOTEDSTRING:user_agent}|\-) (%{WORD:filter_result}|\-) (%{QUOTEDSTRING:category}|\-) (?<vir_id>([a-zA-Z0-9\-\/.])) (%{IP:proxyIP}|\-)"
}
#end of match
}
#end of grok
date
#start of date filter
{
match=>["@timestamp","ISO8601"]
}
#end of date filter
}
#end of filter
output
{
elasticsearch
{
hosts => ["localhost:9200"]
index => proxylog
}
}
我想从日志中选择时间,因此我使用日期筛选器s在Date Plugin文档中建议。但是不管配置如何,我可以看到logstash elasticsearch在Kibana中查看时在@timestamp字段中显示了索引时间。我找不到我错过了什么或者我错在哪里。我试图不通过与
%{YEAR:year}-%{MONTHNUM:month}-%{MONTHDAY:day} %{TIME:time}
替换它并和添加字段时间戳作为使用在神交滤波器的TIMESTAMP_ISO8601:
add_field=>["timestamp","%{year}-%{month}-%{day} %{time}"]
然后改变日期过滤器配置为
date{
match=>["timestamp","YYYY-MM-DD HH:mm:ss"]
remove_field=>["timestamp","year","month","day"]}
}
和发现没有运气。有人能指出一个解决方案,因为在elasticsearch和*的论坛上发现的任何链都没有帮助。任何人都可以告诉我是否需要更改filebeat的任何配置,因为我正在使用filebeat将日志发送到logstash。
可能是因为@timestamp
是一个时间戳字段,但您的grok {}将它视为一个字符串。
首先,将字符串切入新的字段,例如,
%{TIMESTAMP_ISO8601:[@metadata][timestamp]}
然后通过使用带有[@metadata] [timestamp]的日期过滤器作为输入来设置@timestamp。
它不工作@Alain – Akash
难以对SO进行迭代调试。也许跳到IRC上? –
,你可以在你的日期过滤器添加target => "new_field"
,并用它在Kibana
在你原来的配置,删除@中'{“消息” =>“%{TIMESTAMP_ISO8601:@timestamp}'和'match => [“@ timestamp”,“ISO8601”]'然后再试一次吗?可能是因为这个。 – baudsp
会试一试,让你知道它是怎么回事。@baudsp – Akash