多个 Grok 过滤器不存储第一个过滤器匹配记录

2024-03-28

我正在使用 Logstash 来解析 postfix 日志。我主要关注从后缀日志获取退回的电子邮件日志,并将其存储在数据库中。

为了获取日志,首先我需要找到 postfix 生成的与我的消息 ID 相对应的 ID,然后使用该 ID,我需要查找电子邮件的状态。对于以下配置,我能够获取日志。

grok {
       patterns_dir => "patterns"
       match => [
            "message", "%{SYSLOGBASE} %{POSTFIXCLEANUP}",
            "message", "%{SYSLOGBASE} %{POSTFIXBOUNCE}"
        ]
        named_captures_only => true
    }

我使用以下 if 条件来存储与模式匹配的日志:

if "_grokparsefailure" not in [tags] {
   #database call
}

正如您所看到的,我使用两种模式从一个日志文件中查找相应的两个不同日志。

现在,我想根据标签区分这两种模式。所以我修改了我的配置如下:

  grok {
       patterns_dir => "patterns"
       match => [
            "message", "%{SYSLOGBASE} %{POSTFIXBOUNCE}"
        ]
        add_tag => ["BOUNCED"]
        remove_tag => ["_grokparsefailure"]
        named_captures_only => true
    }

    grok {
       patterns_dir => "patterns"
       match => [
            "message", "%{SYSLOGBASE} %{POSTFIXCLEANUP}"            
        ]
        add_tag => ["INTIALIZATION"]
        remove_tag => ["_grokparsefailure"]
        named_captures_only => true
    }

现在,它仅存储 %{POSTFIXCLEANUP} 模式日志。如果我颠倒顺序,它只存储 %{POSTFIXBOUNCE} 模式。

因此,在删除该 if 条件后,我发现从第一个过滤器解析的消息具有“_grokparsefailure”标签和第一个过滤器标签,因此它不存储该记录。

谁能告诉我需要做什么来纠正这个问题?我有什么错误吗?


您需要保护第二个 grok 块——即,如果第一个块成功,则不要执行它。

if ("BOUNCED" not in [tags]) {
  grok {
    patterns_dir => "patterns"
    match => [
        "message", "%{SYSLOGBASE} %{POSTFIXCLEANUP}"            
    ]
    add_tag => ["INTIALIZATION"]
    remove_tag => ["_grokparsefailure"]
    named_captures_only => true
  }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

多个 Grok 过滤器不存储第一个过滤器匹配记录 的相关文章

  • 这些日志的 grok 模式应该是什么? (摄取 filebeat 的管道)

    我是 elasticsearch 社区的新人 我希望您能帮助我解决一些我遇到的困难 我的目标是使用 Filebeat 将大量日志文件发送到 Elasticsearch 为了做到这一点 我需要使用带有 Grok 模式处理器的摄取节点来解析数据
  • Logstash不处理filebeat发送的文件

    我已经使用 docker 设置了 elk 堆栈基础设施 我看不到 Logstash 正在处理的文件 Filebeat 配置为将 csv 文件从logstash 发送到logstash 再发送到elasticsearch 我看到logstas
  • 从 activemq 主题获取消息时,logstash 输入速度非常慢

    我已经在logstash中配置了JMS输入来订阅JMS主题消息并将消息推送到弹性搜索 input jms id gt my first jms yaml file gt D softwares logstash 6 4 0 config j
  • Logstash 可以同时处理多个输出吗?

    我对 Logstash 和弹性搜索很陌生 我正在尝试将日志文件存储在elasticsearch 和平面文件中 我知道logstash 支持这两种输出 但它们是同时处理的吗 还是通过工作定期完成 是的 您可以通过使用托运人配置上的 add t
  • 使用 Logstash CSV 过滤器不起作用

    我试图在 Logstash 上使用 CSV 过滤器 但它可以上传我的文件的值 我正在使用 Ubuntu Server 14 04 kibana 4 logstash 1 4 2 和 elasticsearch 1 4 4 接下来 我将展示我
  • Logstash 索引文本文件

    我想在 Elasticsearch 中导入一个文本文件 该文本文件每行包含 3 个值 经过几个小时的努力 我还是没有完成 非常感谢您的帮助 安装了 Logstash 的 Elasticsearch 5 4 0 样本数据 username e
  • Kibana Logstash ElasticSearch | Kibana Logstash ElasticSearch无法搜索未索引的字段

    我正在探索 ELK 堆栈并遇到一个问题 我已经生成了日志 将日志转发到logstash 日志采用JSON格式 因此它们被直接推送到ES中 仅在Logstash配置中使用JSON过滤器 连接并启动指向ES的Kibana 日志存储配置 filt
  • 在logstash中使用grok解析多行JSON

    我有一个 JSON 格式 SOURCE Source A Model ModelABC Qty 3 我正在尝试使用 Logstash 解析此 JSON 基本上我希望logstash 输出是一个键 值对列表 我可以使用kibana 进行分析
  • 删除包含哈希字符的日志行

    在我的 Logstash 发货程序中 我想过滤掉用哈希字符注释的行 This log row should be dropped But one this should not 我能够使用grep过滤器 但由于不鼓励 即将退役 我试图获得一
  • 如何使用logstash插件-logstash-input-http

    我正在探索 Logstash 以接收 HTTP 上的输入 我已经使用以下方式安装了 http 插件 插件安装logstash input http 安装成功 然后我尝试使用以下命令运行logstash Logstash e 输入 http
  • Logstash 创建和访问数组

    我想在用于设备的 Logstash 配置文件中创建一个数组 然后通过我正在创建的新字段访问该数组值 例子 filter array devicetype gt Cisco ASA Cisco 3750 mutate add field gt
  • Logstash 配置:检查布尔字段是否存在

    使用Logstash 1 4 2 我有一个字段myfield这是我的 JSON 文档中的布尔值 为了检查它是否存在 不关心布尔值 我使用了 if myfield exists else doesn t exist 测试该条件语句的结果是 m
  • Logstash 的 Java 过滤器

    你知道 Logstash 有一个 Ruby 过滤器 它使我能够用 Ruby 编写代码 它通常包含在配置文件中 如下所示 filter ruby code gt 现在我有两个 Jar 文件 我想将它们包含在过滤器中 以便可以根据我在这些 Ja
  • 错误:index_not_found_Exception

    我使用 ELK 堆栈来分析我的日志文件 我上周测试过 一切正常 今天 我进行了测试 但当我输入 http localhost 9200 iot log count http localhost 9200 iot log count iot
  • 适用于 MYSQL 的 Logstash Jdbc 输入插件

    我在 Windows 中使用 Logstash 我无法安装输入 jdbc 插件 因此我手动下载了 zip 文件 并将插件中的logstash 文件夹放入我的logstash 1 5 2 文件夹中 文件夹结构 D elastic search
  • Logstash 过滤器将“$epoch.$microsec”转换为“$epoch_millis”

    我正在尝试转换表单中的时间戳字段 epoch microsec to epoch millis Example 1415311569 541062 gt 1415311569541 Logstash 似乎没有任何乘法的方法 所以ts 100
  • wildfly-logstash 不将日志发送到logstash

    我正在使用 jboss keycloak 11 0 2 和 wildfly logstash https github com kifj wildfly logstash https github com kifj wildfly logs
  • 从logstash中的文件名获取事件的时间戳

    我们有一个将事件写入文件的进程 没有时间戳 文件名本身带有时间戳后缀 该时间戳应用于文件中的所有事件 现在 我尝试使用logstash的输入文件插件来解析该文件 有没有一种方法可以将文件名获取到字段 以便我可以使用 gsub 过滤器提取时间
  • 聚合多个递归logstash

    我正在使用带有输入 jdbc 的 Logstash 并且希望通过聚合将一个对象嵌入到另一个对象中 如何使用添加递归 即在另一个对象中添加一个对象 这是一个例子 index my index type test id 1 version 1
  • Logstash 中的数学函数

    我期待对 Logstash 中收到的输入进行数学运算 但无法看到任何此类操作filter 输入如下 user id User123 date 2016 Jun 26 12 00 12 data doc name mydocs xls doc

随机推荐