zoukankan      html  css  js  c++  java
  • Logstash conf.d 多个配置文件

    概要

    今天在群里一个关于在 logstash 的配置目录存在多个配置文件时候如何处理的问题?

    我说是加载所有配置文件并合并为一个。

    lcy@lcy:~/ELK/logstash$ sudo /opt/logstash/bin/logstash --help
    [sudo] password for lcy: 
    Usage:
        /bin/logstash agent [OPTIONS]
    
    Options:
        -f, --config CONFIG_PATH      Load the logstash config from a specific file
                                      or directory.  If a directory is given, all
                                      files in that directory will be concatenated
                                      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.

    下面,做个小实验用以说明。

    文件说明

    1. conf.d 目录说明

    存在2个配置文件 1.conf 和 2.conf

    // 存在2个配置文件
    lcy@lcy:/etc/logstash/conf.d$ ls 
    1.conf  2.conf

    其中 1.conf 配置了 input ,使用 file 插件来导入文件 file_1(input中参数配置为 file_*) 的内容。并且在 fileter 中加一个 filed ,名称叫 add_from_1。输出格式为 rubydebug。

    // 文件1.conf的内容
    lcy@lcy:/etc/logstash/conf.d$ cat 1.conf 
    input {
        file {
        path => "/home/lcy/file_*"
            start_position => "beginning"
            ignore_older => 11111111
            stat_interval => 1
            discover_interval => 1
        }
    }
    filter {
        mutate {
            add_field => {
                "add_from_1" => "1111111"
            }
        }
    }
    output {
        stdout {
            codec => rubydebug
        }
    }

    其中 2.conf 没有配置 input 。在 fileter 中加一个 filed ,名称叫 add_from_2。输出格式为 JSON。

    // 文件2.conf的内容
    lcy@lcy:/etc/logstash/conf.d$ cat 2.conf 
    filter {
        mutate {
            add_field => {
                "add_from_2" => "2222222"
            }
        }
    }
    output {
        stdout {
            codec => json
        }
    }

    2. 输入源文件

    file_1 很简单,就一个单行 JSON 文件。

    // file_1 的文件内容
    lcy@lcy:~$ cat file_1
    {"file_1":{"tag_1":"value_1"}}

    执行结果

    1. 启动 logstash

    lcy@lcy:/etc/logstash/conf.d$ sudo /opt/logstash/bin/logstash -f /etc/logstash/conf.d/
    Settings: Default pipeline workers: 2
    Logstash startup completed

    2. 输出结果

    即输出了 rubydebug 格式,又输出了 JSON 格式。

    lcy@lcy:/etc/logstash/conf.d$ sudo /opt/logstash/bin/logstash -f /etc/logstash/conf.d/
    Settings: Default pipeline workers: 2
    Logstash startup completed
    {
           "message" => "{"file_1":{"tag_1":"value_1"}}",
          "@version" => "1",
        "@timestamp" => "2016-04-28T06:42:43.050Z",
              "path" => "/home/lcy/file_1",
              "host" => "lcy",
        "add_from_1" => "1111111",
        "add_from_2" => "2222222"
    }
    {"message":"{"file_1":{"tag_1":"value_1"}}","@version":"1","@timestamp":"2016-04-28T06:42:43.050Z","path":"/home/lcy/file_1","host":"lcy","add_from_1":"1111111","add_from_2":"2222222"}
    ^CSIGINT received. Shutting down the pipeline. {:level=>:warn} ^CSIGINT received. Terminating immediately.. {:level=>:fatal} ^CSIGINT received. Terminating immediately.. {:level=>:fatal}

    结论

    可以看出,实际执行中,把 1.conf 和 2.conf 文件的内容完全合并为了一个配置文件

    INPUT    :2.conf 没有配置 input 不会报错,因为 1.conf 中有(input 为必须)
    FILETER :输出内容中即添加了 add_from_1 也添加了 add_from_2 两个 filed
    OUTPUT :输出了2中格式,rubydebug 和 JSON
  • 相关阅读:
    java 数组转list的两种方式(可新增和删除list元素)
    SpringBoot配置404跳转页面的两种方式
    idea java常量字符串过长解决办法
    Spring-BeanValidation校验@RequestParam参数 (控制器单参数验证)
    【Java】使用@Valid+BindingResult进行controller参数校验
    Spring MVC利用Hibernate Validator实现后端数据校验
    springMvc 整合hibernate-validator(简单配置)
    vue中动态给自定义属性data-xx赋值并读取内容
    Tomcat配置SSL安全证书
    springmvc 接收json对象的两种方式
  • 原文地址:https://www.cnblogs.com/licongyu/p/5442652.html
Copyright © 2011-2022 走看看