【问题标题】:ELK stack (Elasticsearch, Logstash, Kibana) - is logstash a necessary component?ELK 堆栈(Elasticsearch、Logstash、Kibana)——logstash 是必要的组件吗?
【发布时间】:2019-09-08 05:56:30
【问题描述】:

我们目前正在使用 AWS lambda 处理每日移动应用程序日志数据并将其发布到 redshift。 lambda 构造数据,但它本质上是原始的。下一步是将日志数据实际处理为会话等,以用于报告目的。最后一步是做一些特征工程,然后将数据用于模型训练。

步骤是

  1. 结构化原始数据以进行存储
  2. 会话化数据以进行报告
  3. 用于建模的特征工程

对于第 2 步,我正在考虑使用 Quicksight 和/或 Kibana 创建报告仪表板。但据我所知,典型的堆栈是使用 logstash 进行日志处理,然后将其转到 elasticsreach,最后转到 Kibana/Quicksight。由于我们已经通过 lambda 处理了初始日志处理,是否可以跳过这一步,直接将其传递给 elasticsearch?如果是这样,这种情况发生在哪里 - 在 lambda 函数中还是在它被存储在表中之后的 redshift 中?或者,elasticsearch 可以只从我将要摄取的数据发布到红移表的同一个 s3 中读取它吗?

【问题讨论】:

  • 当然可以跳过。它只是广泛(或者他们说)使用了组件。这个缩写只是一个花哨的词。你可以使用任何适合你的东西!
  • 甚至更多(这只是个玩笑!!!)您可以使用未来的存储 - CSV 文件并将它们输出到控制台!

标签: amazon-web-services elasticsearch amazon-s3 logstash kibana


【解决方案1】:

Elasticsearch 使用 JSON 来执行所有操作。例如,要将文档添加到索引中,请使用 PUT 操作(复制自 docs):

PUT twitter/_doc/1
{
    "user" : "kimchy",
    "post_date" : "2009-11-15T14:12:12",
    "message" : "trying out Elasticsearch"
}

Logstash 的存在是为了收集日志消息,将它们转换为 JSON,并发出这些 PUT 请求。但是,任何生成格式正确的 JSON 并可以执行 HTTP PUT 的东西都可以工作。如果您已经调用 Lambda 来转换您的 S3 内容,那么您应该能够调整它们以将 JSON 写入 Elasticsearch。我会为 Redshift 和 Elasticsearch 使用单独的 Lambda,只是为了提高可管理性。

性能提示:您可能一次处理大量记录,在这种情况下,bulk API 将比单个 PUT 更有效。但是,请求的大小是有限制的,因此您需要批量输入。

另外:您没有说明您使用的是 AWS Elasticsearch 集群还是自行管理的集群。如果是前者,您还必须处理经过身份验证的请求,或者在集群上使用基于 IP 的访问策略。你没有说你的 Lambda 是用什么语言编写的,但如果是 Python,你可以使用 aws-requests-auth 库来发出经过身份验证的请求。

【讨论】:

  • 非常感谢!
猜你喜欢
  • 2021-03-27
  • 2019-03-28
  • 2014-08-13
  • 1970-01-01
  • 1970-01-01
  • 2019-08-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多