【问题标题】:Adding user information to centralized logging with ELK stack使用 ELK 堆栈将用户信息添加到集中式日志记录
【发布时间】:2015-02-16 02:00:21
【问题描述】:

我正在使用 ELK 堆栈(第一个项目)来集中服务器的日志并使用 Kibana 可视化一些实时统计信息。日志存储在 ES 索引中,我有另一个包含用户信息(IP、姓名、人口统计)的索引。我正在尝试:

  1. 将用户信息与服务器日志相匹配,匹配 IP。我想在 Kibana 仪表板中包含这些信息(例如,实时显示连接用户的用户名)。

  2. 使用过滤和处理的信息创建新索引(例如,访问某个 url 超过 3 次的用户)。

解决这些问题的最佳设计是什么(例如,通过过滤器在 logstash 阶段包含用户名、执行计划作业……)?如果处理任务(2)变得更复杂,使用 MongoDB 会更好吗?

谢谢!

【问题讨论】:

  • 用户数据现在在哪里? MongoDB?

标签: mongodb elasticsearch logstash kibana


【解决方案1】:

我最近想将一些日志数据与用户数据(包含 IP 以及其他数据)交叉引用,并且只使用了 elasticsearch 的 bulk import API。这意味着从 RDBMS 中提取数据,将其转换为 JSON 并输出符合批量导入 API 所需格式的平面文件(基本上是在描述索引和类型的行前面加上前缀)。

这应该适用于初始导入,然后可以在存储用户数据的任何地方使用触发器来实现您的增量。可能只是写入一个平面文件并像其他日志一样处理。其他选项可能是JDBC River

【讨论】:

    【解决方案2】:

    我也想知道数据最初存储在哪里(数据库,直接从服务器推送......)。但是,我最初使用 ELK 堆栈使用 BCP(在计划任务上运行)的批处理文件从数据库服务器中提取数据并将其存储到平面文件中,使用 Logstash 监视文件,并在 LS 中操作数据配置(grok 过滤器)。您还可以考虑使用简单的控制台/Web 应用程序来操作数据,然后再使用 Logstash。

    如果可能,我会尝试通过 SQL Server SPROC/BCP 命令提取您的数据并匹配 Logstash 中返回的完整消息。然后,您可以将信息存储在单个索引中。

    我希望这会有所帮助,因为我绝不是专家,但如果您能更具体地了解当前数据存储的详细信息,我很乐意为您回答更多问题;即数据如何进入 Logstash。 RabbitMQ 是另一个有价值的工具,可以查看您的输入源。

    【讨论】:

      猜你喜欢
      • 2019-07-11
      • 2019-11-26
      • 2017-04-09
      • 2015-09-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多