如何使用 imfile 模块从记录中仅选择特定日志?

如何使用 imfile 模块从记录中仅选择特定日志?

我们有一个 Logstash 代理,它将其内部日志以固定格式写入文件(一条消息写在一行中,这里将其格式化以便于阅读):

{
    :timestamp => "2015-08-20T18:24:07.458000+0300",
    :message => "SIGINT received. Shutting down the pipeline.",
    :level => :warn
}

我必须rsyslog读取文件,获取日志:level => :error并将其发送到某个地方。我使用了图像文件模块,配置如下:

module(load="imfile")

input(type="imfile"
        file="/path/to/log_file"
        tag="logstash:"
        statefile="/path/to/state_file"
        severity="error"
        ruleset="logstash_internal")

ruleset(name="logstash_internal"){
        # Some action goes here
         ...
}

我如何才能从日志文件中仅选择错误记录而不是全部?

答案1

我看到这里有两个选择:

  • 肮脏但简单的方法:只需抛出一个如果 ($msg 包含“错误”)希望没有包含“错误”的消息,但这不是真正的错误
  • 简洁但更复杂的方法:使用以下方法解析 Logstash 中的日志(或至少解析到该级别的部分日志)规范化然后对解析的级别属性进行过滤。你可以像使用 Logstash 的 grok 一样使用 mmnormalize,尽管内部结构有很大不同

相关内容