尝试在 Graylog 中使用提取器,我找不到将模式匹配限制为一个源的方法。
基本上我会进行 split&Index 搜索以提取字段,但我希望此提取器仅用于我的源的子集。文档似乎对此很差。
任何的想法 ?
谢谢洛伊克
似乎这不是一件容易的事。有两种选择:管道和单独的输入。显然,如果您在不同的输入中捕获不同的源,那么您可以防止这个问题。
第二种解决方案是使用管道(从 v2 开始)。这是作者确认这一点:
从 Graylog 2.0 开始,这可以通过使用管道规则来实现。 http://docs.graylog.org/en/2.1/pages/pipelines.html
ps我认为可能可以存储并从完整消息中提取,但不知道如何在提取之前先剪切 json。来自 docker 容器的示例消息可能如下所示(通过 syslog 将日志发送到 Graylog):
<30>1 2016-11-26T22:22:38.951321+01:00 www.example.com docker 19459 - - {"name":"my-awesome-app","hostname":"docker24.example.com","pid":1,"level":30,"msg":"happily serving customers","time":"2016-11-26T21:22:38.950Z"}
所以整个字段不是正确的 JSON,Graylog JSON 提取器会失败。您在这里有您的源代码 - www.example.com
,因此可以将提取器配置为仅在匹配时运行,但问题是如何仅解析 JSON 部分..