![](/img/trans.png)
[英]Filebeat > is it possible to send data to Elasticsearch by means of Filebeat without Logstash
[英]Data pipeline design considerations (Filebeat, Kafka, Logstash, Elasticsearch)
我正在尝试清除以下数据管道中的一些问题,并希望对此设计中的任何漏洞(利用Filebeat,Kafka,Logstash和Elasticsearch)获得一些意见。
查找给定用户的最新位置,最长延迟时间为45秒。
我们有一个Python应用程序,可以连续注销用户的最新位置。
# log.json
{"user_id": 1, "location": "San Francisco, CA"}
{"user_id": 1, "location": "New York City, NY"}
{"user_id": 2, "location": "Chicago, IL"}
{"user_id": 1, "location": "Portland, OR"}
这个想法是将这些数据写入Elasticsearch(我们公司内部对它有很好的支持的数据存储),并使用“ user_id”作为文档ID,这样,如果我执行这2次插入,便会背靠背:
{"user_id": 1, "location": "San Francisco, CA"}
{"user_id": 1, "location": "New York City, NY"}
然后在Elasticsearch中查询“ user_id” == 1将返回最新位置。
Filebeat -> Kafka -> Consumer (business logic)-> Kafka -> Logstash -> Elasticsearch
。
{"user_id": 1, "document_version": 1, "location": "San Francisco, CA"}
{"user_id": 1, "document_version": 2, "location": "New York City, NY"}
写入发生乱序是否会发生任何情况?
假设您控制着日志代码-您可以看看让应用程序直接登录到Kafka,然后使用KSQL或Kafka Streams,可以在45秒的时间内找到数据,将数据写回到另一个Kafka主题,最后使用Kafka Connect的Elasticsearch输出连接器(或Logstash)以写入Elasticsearch。 我不知道Filebeat Kafka输出的灵活性如何,但是我认为您需要一个“原始”主题,然后订阅该主题,将其“重新分区”为另一个主题,然后进行后续的输出处理。
您可以通过识别密钥使Kafka分区的事件井然有序。 例如,按用户ID键,然后任何给定用户的所有事件最终在Kafka中排序
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.