Logstash从kafka获取数据写入ES失败

2018-09-07  本文已影响666人  junpassion

背景
搭建好了6.2.4版本的ELK集群,从另外一个kafka集群中获取topic中的数据,写入到ES中,出现了两个问题,第一:从kafka集群获取数据失败;第二:能够获取到数据,但是写入ES,一直报错如下:

Attempted to send a bulk request to Elasticsearch configured at '["http://localhost:9200/"]', but an error occurred and it failed! Are you sure you can reach elasticsearch from this machine using the configuration provided? {:error_message=>"[406] {"error":"Content-Type header [text/plain; charset=ISO-8859-1] is not supported","status":406}", :error_class=>"Elasticsearch::Transport::Transport::Errors::NotAcceptable"

分析

问题1:从kafka集群获取数据失败
现象是:logstash启动成功,控制台没有打印message的日志,去Kibana上查看index,发现index也没有创建成功。排查方式如下:

<<既然是kafka插件不兼容的问题,查看了官网,支持0.9的,下载了logstash2.4版本安装,配置如下>>

input {
     kafka {
        zk_connect => "datastream0.lt.org:2181,datastream1.lt.org:2181,datastream2.lt.org:2181/kafka_online"
        auto_offset_reset => "smallest"
        group_id => "logstash23"
        topic_id => "datastream.novel"
        codec => "json"
        reset_beginning => "true"
        }
}
filter {
    grok {
        match => { "message" => "%{COMBINEDAPACHELOG}"}
    }
    geoip {
        source => "clientip"
    }
}
output {
         stdout {  }
         elasticsearch {
                hosts => "esIp:port"
                index => "exception-%{YYYY.MM.dd}"
        } 
}

问题2:写入ES,报错406,NotAcceptable
现象是:使用了Logstash2.4的版本号,从0.9版本的kafka集群可以获取到数据,控制台有打印,但是写入ES一直报错。注:本地ES是6.2.4的,已有业务运行其上。
出现这个错误的原因是因为Logstash2.4和ES6.2.4无法兼容。也曾尝试将logstash6.2.4版本的kafka插件降为2.0.9(logstash2.4使用的kafka插件),但是因为在更新插件过程中,会和logstash-core-plugin-api不兼容,出现很多冲突,也不能解决这个问题。

综上所述:

解决方案:

经验总结:

server.port: 5601 
server.host: "10.171.xxx.yyy"   //这个是外部浏览器访问的地址
elasticsearch.url: "http://esIp:9200" //这个是集群内部通信的
上一篇下一篇

猜你喜欢

热点阅读