组合形式:
redis里面的日志信息以队列(list)的形式存储,那么每次redis里面存储多少,有人消费就会减少多少
filebeat采集(log-->filebeat-->redis-->logstash-->es)
## 采用stdin进行测试- input_type: stdin#-------------- Redis output --------------output.redis: hosts: ["192.168.100.34"] port: 6379 key: "shopweb"
data_type: "list"
logstash采集(log-->logstash-->redis-->logstash-->es)
input { stdin { codec => "json" type => "nginx" }}output { redis { host => "192.168.100.34"
data_type => "list"
key => "shopweb"
port => 6379 }}
后端logstash读取redis
input { redis { host => "192.168.100.34" port => 6379 key => "shopweb"
data_type => "list"
}}output { stdout { codec => rubydebug }}
后端读取结论: 只有在前端以logstash解析存入redis的结果才能读取还原原始字段, 而filebeat写入时嵌套了hash导致不能直接解析
filebeat解析日志保存到redis后,使用logstash再次读取后,原有所有信息保存在message字段中,为正确提取原始的字段信息,需要对message再次解码。这里需要使用fliter:json
filter {
json {
source => “message”
remove_field => [“beat”, “message”]
}
}
解析后删除原有message字段和filebeat自动增加的beat字段。