目前公司采用ELK来存放以及利用日志,采用filebeat将日志发送至Kafka,之后再写一个python脚本作为消费者把Kafka内的日志拉取下来并打入到elasticsearch中,供后期查询检索使用。
本来这是一套比较完备的流程,但由于最近接了新的业务,而新产生的日志在对方的机器上,也就是说我们需要把Kafka端口开放至公网,供外部机器写入消息;
在确认Kafka端口开放后,远程主机可以连接Kafka并建立topic,但是却无法写日志;中间折腾了好几个小时才折腾出来,觉得有必要记录一下,避免后人踩坑。
首先分别修改kafka集群内机器配置文件如下:
config/server.properties:
advertised.host=PUBLIC_IP
host.name=HOST_NAME
- host.port=9092
config/producer.properties:
metadata.broker.list=PUBLIC_IP
这样设置之后,远程主机仍然无法写数据,这是因为远程主机无法直接连接HOST_NAME
;由此想到修改远程主机的/etc/hosts
,修改如下:
/etc/hosts:
PUBLIC_IP1
HOST_NAME1
PUBLIC_IP2
HOST_NAME2
PUBLIC_IP3
HOST_NAME3
- …
PUBLIC_IPn
HOST_NAMEn
综上,经过上面的这些配置,现在filebeat就可以向Kafka打日志了~