python - 用于 Celery 堆栈跟踪的 Logstash 多行编解码器

标签 python celery logstash

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

[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,但它没有提供任何有用的信息。这是怎么回事?

最佳答案

经过更多的谷歌搜索后,我找到了答案,显然多行编解码器不能很好地处理标准输入。使用文件输入,现在可以了。

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

关于python - 用于 Celery 堆栈跟踪的 Logstash 多行编解码器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23102041/

相关文章:

python - 我可以让 PyC​​harm 的 Python 控制台访问调试上下文吗?

Python:强制每个导入重新加载

amazon-web-services - Celery 在 AWS Elastic Beanstalk 上启动时意外退出

python - 如何让 Celery 工作人员返回任务结果

mysql - ES + Logstash + MySQL 如何在更新、添加或删除数据时实现索引的实时更新?

elasticsearch - Logstash多行未将消息分组

html - 从Logstash输入中删除HTML标记

python - 尝试在 Python 中从头开始打印目录系统树(无导入模块)

python - 是否可以在不使用 cfx 的情况下打包 Firefox SDK 附加组件?

python - Celery 使用来自 python 的 -Ofair 运行 worker