将自定义二进制格式馈送到logstash
我有一些每月的二进制日志文件要发送到logstash(或者可能是fluentd) 我遇到的问题是(TTBOMK)bin文件不能被logstash读取,所以我需要使用其中一个 以下哪个选项是将自定义bin文件读入logstash的最佳方式将自定义二进制格式馈送到logstash,logstash,fluentd,Logstash,Fluentd,我有一些每月的二进制日志文件要发送到logstash(或者可能是fluentd) 我遇到的问题是(TTBOMK)bin文件不能被logstash读取,所以我需要使用其中一个 以下哪个选项是将自定义bin文件读入logstash的最佳方式 通过nodejs中的脚本读取日志文件 将脚本作为插件重写为logstash 将二进制日志文件“翻译”为可读文本副本 或者其他我不知道的方式 我已经设置了一个基于nodejs的js脚本,它可以读取二进制文件并创建文档的可读文本版本。它可以作为CLI或http服
- 通过nodejs中的脚本读取日志文件
- 将脚本作为插件重写为logstash
- 将二进制日志文件“翻译”为可读文本副本
- 或者其他我不知道的方式
PS我在Windows Server上运行,如果有任何不同最简单的方法是将二进制格式转换为json并将其提供给logstash。可以通过文件或其他机制。主要是因为在logstash中抛出json时,过滤器的配置非常简单:
filter {
if [type] == "my_json_type" {
json {
source => "message"
}
}
}
这将为您将json文档分解为多个字段,包括嵌套在json中的文档。如果我们谈论的是大量内容,我建议通过套接字而不是文件来提供这些内容,因为开箱即用不支持在文件“完成”时发出任何通知。因此,您的输入定义可能如下所示:
tcp {
port => 4567
type => "my_json_type"
}
它将在端口4567上打开一个侦听套接字,并将收到的每一行作为行处理,然后过滤器将其作为json文档进行适当处理。然后在你的node.js中,你可以处理你已经提供给logstash的日志。你抛出了很多详细信息,希望我能把它们都弄清楚 如果你有一个http服务,logstash有一个http轮询器输入,可以 我不建议为logstash编写插件。在这个生态系统中,情况会继续快速变化 从logstash的角度来看,创建纯文本文件是最简单的方法。logstash不会明确地告诉您它已经处理了一个文件,但是您可以在注册表中查找它(在unix中,一个名为“.sincedb*”的文件,通常在/var/lib/logstash中,它包含索引节点号和文件大小偏移量)查看文件是否已100%处理 有很多其他方法可以将输入提供给logstash,包括tcp/ucp输入或代理(rabbit、redis等),它们可能适合您的工作流 当然,所有这些可能都有与Windows相关的警告