【问题标题】:Logstash multiline codec for Celery stacktraces用于 Celery 堆栈跟踪的 Logstash 多行编解码器
【发布时间】:2014-04-16 06:50:05
【问题描述】:

尝试为 logstash 创建一个配置,以正确解析 Celery 的日志格式,包括多行堆栈跟踪。日志输出的示例可能如下所示:

[2014-04-15 15:11:27,350: DEBUG/Worker-4] Doing some work.
[2014-04-15 15:11:27,362: ERROR/MainProcess] Task core.tasks.sometask[92dc34bd-8139-4f98-b359-d78caf68381d] raised unexpected: ValueError('Foobar',)
Traceback (most recent call last):
  File "./venvs/backend-33/lib/python3.4/site-packages/celery/app/trace.py", line 238, in trace_task
    R = retval = fun(*args, **kwargs)
  File "./venvs/backend-33/lib/python3.4/site-packages/celery/app/trace.py", line 416, in __protected_call__
    return self.run(*args, **kwargs)
  File "util.py", line 151, in wrapper
    rv = func(self, *args, **kwargs)
  File "tasks.py", line 104, in do_something_useful
    raise ValueError('Foobar')
ValueError: Foobar

在某个时候,我让 Grok 准备好解析单行输出,但多行是个问题。这个配置:

input {
    stdin {
        codec => multiline {
            'negate' => true
            'pattern' => '^\['
            'what' => 'previous'
        }
    }
}

output {
    stdout { 
        codec => rubydebug
    }
}

或多或少直接取自多行编解码器的 Logstash 文档,当我运行它时,它根本不会产生任何输出。

我尝试使用多行过滤器,但产生了相同的结果,我还尝试使用 --verbose 运行 logstash,但它没有提供任何有用的信息。这是怎么回事?

【问题讨论】:

  • 使用您的日志和配置,我可以使用 logstsash-1.3.3。
  • 我只用 logstash-1.4.0 尝试过,文件输入就像一个魅力。
  • multine 过滤器应该忘记了,它与编解码器严格相同但不是多线程的(即:性能很差)

标签: python celery logstash


【解决方案1】:

经过一番谷歌搜索后,我找到了答案,显然多行编解码器与 stdin 输入不兼容。使用文件输入,现在它可以工作了。

见:https://logstash.jira.com/browse/LOGSTASH-1629

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-04-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-07
    相关资源
    最近更新 更多