zoukankan      html  css  js  c++  java
  • logstash将配置写在多个文件

    搭建ELK(ElasticSearch+Logstash+Kibana)日志分析系统logstash将配置写在多个文件
    我们用Logsatsh写配置文件的时候,如果读取的文件太多,匹配的正则过多,会使配置文件动辄成百上千行代码,可能会造成阅读和修改困难。这时候,我们可以将配置文件的输入、过滤、输出分别放在不同的配置文件里,甚至把输入、过滤、输出再次分离,放在不同的文件里。
    这时候,后期再需要增删改查内容的时候,就容易维护了。

    filebeat解释

    1、logstash如何读取多个配置文件

    我们知道在启动logstash的时候,只要加上-f /you_path_to_config_file就可以加载配置文件了,如果我们需要加载多个配置文件,只需要-f /you_path_to_config_directory就可以了。简单说,就是在-f后面加上目录就可以。
    注意:目录后面不能加 * 号,否则只会读取一个文件,但是在读取日志文件时,*可以匹配所有,比如sys.log*可以匹配所有以sys.log开头的日志文件,如sys.log1,sys.log2等。

    示例如下:

    //比如 /home/husen/config/目录下有
    //in1.conf、in2.conf、filter1.conf、filter2.conf、out.conf这5个文件

    //我们使用 /logstash-5.5.1/bin/logstash -f /home/husen/config启动logtstash
    //logstash会自动加载这个5个配置文件,并合并成1个整体的配置文件

    2、logstash多个配置文件里的input、filter、output是否相互独立

    答案是:NO!

    比如:

    ## in1.conf内容如下:
    input{
    file{
    path=>[
    "/home/husen/log/sys.log"
    ]
    }
    }

    ## in2.conf内容如下:
    input{
    file{
    path=>[
    "/home/husen/log/error.log"
    ]
    }
    }

    ## out1.conf如下
    elasticsearch {
    action => "index"
    hosts => "localhost:9200"
    index => "from_sys_log"
    codec => "json"
    }

    ## out2.conf如下
    elasticsearch {
    action => "index"
    hosts => "localhost:9200"
    index => "from_error_log"
    codec => "json"
    }

    //这几个配置文件的目的是:
    //想把in1.conf读进来的sys.log的索引建立为from_sys_log
    //把in.conf读进来的error.log的索引建立为femo_error_log

    //logstash-5.5.1/bin/logstash -f /home/husen/config

    //启动之后,会发现in1.conf的日志被输出了两次,in2.conf读进来的日志也被输出了两次

    //结论:logstash读取多个配置文件只是简单的将所有配置文件整合到了一起!
    //如果要彼此独立,需要自己加字段,然后判断一下
    //比如读取来不同不同服务器的同样格式的日志,那么filter是可以共用的
    //但是输出的索引需要分别建立,以提高辨识度

    3、logstash读取多个配置文件建议的配置方法

    如果要在配置文件中,独立一些部分,又要共用一些部分,比如我上门提高同样的日志来自不同的服务器,需要用同样的filter,但是建立不同的索引的问题,该怎么办?
    建议使用tags或者type这两个特殊字段,即在读取文件的时候,添加标识符在tags中或者定义type变量。

    示例如下:

    ## in1.conf内容如下:
    input{
    file{
    path=>[
    "/home/husen/log/sys.log"
    ]
    type => "from_sys"
    #tags => ["from_sys"]
    }
    }

    ## in2.conf内容如下:
    input{
    file{
    path=>[
    "/home/husen/log/error.log"
    ]
    type => "from_error"
    #tags => ["from_sys"]
    }
    }

    ## out1.conf如下
    if [type] == "from_sys"{
    #if "from_sys" in [tags]
    elasticsearch {
    action => "index"
    hosts => "localhost:9200"
    index => "from_sys_log"
    codec => "json"
    }
    }

    ## out2.conf如下
    if [type] == "from_error"{
    #if "from_error" in [tags]
    elasticsearch {
    action => "index"
    hosts => "localhost:9200"
    index => "from_error_log"
    codec => "json"
    }
    }

    //特别地,如果要针对不同的类型日志用不同filter来grok解析,
    //也可以通过类似的方法判断

  • 相关阅读:
    模板 无源汇上下界可行流 loj115
    ICPC2018JiaozuoE Resistors in Parallel 高精度 数论
    hdu 2255 奔小康赚大钱 最佳匹配 KM算法
    ICPC2018Beijing 现场赛D Frog and Portal 构造
    codeforce 1175E Minimal Segment Cover ST表 倍增思想
    ICPC2018Jiaozuo 现场赛H Can You Solve the Harder Problem? 后缀数组 树上差分 ST表 口胡题解
    luogu P1966 火柴排队 树状数组 逆序对 离散化
    luogu P1970 花匠 贪心
    luogu P1967 货车运输 最大生成树 倍增LCA
    luogu P1315 观光公交 贪心
  • 原文地址:https://www.cnblogs.com/Su-per-man/p/12169679.html
Copyright © 2011-2022 走看看