Configuration 处理大型日志存储配置文件的最佳实践是什么?

Configuration 处理大型日志存储配置文件的最佳实践是什么?,configuration,logstash,Configuration,Logstash,我将部署一个logstash实例,它将处理各种输入并执行多个过滤操作。考虑到输入的复杂性和数量,配置文件很可能会有很多if-then语句 我的问题是: 有没有办法使配置文件更“模块化”?在编程的意义上,我会创建函数/子例程,以便能够独立测试。我曾考虑过动态创建可用于测试的小型配置文件。然后可以将这些小文件合并到一个生产配置中 对于测试、部署和管理更复杂的日志存储配置,是否有任何“最佳实践” 谢谢 不支持函数/子程序本身。我将不同的过滤器分解成不同的文件,以保持逻辑上的分离,并避免出现巨大的文件。

我将部署一个logstash实例,它将处理各种输入并执行多个过滤操作。考虑到输入的复杂性和数量,配置文件很可能会有很多if-then语句

我的问题是:

  • 有没有办法使配置文件更“模块化”?在编程的意义上,我会创建函数/子例程,以便能够独立测试。我曾考虑过动态创建可用于测试的小型配置文件。然后可以将这些小文件合并到一个生产配置中

  • 对于测试、部署和管理更复杂的日志存储配置,是否有任何“最佳实践”


  • 谢谢

    不支持函数/子程序本身。我将不同的过滤器分解成不同的文件,以保持逻辑上的分离,并避免出现巨大的文件。我在不同的文件中也有输入和输出。例如,这样我可以将所有过滤器与调试输入/输出结合起来

    input {
      stdin {}
    }
    
    output {
      stdout {
        codec => rubydebug
      }
    }
    
    并手动调用Logstash来检查给定输入的结果。由于过滤器顺序很重要,我使用的是Logstash按字母顺序读取配置文件的事实,因此文件名为NN-some-description-name.conf,其中NN是一个整数

    我还编写了一个脚本,通过让您编写一个带有测试输入和预期结果消息的规范来自动化这个过程,如果存在不匹配,它将以错误退出并显示差异。我可能能够将其开源


    至于部署,请使用任何配置管理系统,如Puppet、Chef、SaltStack、Ansible、CFEngine或您熟悉的类似系统。我对Ansible很满意。

    正如@Magnus Bäck所说,答案是1。不是。目前不支持函数

    但是对于第二个问题,有一种方法可以使logstash配置更加模块化。您可以将配置文件拆分为多个文件,并将logstash指向files目录

    检查logstash man中的目录选项:

    -f, --config CONFIG_PATH      Load the logstash config from a specific file
                                      or directory.  If a direcory is given, all
                                      files in that directory will be concatonated
                                      in lexicographical order and then parsed as a
                                      single config file. You can also specify
                                      wildcards (globs) and any matched files will
                                      be loaded in the order described above.
    

    当您说“按字母顺序读取配置文件”时,是否将多个配置文件指定为Logstash命令行参数?否,我将Logstash指向包含文件的目录。
    -f
    选项同时接受文件和目录。在后一种情况下,Logstash将读取除*~之外的所有文件。