排查Logstash2.4升级到5.0版本后Kafka不兼容问题(2)

3)开始看README.md文档,特意看了下kafka的兼容性 看来logstas-input-kafka5.0.5和logstash-output-kafka5.0.4只能用kafka0.10了。如果你想用Kafka0.9还想用Logstash5.0,你的

logstash-input-kafka和logstash-output-kafka只能降级版本到4.0.0了,这里都说他是中间过渡版本了,所以还是随大流吧。

## Kafka Compatibility
Here's a table that describes the compatibility matrix for Kafka Broker support. Please remember that it is good advice to upgrade brokers before consumers/producers
since brokers target backwards compatibility. The 0.9 broker will work with both the 0.8 consumer and 0.9 consumer APIs but not the other way around.
| Kafka Broker Version | Logstash Version | Input Plugin | Output Plugin | Why? |
|:---------------:|:------------------:|:--------------:|:---------------:|:------|
| 0.8          | 2.0 - 2.x  | < 3.0.0 | <3.0.0 | Legacy, 0.8 is still popular |
| 0.9          | 2.0 - 2.3.x  |  3.0.0 | 3.0.0  | Intermediate release before 0.10 that works with old Ruby Event API `[]`  |
| 0.9          | 2.4, 5.0          |  4.0.0 | 4.0.0  | Intermediate release before 0.10 with new get/set API |
| 0.10        | 2.4, 5.0          |  5.0.0 | 5.0.0  | Track latest Kafka release. Not compatible with 0.9 broker |

4)现在看来只能升级kafka版本了。最后我看了下jar-dependencies发现了kafka-clients-0.10.0.1.jar

ls /usr/share/logstash/vendor/bundle/jruby/1.9/gems/logstash-input-kafka-5.0.5/vendor/jar-dependencies/runtime-jars/
kafka-clients-0.10.0.1.jar  log4j-1.2.17.jar  lz4-1.3.0.jar  slf4j-api-1.7.21.jar  slf4j-log4j12-1.7.21.jar  snappy-java-1.1.2.6.jar

5)还有一个文件没有看,怀着好奇心我看了一眼,发现之前都白费力气了,这里才是最有参考价值的的主参考文档啊,是捷径啊,隐藏的够深的,差点错过了,汗!

/usr/share/logstash/vendor/bundle/jruby/1.9/gems/logstash-input-kafka-5.0.5/lib/logstash/inputs/kafka.rb

kafka.rb部分文档如下:

# This input will read events from a Kafka topic. It uses the the newly designed
# 0.10 version of consumer API provided by Kafka to read messages from the broker.
#
# Here's a compatibility matrix that shows the Kafka client versions that are compatible with each combination
# of Logstash and the Kafka input plugin:
#
# [options="header"]
# |==========================================================
# |Kafka Client Version |Logstash Version |Plugin Version |Security Features |Why?
# |0.8      |2.0.0 - 2.x.x  |<3.0.0 | |Legacy, 0.8 is still popular
# |0.9      |2.0.0 - 2.3.x  | 3.x.x |Basic Auth, SSL |Works with the old Ruby Event API (`event['product']['price'] = 10`) 
# |0.9      |2.4.0 - 5.0.x  | 4.x.x |Basic Auth, SSL |Works with the new getter/setter APIs (`event.set('[product][price]', 10)`)
# |0.10      |2.4.0 - 5.0.x  | 5.x.x |Basic Auth, SSL |Not compatible with the 0.9 broker
# |==========================================================
#
# NOTE: We recommended that you use matching Kafka client and broker versions. During upgrades, you should
# upgrade brokers before clients because brokers target backwards compatibility. For example, the 0.9 broker
# is compatible with both the 0.8 consumer and 0.9 consumer APIs, but not the other way around.

6)升级kafka_2.10-0.8.2.2.tgz为kafka_2.11-0.10.0.1.tgz (我看kafka-clients-0.10.0.1.jar,所以没有用最新的kafka_2.11-0.10.1.0.tgz)

大概步骤

关闭老kafka

/usr/local/kafka/bin/kafka-server-stop.sh /usr/local/kafka/config/server.properties

备份老配置文件

server.properties和zookeeper.properties

删除kafka

rm -rf /usr/local/kafka/

rm -rf /data/kafkalogs/*

安装配置新kafka

wget

tar zxvf kafka_2.11-0.10.0.1.tgz -C /usr/local/

ln -s /usr/local/kafka_2.11-0.10.0.1 /usr/local/kafka

diff了下server.properties和zookeeper.properties变动不大可以直接使用

启动新kafka

/usr/local/kafka/bin/kafka-server-start.sh /usr/local/kafka/config/server.properties &

7)注意几个关键配置需要修改

config :bootstrap_servers, :validate => :string, :default => "localhost:9092"

config :group_id, :validate => :string, :default => "logstash"

config :topics, :validate => :array, :default => ["logstash"]

config :consumer_threads, :validate => :number, :default => 1

除了上面的几个关键配置外,kafka的topic分片信息需要重新create一份,否则KafkaMonitor监控不出Active Topic Consumer图形,但实际是在工作中。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/a88fca1d8274cd76f8d357a65a1169f5.html