配置文件语法
区段
Logstash 用 {} 来定义区域。区域内可以包括插件区域定义,你可以在一个区域内定义多个插件。插件区域内则可以定义键值对设置。
Logstash 配置一定要有一个 input 和一个 output。在演示过程中,如果没有写明 input,默认就会使用 input/stdin ,同理,没有写明的 output 就是 output/stdout。
示例如下:
input {
stdin {}
syslog {}
}
数据类型
类型 | 举例 |
---|---|
bool | debug => true |
string | host => "hostname" |
number | port => 514 |
array | match => ["datetime", "UNIX", "ISO8601"] |
hash | options => { key1 => "value1", key2 => "value2" } |
注意:如果你用的版本低于 1.2.0
,哈希的语法跟数组是一样的,像下面这样写:
match => [ "field1", "pattern1", "field2", "pattern2" ]
字段引用
- 字段是
Logstash::Event
对象的属性。 - 为了与
ElasticSearch
中的字段对应,故称为字段。 - 字段支持嵌套。如
[geoip][location]
- 字段支持下标与倒序下标。如
[geoip][location][-1]
- 字段在字符串中引用举例。
"the longitude is %{[geoip][location][0]}"
条件判断
- ==(等于), !=(不等于), <(小于), >(大于), <=(小于等于), >=(大于等于)
- =~(匹配正则), !~(不匹配正则)
- in(包含), not in(不包含)
- and(与), or(或), nand(非与), xor(非或)
- ()(复合表达式), !()(对复合表达式结果取反)
if "_grokparsefailure" not in [tags] {
pass
} else if [status] !~ /^2\d\d/ or ( [url] == "/noc.gif" nand [geoip][city] != "beijing" ) {
pass
} else {
pass
}