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

问题描述 投票:6回答:2

我一直在关注本指南:

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

logstash logstash-grok
2个回答
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"
    }
}

5
投票

Grokconstructor是一个类似于Grokdebug的Grok调试器,@ user3195649提到了。我喜欢它的随机例子。

© www.soinside.com 2019 - 2024. All rights reserved.