我一直在关注本指南:
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&grok一起工作了几个星期,我可能不会以最明智的方式做这件事。我希望能够将示例日志条目放入shell并将JSON格式的logstash条目添加到我的控制台,以便我可以看到我的过滤器是否正常工作,并标记它们,因为它们将在kibana中显示结束。如果有更好的方法,请告诉我。
我正在使用logstash 1.4.2
至于调试一个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"
}
}
Grokconstructor是一个类似于Grokdebug的Grok调试器,@ user3195649提到了。我喜欢它的随机例子。