寻找一些帮助入门......我安装了Logstash(以及ElasticSearch),但我正在努力使用我的第一个过滤器。
作为测试,我将其配置为从包含6行的修剪日志文件中读取,每行以时间戳开头,例如 [11/5/13 4:09:21:327 PST] < / strong>后跟一堆其他数据。
现在我将我的conf文件设置为读取此文件,我正在尝试使用非常基本的grok过滤器来匹配行,可能是为了获取时间戳,然后是其他数据(从哪里可以开始)把它分开了。)
这就是我所拥有的:
input {
file {
type => "chris"
path => "/home/chris/Documents/test.log"
}
}
filter {
grok {
type => "chris"
pattern => "%{GREEDYDATA:logline}"
}
}
output {
stdout {debug => true debug_format => "json"}
}
我有点期待(希望)当我运行Logstash它匹配每一行并输出它,然后我可以开始打破线并过滤我调整模式但是因为我不能得到这个第一个基本有点工作我有点难过。
有没有人有类似的配置文件,他们可以分享?我能找到的大多数例子都比较先进,而且我似乎被困在试图走出大门。
谢谢,
克里斯。
答案 0 :(得分:12)
开始删除过滤器的内容。
logstash grok过滤器插件的当前版本(1.3.2)的文档在这里 http://logstash.net/docs/1.3.2/filters/grok
确保您正在查看已下载的logstash版本的正确文档版本。
示例Grok过滤器将是:
filter {
grok {
match => [ "message", "%{IP:client} %{WORD:method} %{URIPATHPARAM:request} %{NUMBER:bytes} %{NUMBER:duration}" ]
}
}
但这不太可能与您的数据相符。
“message”是整个日志最终的默认字段,因此对您来说也是一个不错的选择。
下一部分通过读取日志和匹配部分与预定义的Grok模式(如IP,WORD等)创建5个新字段,客户端,方法,请求,字节和持续时间。您需要更改。< / p>
从
开始filter {
grok {
match => [ "message", "%{GREEDYDATA:logline}" ]
}
}
实际上只是将消息字段复制到单独的日志字段中,但是可以从哪里开始。当您向过滤器添加更多Grok模式时,日志字段将只包含任何不是grokked的内容。
您可以在此处测试您的Grok模式 http://grokdebug.herokuapp.com/
您可能希望使用grok过滤器将时间戳记录到它自己的字段中,然后使用日期过滤器将其实际用作日志时间戳。
filter {
grok {
match => [ "message", "%{TIMESTAMP_ISO8601:syslog_timestamp} %{GREEDYDATA:syslog5424_msg}" ]
}
date {
match => [ "syslog_timestamp", "ISO8601" ]
}
}
TIMESTAMP_ISO8601以非常详细的格式(http://grokdebug.herokuapp.com/patterns#)匹配时间戳,这可能不适合您。
ISO8601与日期过滤器预设的格式相同,您可能需要在此处手动指定日期格式。 查看文档: http://logstash.net/docs/1.3.2/filters/date