我一直在关注本指南:
http://deviantony.wordpress.com/2014/06/04/logstash-debug-configuration/
我希望能帮助我测试我的logstash过滤器,看看我是否在全职使用它之前获得了所需的输出。
作为指南的一部分,它告诉您设置输入和输出,然后设置过滤器文件。输入似乎工作正常:
input {
stdin { }
}
输出是这样的:
output {
stdout {
codec => json
}
file {
codec => json
path => /tmp/debug-filters.json
}
}
当我尝试运行logstash进程时,我收到以下错误(这里我用--configtest运行它,因为错误建议我尝试一下,但它没有提供更多信息):
# /opt/logstash/bin/logstash -f /etc/logstash/debug.d -l /var/log/logstash/logstash-debug.log --configtest
Sending logstash logs to /var/log/logstash/logstash-debug.log.
Error: Expected one of #, ", ', -, [, { at line 21, column 17 (byte 288) after output {
stdout {
codec => json
}
file {
codec => json
path =>
我已经尝试删除输出中的文件部分,我可以运行logstash进程,但是当我将日志行粘贴到shell时,我没有看到分解为组件的日志条目我期待着grok过滤器将其打破。我这样做的全部是:
Oct 30 08:57:01 VERBOSE[1447] logger.c: == Manager 'sendcron' logged off from 127.0.0.1
{"message":"Oct 30 08:57:01 VERBOSE[1447] logger.c: == Manager 'sendcron' logged off from 127.0.0.1","@version":"1","@timestamp":"2014-10-31T16:09:35.205Z","host":"lumberjack.domain.com"}
最初我遇到了一个新的grok过滤器的问题,所以我现在尝试使用我知道可行的现有过滤器(如上图所示它是Asterisk 1.2过滤器)并且已经在elasticsearch中生成了一段时间的条目
我尝试触摸输出中提到的json文件,但这没有帮助。
当我拖尾logstash-debug.log时,我只看到同样写入我的shell的错误。
任何有关调试grok过滤器的建议都会受到赞赏,如果我错过了一些令人眼花缭乱的事情,道歉,我只是在使用ELK& amp; grok几个星期,我可能不会以最明智的方式做这件事。我希望能够将示例日志条目放入shell并将JSON格式的logstash条目添加到我的控制台,以便我可以看到我的过滤器是否正常工作,并标记它们,因为它们将在kibana中显示结束。如果有更好的方法,请告诉我。
我正在使用logstash 1.4.2
答案 0 :(得分:9)
至于调试grok过滤器,你可以使用这个链接(http://grokdebug.herokuapp.com/)它有一个非常全面的模式检测器,这是一个良好的开端。
就您的文件输出而言,您的路径需要""
。这是我在生产中使用的例子。以下是文件输出http://logstash.net/docs/1.4.2/outputs/file#path
output {
stdout {
codec => rubydebug
}
file {
codec => "plain"
path => "./logs/logs-%{+YYYY-MM-dd}.txt"
}
}
答案 1 :(得分:5)
Grokconstructor是类似于Grokdebug的Grok调试器,@ user3195649提到了这一点。我喜欢它的随机例子。