【问题标题】:Logs to ElasticsSearch using kinesisstream使用 kinesis 流记录到 Elasticsearch
【发布时间】:2020-08-14 20:50:30
【问题描述】:
我正在尝试理解 Kinesis 数据流,但我对术语和大局的样子有点困惑。
因此,我在服务器 EKS 集群上运行服务,并希望将日志发送到 ElasticSearch。目前的设置是我在 EKS 节点上使用 fluentD 来收集日志并将它们发送到 kinesis 流,然后报告给 ElasticSeach,在那里可以使用 kibana 对其进行分析。
但是,
我不确定 kinsesis 流发生了什么。当 fluentD 发送日志数据时,根据https://aws.amazon.com/kinesis/data-streams/faqs/ 会有一个分区键和序列号与数据块相关联。现在,我无法理解一些事情:
- 从生产者一方,谁在创建分区键,如何创建?
- 索引的作用是什么?索引是否类似于数据和分片是该特定日期的日志数据?
- 既然有基于分区键关联的排序,那么如何在kibana中按顺序查看日志呢?这意味着分区键也有点顺序。
【问题讨论】:
标签:
amazon-web-services
amazon-kinesis
fluentd
【解决方案1】:
我认为您正在做的是 ELK 堆栈,在我看来,您的流程缺少 Logstash 导致缺少堆栈的某些功能。
- 在https://docs.aws.amazon.com/streams/latest/dev/key-concepts.html:
“数据记录是存储在 Kinesis 数据流中的数据单位。数据记录由序列号、分区键和数据 blob 组成,数据 blob 是不可变的字节序列。Kinesis Data Streams 不以任何方式检查、解释或更改 blob 中的数据。一个数据 blob 最大可达 1 MB。因此,它们由 Kinesis 自动生成以对您的日志进行排队,这样 Elasticsearch 实例就不会崩溃。
-
我也对此感到困惑。但您可以想象它就像您为推送到 Cloudwatch 的日志创建的名称。您需要 Logstash 将日志分离到多个索引,以便您知道要查找的内容。
-
Kibana 默认按时间戳列出索引中的日志。
我在 ELK Stack 上做了 1 周,所以我无法确定我在这里所说的是否完全正确。如果我错了,请纠正我