Logstash(使用正则表达式提取部分字段)
Logstash (Extractic parts of fields using regex)
我正在使用 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- prefix
匹配的正则为:(?!ingest)\b(?!-)\S+
但我不确定它在配置中的位置。
谢谢!
好的,所以我想通了,如果有人遇到过类似的问题,
我基本上使用 gsub 过滤器而不是过滤器和 grok,
这会将任何匹配的文本替换为参数 3 中传递的文本
filter {
mutate {
rename => { "[@metadata][kafka]" => "kafka"}
gsub => [ "[@metadata][index_prefix]", "ingest-", "" ]
}
}
我正在使用 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- prefix
匹配的正则为:(?!ingest)\b(?!-)\S+
但我不确定它在配置中的位置。
谢谢!
好的,所以我想通了,如果有人遇到过类似的问题, 我基本上使用 gsub 过滤器而不是过滤器和 grok,
这会将任何匹配的文本替换为参数 3 中传递的文本
filter {
mutate {
rename => { "[@metadata][kafka]" => "kafka"}
gsub => [ "[@metadata][index_prefix]", "ingest-", "" ]
}
}