heka+kafka遇到的一个小问题~

最近一段时间,在尝试使用heka读取本机的日志文件,向kafka集群发送日志消息

具体的方式是,kafka使用单broker用来功能验证,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"

启动hekad,hekad -config="/etc/hekad.toml"

会报错,说连不上broker,而broker这个时候明明是好的,看了一下heka的kafka这个plugin的code,其实配置里addrs这个数组是直接传给了kafka的golang客户端sarama,因此转而看了看sarama的客户端,恍然大悟,原来在heka和broker开始建立通信的时候使用ip是没有问题的,但是sarama里面是通过broker去访问kafka依赖的zookeeper,进而从zookeeper里的metadata里面获取到了10.75.5.27这个机器的host是talus27,在接下来的向kafka的broker发布消息的通信中,由于无法解析talus27这个hostname而报发送失败

解决的办法很简单,在heka的机器的/etc/hosts文件中添加一行

10.75.5.27   talus27

就搞定了~

你可能感兴趣的:(heka+kafka遇到的一个小问题~)