Logstash学习-配置语法

区段(section)

Logstash 用{}来定义区域。区域内可以包括插件区域定义,你可以在一个区域定义多个插件,插件区域内则可以定义键值对设置。

数据类型

Logstash支持少量的数据值类型:

  • bool  debug => true
  • string  host => "localhost"
  • number  port => 80
  • array  match => ["hello","message"]
  • hash  options => {name => "xiaoming", age => 55}

注意:地域1.2.0的版本哈希语法跟数组一样。

字段引用

字段是 Logstash::Event 对象的属性。事件就像一个哈希一样,所以可以想想字段就像一个键值对。

如果想在Logstash配置中使用字段的值,只需要把字段的名字卸载中括号[]里就行了,这就较字段引用。对于潜逃字段,每层字段名都卸载[]里就可以。例:[object][field]

小贴士:

Logstash的数组也支持倒序下表,即[geoip][location][-1]可以获取数组最后一个元素的值;

Logstash还支持变量内插,在字符串里使用字段引用的方法是这样:"the logitude is %{[geoip][location][0]}"

条件判断(condition)

Logstash从1.3.0版开始支持条件判断和表达式,支持下面这些操作符:

  • == (等于), != (不等于), < (小于), > (大于), <= (小于等于), >= (大于等于)
  • =~ (匹配正则), !~ (不匹配正则)
  • in (包含), not in (不包含)
  • and (与), or (或), nand(非与), xor(非或)
  • () (复合表达式), !() (对复合表达式结果取反)

命令行参数

-e 执行,这个参数的默认值是:input{stdin{}}output{stdout{}}

--config 或 -f 配置文件,后跟参数类型可以是一个字符串的配置(像Hello World例子一样)或全路径文件名或全路径路径(如:/etc/logstash.d/,logstash会自动读取/etc/logstash.d/目录下所有*.conf 的文本文件,然后在自己内存里拼接成一个完整的大配置文件再去执行)

注意:logstash列出目录下所有文件时,是字母排序的,而logstash配置段的filter和output都是顺序执行,所以顺序非常重要。

采用多文件管理的用户,推荐采用数字编号方式命名配置文件,同时在配置中,严禁采用if判断限定不同日志的动作。

--configtest 或 -t 测试

--log 或 -l 日志。logstash默认输出日志到标准错误,生产环境下用此参数自定义

--pipeline-workers 或 -w 运行filter和output的pipeline线程数量,默认是CPU核数。

--pipeline-batch-size 或 -b
每个 Logstash pipeline 线程,在执行具体的 filter 和 output 函数之前,最多能累积
的日志条数。默认是 125 条。越大性能越好,同样也会消耗越多的 JVM 内存。
--pipeline-batch-delay 或 -u
每个 Logstash pipeline 线程,在打包批量日志的时候,最多等待几毫秒。默认是 5ms。
--pluginpath 或 -P
可以写自己的插件,然后用 bin/logstash --pluginpath/path/to/own/plugins 加载它们。
--verbose
输出一定的调试日志。
--debug
输出更多的调试日志。

设置文件

从 Logstash 5.0 开始,新增了 $LS_HOME/config/logstash.yml 文件,可以将
所有的命令行参数都通过 YAML 文件方式设置。同时为了反映命令行配置参数的层
级关系,参数也都改成用.而不是-了。

posted @ 2016-12-20 15:02  GoQC  阅读(12842)  评论(0编辑  收藏  举报