首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Logstash配置缺少异常日志的最后一个异常

Logstash配置缺少异常日志的最后一个异常
EN

Stack Overflow用户
提问于 2014-11-30 19:32:04
回答 2查看 791关注 0票数 0

我使用logstash来解析异常日志,这些日志通过TCP通过网络发送。因为异常日志是多行的,所以我使用多行过滤器来解析数据。不幸的是,发送的最后一个异常日志没有被识别,因为logstash不知道它在哪里结束(由于多行模式)。有没有可能认出它的终点呢?异常的结尾可以是任何东西(那么如何进行正则表达式呢?)或者,有没有可能知道,因为TCP流结束了,这意味着异常也到达了它的末尾?

下面是我的logstash配置文件:

代码语言:javascript
复制
input { 
    tcp {
        port => 1337
        type => "exception"
    } 
}
filter {
    if [type] == "exception" {
        multiline {
            pattern => "%{TIMESTAMP_ISO8601}"
            negate => true
            what => previous
        }
        grok {
            match => ["message", "%{TIMESTAMP_ISO8601:timestamp} %{LOGLEVEL:log_level} \(%{INT:log_level_code}\): exception '%{DATA:exception_name}' with message '%{DATA:exception_message}' in %{PATH:path} Stack trace: %{GREEDYDATA:stack_trace}"]
            remove_field => ["log_level", "log_level_code", "host"]
        }
        date {
            match => ["timestamp", "ISO8601"]
        }  
    }
}
output {
    elasticsearch { host => localhost }
    stdout {}
}

下面是一个通过TCP发送异常的示例PHP脚本:

代码语言:javascript
复制
<?php
$content = "2014-11-25T20:11:55+00:00 ERR (3):
exception 'Exception' with message 'some error' in /private/var/www/index.php:88
Stack trace:
#0 {main}
2014-11-25T20:11:56+00:00 ERR (3):
exception 'Exception' with message 'some error' in /private/var/www/index.php:88
Stack trace:
#0 {main}";

$fp = stream_socket_client("tcp://127.0.0.1:1337", $errno, $errstr, 30);
if (!$fp) {
    echo "$errstr ($errno)<br />\n";
} else {
    fwrite($fp, $content);
    fclose($fp);
}

运行此示例将只将第一个异常识别为事件日志。一旦下一个时间戳到达,就会识别第二个异常,在这种情况下,当数据流结束时不会识别第二个异常。

EN

回答 2

Stack Overflow用户

发布于 2014-12-01 04:07:12

多行编解码器不支持刷新最后一个事件。多行过滤器有一个enable_flush参数,但它被列为不用于生产。

可悲的是,唯一的解决方案是有更多的例外:)

票数 1
EN

Stack Overflow用户

发布于 2015-03-28 07:25:34

1.5.0 (当前作为RC提供)更正了此问题,但仅适用于多行过滤器。Original JIRA bugclosed GitHub issue.

我也遇到了同样的问题,恰巧发生在Jira/GitHub的讨论中。它花了几次尝试,但我确实让它工作了。我建议您在等待flush事件发生时要有耐心--它会等待几秒钟。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27212746

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档