问题标签 [logstash-file]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
779 浏览

arrays - 如何使用 Logstash 剪切和删除数组中的元素

我在一个数组中有 Json 日志,如下所示:

我想从数组中删除前 3 个元素,并使用过滤器保留最后 4 个元素。

我有这个作为我的过滤器:

但是 Logstash 让自己陷入了错误

0 投票
1 回答
1540 浏览

jdbc - 如何打印logstash执行的日志

我一直试图在网上搜索这个,但无法获得任何线索。有没有办法我们可以将logstash执行输出打印到日志文件?例如,我正在使用 jdbc 插件按照 sql_last_start 读取数据。我想知道查询执行的时间、响应的记录数以及下一次执行的时间。

假设一个表测试有以下列 [id,name,updated_on] 代码:

0 投票
1 回答
900 浏览

filter - 使用 Logstash 过滤器创建新字段

我已经开始编写自己的 Logstash-filter,基于 Github 上提供的示例过滤器:

https://github.com/logstash-plugins/logstash-filter-example

我的新过滤器从名为Classficiation.jar. 我想获取来自text并基于它的值,对这些文本进行分类。这将需要创建一个新字段并在其中添加分类。

该操作应导致以下结果:

输入

输出

但是......我不确定我应该如何创建这个新领域。如您所见,该类采用一个参数,即文本。

我非常感谢有关如何为此 logstash 过滤器的输出创建新字段的指导。

谢谢你。


更新

我已按照@hurb 提供给我的说明进行操作,并编辑了我的文件,使其看起来像这样:

但是,这开始给我错误:

当我尝试包含t = Java::classficiation::Classficiation.new在 中时filter,它给了我错误:

dynamic constant assignment

这是为什么???

0 投票
1 回答
106 浏览

logstash - 将 FOR 语句与 Logstash 一起使用

我可以在 Logstash 中使用 For 语句吗?

如果是这样,怎么办?

我知道我们可以使用 IF 语句并且我一直在成功使用它

0 投票
1 回答
137 浏览

elasticsearch - Logstash-ES 数据检查

我目前正在使用 logstash-jdbc-plugin 从 DB 中提取数据并将其放入 ES 中的索引。如何检查从数据库中提取的全部数据是否已插入 Elastic Search 索引。

提取的数据以百万计,因此无法继续手动检查

0 投票
1 回答
717 浏览

logstash - 似乎 Logstash 在写入下一个事件之前不会处理最后一个事件/行

我是 logstash 的新手,在我动手的过程中,我可以看到 logstash 不处理日志文件的最后一行。

我的日志文件很简单,只有 10 行,我已经配置了过滤器来处理一个/两个字段并将 json 结果输出到一个新文件。

因此,当 logstash 运行时,我打开受监控的文件并在文件末尾添加一行并保存。没发生什么事。现在我再添加一行,前一个事件显示在输出文件中,下一个事件也是如此。

如何解决这种行为?我的用例/配置有问题吗?

0 投票
1 回答
342 浏览

elasticsearch - 无法使用绝对路径在 logstash 中侦听文件

我在路径上安装了 logstash:D:\WORK\ElasticSearch\logstash-2.0.0\bin,我的应用程序在路径上写入日志:D:\Logs

当我使用 logstash 路径通过此脚本加载日志“D:\WORK\ElasticSearch\logstash-2.0.0\bin”时,我能够阅读它。 input { file { path => ["\PlatformTest_*"] #discover_interval - How often (in seconds) we expand the filename patterns in the path option to discover new files to watch discover_interval => 20 #start_position - Choose where Logstash starts initially reading files: at the beginning or at the end start_position => "beginning" #stat_interval - How often (in seconds) we stat files to see if they have been modified. stat_interval => 2 } }

但是当我使用这个日志的真实路径时,它不起作用: input { file { path => ["D:\Logs\PlatformTest_*"] #discover_interval - How often (in seconds) we expand the filename patterns in the path option to discover new files to watch discover_interval => 20 #start_position - Choose where Logstash starts initially reading files: at the beginning or at the end start_position => "beginning" #stat_interval - How often (in seconds) we stat files to see if they have been modified. stat_interval => 2 } }

另外,当我尝试相对路径时,它也不起作用: input { file { path => ["\..\..\..\..\Logs\PlatformTest_*"] #discover_interval - How often (in seconds) we expand the filename patterns in the path option to discover new files to watch discover_interval => 20 #start_position - Choose where Logstash starts initially reading files: at the beginning or at the end start_position => "beginning" #stat_interval - How often (in seconds) we stat files to see if they have been modified. stat_interval => 2 } }

任何想法?

0 投票
1 回答
2164 浏览

logstash - 如何让 Logstash Grok Fliter 查看换行符和回车符?

我正在尝试解析我们的日志文件并将它们发送到 elasticsearch。问题是我们的 S3 客户端将行注入到包含回车符 (\r) 而不是换行符 (\n) 的文件中。文件输入过滤器的配置使用 '\n' 作为分隔符,与 99% 的数据一致。当我针对这些数据运行 logstash 时,它错过了我真正想要的最后一行。这是因为文件输入过滤器将“\r”字符视为普通文本而不是换行符。为了解决这个问题,我尝试使用变异过滤器将“\r”字符重写为“\n”。mutate 有效,但 Grok 仍将其视为一条大线。和 _grokparsefailure。

我的“正常”日志文件按预期行 Grok。

配置

输入

输入文件中的这个示例说明了这个问题。^M 字符是 vim 显示 '\r' 回车的方式('more' 隐藏了大部分)。我保留了这一行,因此您可以看到整个内容在 linux 和 File Plugin 中显示为单行文本。

输出

我需要 grok 来解​​析这一行,因为它是换行符 '\n'。有人知道怎么修这个东西吗?

0 投票
1 回答
85 浏览

logstash - 如何根据动态标识符为来自不同进程线程的交错日志行编写logstash多行

虚拟日志文件:

多行合并具有相同 ID 的行并视为单个事件的预期结果。

0 投票
0 回答
456 浏览

logstash - 如何使 Logstash 以实时方式将新添加/记录的内容解析为文件输入

我正在阅读Logstash 参考 [1.5] 的 Logstash 配置示例部分中的处理 Apache 日志示例。其中一句话是:

“记录到此文件的任何其他行也将被捕获,由 Logstash 作为事件处理,并存储在 Elasticsearch 中。”

我正在尝试通过在 Logstash 关闭尚未完成时向正在监视的日志文件中再添加一行来实现它。这基本上就是我在问题标题中所说的“实时”的意思。

以下是我实际尝试过的方法:

步骤 1. 将 logstash-apache.conf 传递给 Logstash

我使用的 Logstash 版本是 1.5.4。logstash-apache.conf的代码是:

conf 文件与示例几乎相同。但是,根据阅读网站上的说明,“apache_access”的类型被添加到文件输入插件中,而不是被放入 mutate 过滤器插件中。请将文件输入插件中的路径替换为您的。

为方便起见,此处提供了示例日志

经过Logstash的处理,standard out有3个rubydebug格式的结果,在上传的图片中可以看到(当然这3个在Elasticsearch中也有索引): ruby​​debug格式的standard out中出现的3个结果的图片Logstash 的处理

请注意,此时 conf 文件生成的管道尚未关闭。

步骤 2. 使用服务器中的文本编辑器在文件中再添加一行日志并保存更改

这是我添加的行,应该是日志文件中的第 4 行:

完成此操作后,我希望在标准输出中显示更多结果,因为我相信文件输入插件可以配置为这样做,因为同一参考中的文件输入插件部分说:

该插件旨在跟踪更改的文件并在附加到每个文件时发出新内容。

不幸的是,什么也没发生。

我是在错误的轨道上,并且做错了整个事情吗?如果没有,这里的任何人都可以帮助我实现我打算做的事情,并可能解释其背后的机制吗?任何帮助将不胜感激。