elasticsearch - 使用ELK处理来自同一台机器的多个日志

标签 elasticsearch logstash elastic-stack elk elastic-beats

我有一个包含多个日志文件的主机。 2 个这样的日志文件是 csab 和 oneapplogs。

对应的Groks是

运行日志:

match => {"message" => "\[%{WORD:fixed}\|%{DATA:time}\|%{WORD:word1}\|%{WORD:word2}\|%{WORD:num1}\|%{WORD:num2}\|%{WORD:loglevel}\|%{WORD:num3}\]%{GREEDYDATA:message}"}

csab :

match => {"message" => "\[%{NONNEGINT:fixed}\|%{DATA:time}\|%{WORD:word1}\|%{NONNEGINT:num1}\|%{NONNEGINT:num2}]\[%{USERNAME:word2}\:%{NONNEGINT:num3}\] %{WORD:word1} : %{USERNAME:fixed} = %{NONNEGINT:num5}"}

当我尝试通过 logstash 将两者发送到 Elasticsearch 时,作为不同的日志,我有 2 个单独的 logstash conf 文件,它们具有用于从 filebeats 输入的不同端口。

我无法同时运行不同的 filebeats。我读过要这样做,我需要在机器中配置完全独立的 filebeat 实例,但我有 60 多个日志,因此设置 60 个实例似乎具有挑战性。

有没有办法通过1个filebeats实例将所有文件发送到logstash,然后使用logstash将所有日志处理成elasticsearch的多个不同输出。

更简单的解释

我在同一台机器上有 2 个日志。我需要使用 ELK 处理它们

我已经配置了一个具有两个管道的 logstash 服务,两个管道都有单独的端口。假设 Pipeline1(端口 5044),Pipeline2(端口 5045)

现在我想使用 filebeat 将数据发送到 logstash。所以我有两种类型的日志文件,比如说 log1、log2。

我想将 log1 发送到 Pipeline1,将 log2 发送到 Pipeline 2。

仅使用 1 个 filebeats 实例是否可行。

或者是否有其他解决方法来处理来自同一主机的不同日志?

如有任何帮助或建议,我们将不胜感激。非常感谢!!

最佳答案

我不明白当你可以在一个配置文件中实现所有这些时,为什么需要为两个源单独配置。

假设系统中有两个源要从中读取日志,并且您仅在一个 filebeat 配置中设置了两个不同的源。

Output{
If source ~=‘/file/path/for/first/log’
Elasticsearch {
..
..
}
else If source ~=‘/file/path/for/second/log’
Elasticsearch {
..
..
}
}

关于elasticsearch - 使用ELK处理来自同一台机器的多个日志,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62651648/

相关文章:

Logstash 检查子字段是否存在并解析

elasticsearch - Logstash Elasticsearch 输入 - 仅运行一次?

redis - 我们可以配置 Redis 服务器来接受来自不同机器的 LogShippers 吗?

elasticsearch - 用Logstash进行Grok解析失败

elasticsearch - 插入后文档在 Elasticsearch 中自动删除

mongodb - MongoDB与ElasticSearch

elasticsearch 按一个字母搜索

java - 索引未知字段时强制使用字符串类型

api - 出色的基本许可证安装

elasticsearch - 比较上周同一时间在ElastAlert中的数据