logstash - Logstash 过滤器如何找出哪些事件已被丢弃?
问题描述
我有 LogStash 过滤器,我想知道我的日志文件中的哪些事件已被删除,因为我在 logstash 输出文件中看不到它们。怎么做?
我的过滤器如下所示:
filter {
grok {
patterns_dir => "C:\logstash-7.4.2\patterns"
match => { "message" => "^\[%{TIMESTAMP_ISO8601:timestamp}\]\[%{LOGLEVEL:level}\]\[%{TThread:thread}\]\[%{JAVACLASS:class}\] %{GREEDYDATA:msg}" }
}
if "_grokparsefailure" in [tags] {
drop{}
}
}
解决方案
当您drop
的管道中的事件停止存在时,您将不会在任何输出中看到它,您无法删除事件并将其放在输出中。
在您的情况下,您正在删除与grok
过滤器不匹配的事件,如果您想知道哪些事件无法解析,则需要停止删除这些事件,然后将这些事件重定向到另一个输出以进行更好的分析,如果您希望您也可以将 then 保留在相同的输出中并稍后过滤。
您可以使用类似以下配置的内容。
output {
if "_grokparsefailure" in [tags] {
output to store failed events
}
if "_grokparsefailure" not in [tags] {
normal output for the other events
}
}
您也可以将日志级别设置为调试运行 logstash,但它会记录很多内容,并且在您的情况下不是最好的方法。
推荐阅读
- r - 这个 R 结构是什么,我如何获得索引?
- authentication - Google Analytics 设置用户 ID
- c# - 在 C# (serilog) 中,如何处理这种设计重构,其中通用接口 + 父/子关系可以以正确的方式保留?
- haskell - Haskell:使准引用值严格/在编译时评估
- laravel - 怀疑3表Eloquent之间的关系
- mysql-workbench - 如何从 Windows 10 上的 MySQL Workbench 获取忘记的 MySQL 密码?
- node.js - 如何创建 GitHub Action 以使用 Yarn 运行 Jest 测试?
- architecture - 在 Azure 数据管道中大规模使用来自外部网络的文件
- database - 我将如何与 Oracle 建立 Flutter 连接?
- sql - 添加额外 WHERE 时查询速度慢