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常见数据清洗配置
最新推荐文章于 2024-05-16 05:11:44 发布