logstash从kafka取数据输出到es,logstash中的match可以改成日志的正则信息
input {
kafka {
bootstrap_servers => ["192.168.13.139:9092"] #kafkaip地址,如果是集群就填写集群ip
client_id => "test"
group_id => "test"
auto_offset_reset => "latest" ##从最新的偏移量开始消费
consumer_threads => 5 #消费的线程数
decorate_events => true #在输出消息的时候回输出自身的信息,包括:消费消息的大小、topic来源以及consumer的group信息
topics => ["hbtest"] #传送给kafka信息的值,在filebeat设置的
type => "bhy" #别名,多种输入可以用if多种过滤和输出判断,最好加上
codec => "json" #json格式
}
}
filter {
grok {
match => {"message"=>"%{COMBINEDAPACHELOG}"}
}
}
output {
elasticsearch {
hosts => ["192.168.13.139:9200"]
index => "%{app_name}-%{+YYYY.MM.dd}"
}
}
logstash收到的kafka的数据如何提取
默认kibana显示的是
message显示的信息显然不是我们想要的,这样如何logstash提取呢,这个只能在filebeat抓取中过滤,传送给kafka的信息是正常的日志信息,这样我们就可以在logstash使用gork过滤了,如果filebeat传送给kafka的信息是错误的,那么我们无论在logstash过滤都是错误的
解决办法
在filter中先使用json对message解析一次(此message实际是最外层的message,并非真正的题主想要的message)
json {
source => "message"
}