【问题标题】:How to include the filter in Logstash config file?如何在 Logstash 配置文件中包含过滤器?
【发布时间】:2016-08-19 03:26:33
【问题描述】:

我正在使用 LogStash,它接受来自日志文件的数据,该文件具有不同类型的日志。

第一行表示自定义日志,第二行表示 JSON 格式的日志。

现在,我想编写一个过滤器,它将根据内容解析日志,最后将所有 JSON 格式的日志定向到一个名为 jsonformat.log 的文件中,并将其他日志定向到一个单独的文件中。

【问题讨论】:

    标签: json logstash logstash-configuration


    【解决方案1】:

    您可以利用json 过滤器并检查它是否失败来决定将事件发送到哪里。

    input {
       file {
           path => "/Users/mysystem/Desktop/abc.log"
           start_position => beginning
           ignore_older => 0
       }
    }
    filter {
       json {
         source => "message"
       }
    }
    output {
      # this condition will be true if the log line is not valid JSON
      if "_jsonparsefailure" in [tags] {
        file {
           path => "/Users/mysystem/Desktop/nonjson.log"
        }
      }
      # this condition will be true if the log line is valid JSON
      else {
        file {
           path => "/Users/mysystem/Desktop/jsonformat.log"
        }
      }
    }
    

    【讨论】:

    • 我不知道为什么,但是尽管您的代码通过了配置测试,但当我在输入文件上运行它时,它只是显示管道已启动,但它不会创建日志文件.
    • 您需要在abc.log 文件中添加新行,或者在文件输入中添加sincedb_path => "/dev/null"
    • 是的,我做到了。我什至尝试添加新行,但它仍然没有生成新文件。我正在发布我的配置文件供您查看。还有,输入文件。 (作为问题编辑的一部分提到)
    • 您可以将您的 abc.log 文件重命名为其他名称吗?甚至可能将其移动到另一个文件夹
    • 尝试重命名,并将其完全移动到一个新文件夹(是的,我更改了配置文件中的路径),但它仍然不起作用。只是表明管道已经启动。另外,你能看看问题的编辑吗?
    猜你喜欢
    • 1970-01-01
    • 2015-12-13
    • 2014-08-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多