【问题标题】:Logstash (Extractic parts of fields using regex)Logstash(使用正则表达式的字段的提取部分)
【发布时间】:2019-02-12 07:12:24
【问题描述】:

我正在使用Kafka插件将数据从kafka输入到logstash。

input {
    kafka {
        bootstrap_servers => ["{{ kafka_bootstrap_server }}"]
        codec => "json"
        group_id => "{{ kafka_consumer_group_id }}"
        auto_offset_reset => "earliest"
        topics_pattern => ".*" <- This line ensures it reads from all kafka topics
        decorate_events => true
        add_field => { "[@metadata][label]" => "kafka-read" }

    }
}

kafka 主题的格式为 摄取 abc & 摄取-xyz

我使用以下过滤器通过设置 [@metadata][index_prefix] 字段来指定它应该结束的 ES 索引。

filter {
    mutate {
        add_field => { 
                       "[@metadata][index_prefix]" => "%{[@metadata][kafka][topic]}"
                     }
        remove_field => ["[kafka][partition]", "[kafka][key]"]
    }
    if [message] {
        mutate {
          add_field => { "[pipeline_metadata][normalizer][original_raw_message]" => "%{message}" }
        }
    }
}

所以我的 es 索引最终是
摄取-abc-YYYY-MM-DD
摄取-xyz-YYYY-MM-DD

如何将 index_prefix 设置为 abc-YYYY-MM-DD & xyz-YYYY-MM-DD 通过摆脱 commong 摄取前缀

与之匹配的正则表达式是:(?!ingest)\b(?!-)\S+ 但我不确定它在配置中的位置。

谢谢!

【问题讨论】:

  • 考虑更新问题以澄清它。举一个你期望的输入和输出的例子。你想如何“使用正则表达式”?在 grok 过滤器中?
  • 当然,让我用一个更清晰的例子来澄清这一点
  • 写得更详细了,希望对您有所帮助:)

标签: elasticsearch logstash elastic-stack logstash-grok logstash-configuration


【解决方案1】:

好的,我想知道是否有人偶然发现了类似的问题, 我基本上使用了 gsub 过滤器而不是过滤器和 grok,

这会将任何匹配的文本替换为参数 3 中传递的文本

filter {
    mutate {
        rename => { "[@metadata][kafka]"  => "kafka"}
        gsub => [ "[@metadata][index_prefix]", "ingest-", "" ]
    }
}

【讨论】:

    猜你喜欢
    • 2013-07-18
    • 2011-07-12
    • 2018-11-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多