是否可以在归档日志消息之前对其进行过滤?

是否可以在归档日志消息之前对其进行过滤?

我有各种类型的日志,它们都集中在一起journald。其中很多都没什么意思,我可以尝试在源头过滤它们,但这并不总是可行的。此外,有些在给定级别内很有趣,而有些则不然。

有没有办法用 过滤journald记录的事件。我特别感兴趣的是拒绝已知的模式,而不是接受一些。

有没有其他好的替代方法,如果不可行的话?(我正在考虑将事件转发到 logstash 并删除不太有趣的事件)

答案1

有没有办法使用 journald 过滤已记录的事件。我特别感兴趣的是拒绝已知模式,而不是接受某些模式。

journald(实际上,systemd-journald)是负责事件记录的守护进程。默认情况下,它不进行任何过滤,只是接受事件并存储它们。

如果您希望 journald 过滤掉一些消息,您可以设置MaxLevelStore,按日志级别进行过滤,或者LogFilterPatterns按应用于消息的模式进行过滤 - 这可能是您想要的。请参阅journald.conf 文档了解详情。您还可以通过设置LogLevelMax和过滤单个 systemd 单元LogFilterPatterns- 请参阅systemd.exec 文档

另一种方法是在显示日志时进行过滤,使用journalctljournalctl 可以让你以多种方式进行过滤,例如通过 systemd 单元:

journalctl -u nginx.service

但是,大多数过滤器都不允许否定,因此它们会选择消息,而不是排除它们。要排除特定消息,您可以使用与--grep正则表达式匹配的选项,方法是制作一个正则表达式来排除您不想要的内容。

有没有其他好的替代方法,如果不可行的话?(我正在考虑将事件转发到 logstash 并删除不太有趣的事件)

这可能是一个选择(尽管对于仅阅读日志来说,这可能有点过头了)。您也可以安装一个日志查看器,例如格雷洛格

如果您想要一个简单、快速的解决方案,您也可以使用选项将日志转储到文件中--output=...,然后使用您选择的工具进行处理。您可以转储各种文本格式或 JSON。如果您用 Perl、Python 或任何其他语言编写快速脚本来解析并过滤 JSON,JSON 尤其可以允许复杂的后处理。

相关内容