ELK 堆栈配置

时间:2021-02-15 19:57:21

标签: redis logstash kibana elk

我对 elk stack 没有太多经验,我基本上只知道基础知识。

  • 例如filebeat 获取数据并将其发送到logstash
  • Logstash 处理并发送 Elastic search
  • Kibana 使用弹性搜索来可视化数据

(我希望那是正确的)

我需要创建一个 elk 系统,用于传递、存储和可视化来自三个不同项目的数据。

项目 1。使用 MongoDB,我需要将 1 个表中的所有信息放入 kibana

2 号项目。还使用 MongoDB,我需要将 1 个表中的所有信息放入 kibana

项目 3。使用 mysql,我需要从该数据库中获取一些表到 kibana

这三个项目都在同一台服务器上

对于项目 1 和 2,我需要数据流保持不变(即,如果用户注册,我可以在 kabana 中看到) 但对于项目 3。我只在需要生成报告时才需要数据(这个项目充当各种 BI)

所以我的问题是如何创建一个从这 3 个来源获取输入并能够组合成一个 elk 项目的 elk 架构。

我最好的猜测是:

Project No1 -> filebeat -> logstash

Project No2 -> filebeat -> logstash

Project No3 -> logstash

(这里的logstash是一个单独的实例,然后输入弹性)

这是一种现实的方法吗?

我还偶然发现了redis,从它的外观来看,它似乎可以将所有数据源合二为一,然后将输出提供给logstash。

什么是更好的方法?

最后,我提到了filebeat,但据我所知,它基本上是从日志文件中读取数据。这是否意味着我必须将所有数据库条目重新写入日志文件,以便将它们输入到 logstash 中,或者可以在没有中介的情况下使用 logstash 访问数据库。

我尝试在网上寻找所有这些,但由于某种原因,互联网上关于 ELK 堆栈初学者问题的内容有点稀缺。

谢谢

1 个答案:

答案 0 :(得分:2)

filebeat 用于将日志传送到 logstash,您不能使用它从数据库读取项目。但是你可以使用logstash的输入插件从数据库中读取数据。

根据您的描述,您需要一个带有 3 个管道的 logstash 实例(每个项目一个)

对于项目 3,您可以使用 Logstash JDBC 输入插件连接到您的 mysql 数据库并根据某些“last_updated”列读取新的/更新的行。 JDBC 输入插件有一个 cron 配置值,允许您将其设置为定期运行并使用您在配置中定义的 SQL 查询读取更新的行。

对于项目 1-2,您还可以在 mongoDB 中使用 JDBC 输入插件。 在 git 上还有一个 mongoDB 输入插件的开源实现。您可以查看这篇文章以了解如何使用它here

(查看输入插件的完整列表 here

如果这对您有用并且您设法设置了它,那么其余三种配置的其余部分将大致相同。 即使用过滤器插件修改数据,使用 Elasticsearch 输出插件将数据推送到弹性索引。