在完全使用之前调试新的logstash grok过滤器

时间:2014-10-31 16:39:16

标签: logstash logstash-grok

我一直在关注本指南:

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

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提到了这一点。我喜欢它的随机例子。