pgpool 日志的 Logstash grok 模式

Logstash grok pattern for pgpool logs

我在为所有日志找到正确的 grok 模式以便通过 logstash 解析所有日志时遇到问题。

我的日志示例:

1) 2016-04-13 19:55:40: pid 21950: 日志: pool_send_and_wait: 来自后端的错误或通知消息: : DB 节点 id: 4 后端 pid: 65156 语句: "UPDATE certname......"...(日志的其余部分无关紧要)

2) 2016-04-13 19:55:40: pid 17555: 致命: 无法从后端读取类型

我的 grok 模式(部分有效):

神交{ match => { "message" => "%{GREEDYDATA:logdate}: pid %{NUMBER:pid}: %{LOGLEVEL:loglevel}: %{GREEDYDATA:logmessage}" } }

如您所见,这些是我关心的事情: 1)日志的日期 2)PID 3)日志级别 4) 消息本身

除了上面的模式,我还尝试使用 \A%{TIMESTAMP_ISO8601:timestamp} 模式指定日期(就像 grok 调试器建议我的那样)。

我的假设是第一个日志是我有问题的日志,因为它在其中两次出现 "log" 这个词,虽然在第二次它没有出现在冒号之后(不像我的grok 模式)所以我不知道为什么它会失败解析操作。

事实上,我的不包含单词 "log" 的日志已成功解析两次 - 我的模式部分有效。

谢谢:)

制作 grok 模式的诀窍是从左边开始,让第一个工作,然后慢慢向右移动,直到完成。

这样做,您会发现它在您添加 %{LOGLEVEL} 时停止工作。为什么?因为 "LOG" 对 LOGLEVEL 无效。它期待 DEBUG 等东西。改用 %{WORD} 之类的东西,它工作正常。