ogstash通過插件的形式來配置input,filter,output,在消費數據後,如果需要對數據做處理,需要用到filter的很多功能。最近使用logstash傳遞kafka數據到es時,瞭解了一些logstash處理數據的方式,以下logstash的config做個簡單分享:
input {
kafka {
bootstrap_servers => "xxx.xxx.xxx.xx:9092,yyy.yyy.yyy.yy:9092," ##kafka地址,可以是集羣
client_id => "test_log_consume"
auto_offset_reset => "earliest" ##從最新的偏移量開始消費
topics => ["topic_test"] ## 數組類型,可配置多個topic
decorate_events => true #此屬性會將當前topic、offset、group、partition等信息也帶到message中
consumer_threads => 1 ## 指定消費的線程數,消費單個topic的話,最好和該topic的partition個數一直或小於這個數
codec => "json" ## 獲取到kafka的數據後,如果傳入的是json格式,這裏可以做一個json decode解析
}
}
filter {
mutate {
add_field => { ## 添加字段
"offset" => "%{[@metadata][kafka][offset]}" ## 使用元數據信息添加字段
"patition_id" => "%{[@metadata][kafka][partition]}"
"add_field_1" => "test_add_field" ## 直接寫某些數據添加字段
}
rename => {
"old_key_name_1" => "new_key_name_1" ## 修改字段名字
"old_key_name_2" => "new_key_name_2"
}
}
date {
match => [ "test_time", "yyyy-MM-dd", "UNIX"] ## 將 字段名爲 test_time 格式爲 yyyy-MM-dd 的字段轉換爲unix時間戳,並賦回字段(target可以給其它有或沒有的字段)
target => "test_time"
}
prune { ## 指定要輸出的字段,沒有指定字段的,不輸出那個字段
whitelist_names => [ "offset", "add_field_1", "new_key_name_1", "test"...]
}
}
output {
stdout{
codec => "rubydebug" ##rubydebug ##輸出到屏幕上
}
}
logstash常見數據清洗配置
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.