排查logstash2.4升級(jí)到5.0版本后kafka不兼容問(wèn)題

排查logstash2.4升級(jí)到5.0版本后kafka不兼容問(wèn)題

參考文檔:

/usr/share/logstash/vendor/bundle/jruby/1.9/gems/logstash-input-kafka-5.0.5/CHANGELOG.md

/usr/share/logstash/vendor/bundle/jruby/1.9/gems/logstash-input-kafka-5.0.5/DEVELOPER.md

/usr/share/logstash/vendor/bundle/jruby/1.9/gems/logstash-input-kafka-5.0.5/README.md.md

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

/usr/share/logstash/vendor/bundle/jruby/1.9/gems/logstash-output-kafka-5.0.4/lib/logstash/outputs/kafka.rb

緣由:

之前對(duì)ELKB環(huán)境從2.4版本升級(jí)到最新的5.0穩(wěn)定版本,主要升級(jí)步驟可以參考http://jerrymin.blog.51cto.com/3002256/1870205还栓,后來(lái)發(fā)現(xiàn)kafka集群運(yùn)行報(bào)錯(cuò)簿煌,現(xiàn)在把排查過(guò)程記錄如下违诗,僅供參考

之前環(huán)境:

logstash2.4

logstash-input-kafka-2.0.9

logstash-output-kafka-2.0.5

kafka_2.10-0.8.2.2.tgz

升級(jí)后環(huán)境:

logstash5.0

logstash-input-kafka-2.0.9

logstash-output-kafka-2.0.5

報(bào)錯(cuò)信息:

[2016-11-16T14:35:44,739][ERROR][logstash.inputs.kafka????]?Unknown?setting'zk_connect'forkafka

[2016-11-16T14:35:44,741][ERROR][logstash.inputs.kafka????]?Unknown?setting'topic_id'forkafka

[2016-11-16T14:35:44,741][ERROR][logstash.inputs.kafka????]?Unknown?setting'reset_beginning'forkafka

實(shí)施步驟:

1榆纽,根據(jù)錯(cuò)誤查看程序哪里報(bào)錯(cuò)

grep"Unknown?setting"/usr/share/logstash/-R

/usr/share/logstash/logstash-core/lib/logstash/config/mixin.rb:??????????self.logger.error("Unknown?setting?'#{name}'?for?#{@plugin_name}")

2吗铐,查看程序相關(guān)代碼,發(fā)現(xiàn)需要查看plugins的config定義文件等

def?validate_check_invalid_parameter_names(params)

invalid_params?=?params.keys

#?Filter?out?parameters?that?match?regexp?keys.

#?These?are?defined?in?plugins?like?this:

#???config?/foo.*/?=>?...

@config.each_keydo|config_key|

ifconfig_key.is_a?(Regexp)

invalid_params.reject!?{?|k|?k?=~?config_key?}

elsif?config_key.is_a?(String)

invalid_params.reject!?{?|k|?k?==?config_key?}

end

end

ifinvalid_params.size?>?0

invalid_params.eachdo|name|

self.logger.error("Unknown?setting?'#{name}'?for?#{@plugin_name}")

end

returnfalse

end#?if?invalid_params.size?>?0

returntrue

end#?def?validate_check_invalid_parameter_names

3急鳄,進(jìn)入插件總目錄查看具體信息

cd ?/usr/share/logstash/vendor/bundle/jruby/1.9/gems/logstash-input-kafka-5.0.5

發(fā)現(xiàn)重點(diǎn)查看如下文件

grepconfig?./*?-R?|awk'{print?$1}'|uniq

./CHANGELOG.md:

./DEVELOPER.md:See

./lib/logstash/inputs/kafka.rb:#

./lib/logstash/inputs/kafka.rb:

./README.md:-

Binary

1)首先看CHANGELOG.md重绷,就有發(fā)現(xiàn)logstash-input-3.0.0.beta1開(kāi)始就不在向后兼容沸停,且剔除了jruby-kafka,注意這里有個(gè)坑2)會(huì)講到昭卓,4.0.0版本說(shuō)開(kāi)始支持kafka 0.9愤钾,5.0.0又說(shuō)開(kāi)始

支持0.10切不向后兼容,這破壞性更新也是夠了候醒∧馨洌看來(lái)問(wèn)題找到了我的kafka版本是kafka_2.10-0.8.2.2.tgz,kafka版本不兼容導(dǎo)致的火焰。

CHANGELOG.md部分文檔如下:

##?5.0.4

-?Update?to?Kafka?version?0.10.0.1forbug?fixes

##?5.0.0

-?SupportforKafka?0.10whichis?not?backward?compatible?with?0.9?broker.

##?4.0.0

-?Republish?all?the?gems?under?jruby.

-?Update?the?plugin?to?the?version?2.0?of?the?plugin?api,?this?change?is?requiredforLogstash?5.0?compatibility.?See?https://github.com/elastic/logstash/issues/5141

-?SupportforKafka?0.9forLS?5.x

##?3.0.0.beta1

-?Refactor?to?use?new?Java?based?consumer,?bypassing?jruby-kafka

-?Breaking:?Change?configuration?to?match?Kafka's?configuration.?This?version?is?not?backward?compatible

2)之前我看DEVELOPER.md文檔時(shí),看配置語(yǔ)法都正確劲装,還以為是卻少依賴(lài)關(guān)系jruby-kafka library呢,這個(gè)再logstash2.x是在用的(另外對(duì)比logstash5.x發(fā)現(xiàn)5版本少了不少插件昌简。另外

kafka版本寫(xiě)的是0.8.1.1占业,看來(lái)這個(gè)DEVELOPER.md沒(méi)有及時(shí)更新(與后面kafka.rb文件不一致),誰(shuí)要是看到了麻煩及時(shí)更新啊纯赎,雖是小問(wèn)題但是也可能誤導(dǎo)我等屁民谦疾。當(dāng)然也有可能是我沒(méi)

有全面看文檔導(dǎo)致的。

DEVELOPER.md文檔結(jié)尾如下:

Dependencies

====================

*?Apache?Kafka?version?0.8.1.1

*?jruby-kafka?library

3)開(kāi)始看README.md文檔犬金,特意看了下kafka的兼容性 看來(lái)logstas-input-kafka5.0.5和logstash-output-kafka5.0.4只能用kafka0.10了念恍。如果你想用Kafka0.9還想用Logstash5.0,你的

logstash-input-kafka和logstash-output-kafka只能降級(jí)版本到4.0.0了,這里都說(shuō)他是中間過(guò)渡版本了晚顷,所以還是隨大流吧峰伙。

##?Kafka?Compatibility

Here's?a?table?that?describes?the?compatibility?matrixforKafka?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/setAPI?|

|?0.10?????????|?2.4,?5.0???????????|???5.0.0?|?5.0.0??|?Track?latest?Kafka?release.?Not?compatible?with?0.9?broker?|

4)現(xiàn)在看來(lái)只能升級(jí)kafka版本了。最后我看了下jar-dependencies發(fā)現(xiàn)了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)還有一個(gè)文件沒(méi)有看该默,懷著好奇心我看了一眼瞳氓,發(fā)現(xiàn)之前都白費(fèi)力氣了,這里才是最有參考價(jià)值的的主參考文檔啊栓袖,是捷徑啊匣摘,隱藏的夠深的,差點(diǎn)錯(cuò)過(guò)了裹刮,汗音榜!

/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)升級(jí)kafka_2.10-0.8.2.2.tgz為kafka_2.11-0.10.0.1.tgz (我看kafka-clients-0.10.0.1.jar,所以沒(méi)有用最新的kafka_2.11-0.10.1.0.tgz)

大概步驟

關(guān)閉老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 http://mirrors.hust.edu.cn/apache/kafka/0.10.0.1/kafka_2.11-0.10.0.1.tgz

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變動(dòng)不大可以直接使用

啟動(dòng)新kafka

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

7)注意幾個(gè)關(guān)鍵配置需要修改

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

除了上面的幾個(gè)關(guān)鍵配置外捧弃,kafka的topic分片信息需要重新create一份赠叼,否則KafkaMonitor監(jiān)控不出Active Topic Consumer圖形,但實(shí)際是在工作中。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末梅割,一起剝皮案震驚了整個(gè)濱河市霜第,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌户辞,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,539評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件癞谒,死亡現(xiàn)場(chǎng)離奇詭異底燎,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)弹砚,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,594評(píng)論 3 396
  • 文/潘曉璐 我一進(jìn)店門(mén)双仍,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人桌吃,你說(shuō)我怎么就攤上這事朱沃。” “怎么了茅诱?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,871評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵逗物,是天一觀(guān)的道長(zhǎng)。 經(jīng)常有香客問(wèn)我瑟俭,道長(zhǎng)翎卓,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,963評(píng)論 1 295
  • 正文 為了忘掉前任摆寄,我火速辦了婚禮失暴,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘微饥。我一直安慰自己逗扒,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,984評(píng)論 6 393
  • 文/花漫 我一把揭開(kāi)白布欠橘。 她就那樣靜靜地躺著矩肩,像睡著了一般。 火紅的嫁衣襯著肌膚如雪简软。 梳的紋絲不亂的頭發(fā)上蛮拔,一...
    開(kāi)封第一講書(shū)人閱讀 51,763評(píng)論 1 307
  • 那天,我揣著相機(jī)與錄音痹升,去河邊找鬼建炫。 笑死,一個(gè)胖子當(dāng)著我的面吹牛疼蛾,可吹牛的內(nèi)容都是我干的肛跌。 我是一名探鬼主播,決...
    沈念sama閱讀 40,468評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼衍慎!你這毒婦竟也來(lái)了转唉?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,357評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤稳捆,失蹤者是張志新(化名)和其女友劉穎赠法,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體乔夯,經(jīng)...
    沈念sama閱讀 45,850評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡砖织,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,002評(píng)論 3 338
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了末荐。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片侧纯。...
    茶點(diǎn)故事閱讀 40,144評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖甲脏,靈堂內(nèi)的尸體忽然破棺而出眶熬,到底是詐尸還是另有隱情,我是刑警寧澤块请,帶...
    沈念sama閱讀 35,823評(píng)論 5 346
  • 正文 年R本政府宣布娜氏,位于F島的核電站,受9級(jí)特大地震影響负乡,放射性物質(zhì)發(fā)生泄漏牍白。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,483評(píng)論 3 331
  • 文/蒙蒙 一抖棘、第九天 我趴在偏房一處隱蔽的房頂上張望茂腥。 院中可真熱鬧,春花似錦切省、人聲如沸最岗。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,026評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)般渡。三九已至,卻和暖如春芙盘,著一層夾襖步出監(jiān)牢的瞬間驯用,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,150評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工儒老, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留蝴乔,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,415評(píng)論 3 373
  • 正文 我出身青樓驮樊,卻偏偏與公主長(zhǎng)得像薇正,于是被迫代替她去往敵國(guó)和親片酝。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,092評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容