最近一段時(shí)間浪秘,在嘗試使用heka讀取本機(jī)的日志文件,向kafka集群發(fā)送日志消息
具體的方式是狭归,kafka使用單broker用來(lái)功能驗(yàn)證睛蛛,heka使用自帶的kafka插件鹦马,hekad的配置如下
[LogstreamerInput]
log_directory = "/data1/www/logs"
file_match = 'recom\.i\.weibo\.com-access_log'
[PayloadEncoder]
append_newlines = false
[FxaKafkaOutput]
type = "KafkaOutput"
message_matcher = "TRUE"
topic = "recom_i"
addrs = ["10.75.5.27:9092"]
encoder = "PayloadEncoder"
啟動(dòng)hekad,hekad -config="/etc/hekad.toml"
會(huì)報(bào)錯(cuò)忆肾,說(shuō)連不上broker荸频,而broker這個(gè)時(shí)候明明是好的,看了一下heka的kafka這個(gè)plugin的code难菌,其實(shí)配置里addrs這個(gè)數(shù)組是直接傳給了kafka的golang客戶端sarama试溯,因此轉(zhuǎn)而看了看sarama的客戶端,恍然大悟郊酒,原來(lái)在heka和broker開(kāi)始建立通信的時(shí)候使用ip是沒(méi)有問(wèn)題的遇绞,但是sarama里面是通過(guò)broker去訪問(wèn)kafka依賴的zookeeper,進(jìn)而從zookeeper里的metadata里面獲取到了10.75.5.27這個(gè)機(jī)器的host是talus27燎窘,在接下來(lái)的向kafka的broker發(fā)布消息的通信中摹闽,由于無(wú)法解析talus27這個(gè)hostname而報(bào)發(fā)送失敗
解決的辦法很簡(jiǎn)單,在heka的機(jī)器的/etc/hosts文件中添加一行
10.75.5.27 ? talus27
就搞定了~