elasticsearch - 使用 ELK 处理来自同一台机器的多个日志
问题描述
我有一个包含多个日志文件的主机。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时,作为不同的日志,我有两个单独的logstash conf文件,它们具有不同的端口用于从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 {
..
..
}
}
推荐阅读
- ssh - 如何从 ansible playbook 构建自定义的 ssh 连接
- javascript - 为 Win32 x64 编译后,Electron 应用程序无法打开
- python - Mailchimp API v3 python 活动列表
- reactjs - 使用spring boot Twilio Api反应js axios的帖子正文中缺少必需的参数To
- node.js - Express server console.log 问题:“字符串”类型上不存在“地址”
- python-3.x - tkinter update() 和 update_idletasks()
- asp.net - 如何在 navigeteurl 中使用 eval?
- excel - 基于示例其他工作表的 VBA 更改单元格颜色完整列
- ti-basic - 如何对函数中的列表/矩阵进行排序?
- sql - 手机号码验证