【问题标题】:logstash create multiple json files in a folder for outputlogstash 在一个文件夹中创建多个 json 文件用于输出
【发布时间】:2016-07-01 08:34:04
【问题描述】:

我想使用 logstash 从数据库中的表中读取数据,并为表中的每个条目创建一个单独的 json 文件...

我看到logstash已经解释了json中的数据,因为当我输出到一个现有的json对象时,数据已经是json对象格式了。

是否可以单独创建json文档并将它们存储在logstash输出块中的一个文件夹中?

【问题讨论】:

    标签: json logstash


    【解决方案1】:

    是的,这是可能的,但是您必须在您的事件中使用一个字段作为(部分)文件名。这是我的配置:

    (仅输出):

    output { 
              stdout { codec => rubydebug }
    
        file {
             path => "/home/artur/tmp/logstash/out/%{hello}.log"
        }
    
    }
    

    文件名将是来自我的事件的字段 %{hello} 中的任何内容。 Logstash 会自动填写。

    对于这两个事件:

    artur@pandaadb:~/dev/logstash$ ./logstash-2.3.2/bin/logstash -f conf2 
    Settings: Default pipeline workers: 8
    Pipeline main started
    a
    {
           "message" => "a",
          "@version" => "1",
        "@timestamp" => "2016-07-01T09:28:54.206Z",
              "host" => "pandaadb",
              "tags" => [
            [0] "test",
            [1] "test2",
            [2] "test3",
            [3] "test4"
        ],
             "hello" => "world",
        "mynewField" => "test4"
    }
    b
    {
           "message" => "b",
          "@version" => "1",
        "@timestamp" => "2016-07-01T09:28:59.454Z",
              "host" => "pandaadb",
              "tags" => [
            [0] "test",
            [1] "test2",
            [2] "test3",
            [3] "test4"
        ],
             "hello" => "world2",
        "mynewField" => "test4"
    }
    

    它创建了 2 个文件:

    artur@pandaadb:~/tmp/logstash/out$ ls
    world2.log  world.log
    

    希望对你有帮助

    阿图尔

    【讨论】:

    • 感谢亚瑟,文件名是否在配置文件的 filter 部分配置?
    • @Kazi 文件名(在输出中)取决于您的事件。您的活动必须有一些可用于填充文件名的字段。您可以使用事件中已有的任何内容,也可以使用 mutate 过滤器创建要使用的文件名字段。如果你想要不同的文件名,你必须找到一种方法来创建唯一的文件名(或者例如使用你收到的数据库事件的 pkey 字段,因为它必须是唯一的)
    猜你喜欢
    • 2021-01-26
    • 2018-08-09
    • 1970-01-01
    • 2018-07-25
    • 1970-01-01
    • 2021-06-13
    • 1970-01-01
    • 2023-02-01
    • 2020-11-18
    相关资源
    最近更新 更多