ELK之Logstash配置文件详解

  Logstash 是一个开源的数据收集引擎,它具备备实时数据传输能力。它能够统一过滤来自不一样源的数据,并按照开发者的制定的规范输出到目的地。它以插件的形式来组织功能,经过配置文件来描述须要插件作什么,配置文件主要由input、filter和output三部分组成。

1、input

  负责从数据源提取数据,因为我提取的是日志文件,因此使用的是file插件,该插件经常使用的几个参数是:git

  • path:指定日志文件路径。
  • type:指定一个自定义名称,设置type后,能够在后面的filter和output中对不一样的type作不一样的处理,适用于须要消费多个日志文件的场景。
  • start_position:指定起始读取位置,“beginning”表示第一次启动从文件头开始读取,后面动态读取;“end”表示从文件尾开始(相似tail -f)。
  • sincedb_path:sincedb_path 指定sincedb文件的路径。sincedb保存每一个日志文件已经被读取到的位置,若是Logstash重启,对于同一个文件,会继续从上次记录的位置开始读取。若是想从新从头读取文件,须要删除sincedb文件。若是设置为“/dev/null”,即不保存位置信息。

2、 output

  负责输出数据,改部分也有提供丰富的插件。 以es为例,须要指定es接收数据的地址和端口,以及日志存入的index 名称。
# 输出到es
output{
        elasticsearch{
            hosts => ["192.168.1.3:9200"]
            index => "log-%{+YYYY.MM.dd}"
        }
}

3、filter

  负责经过配置插件来解析、处理日志数据。插件介绍github

  •  grok:用于将非结构化的文本数据转化为结构化的数据,内部使用正则语法对文本数据进行匹配,为了下降使用复杂度,其提供了一组pattern,咱们能够直接调用pattern而不须要本身写正则表达式,参考源码grok-patterns。也可使用工具Grok Debugger能够对解析语法进行调试。
  • kv:用于将某个字段的值进行分解,相似于编程语言中的字符串Split。在下面的配置中,咱们将request_args字段值按照“&”进行分解,分解后的字段名称以“request_args_”做为前缀,而且丢弃重复的字段。            
  • geoip:用于根据IP信息生成地理位置信息,默认使用自带的一份GeoLiteCity database,也能够本身更换为最新的数据库,可是须要数据格式须要遵循Maxmind的格式(参考GeoLite),彷佛目前只能支持legacy database,数据类型必须是.dat。下载GeoLiteCity.dat.gz后解压, 并将文件路径配置到source中便可。        
  •  translate,用于检测某字段的值是否符合条件,若是符合条件则将其翻译成新的值,写入一个新的字段,匹配pattern能够经过YAML文件来配置。
相关文章
相关标签/搜索