1.语法
logstash使用{}来定义区域(input,filter,output),区域内可以包括插件区域定义,你可以在一个区域内定义多个插件。插件区域内则可以定义键值对设置。
logstash正常运行至少需要input和output区域。
示例如下:
input {
stdin {
type => "test"
}
file {
path => "/var/log/messages"
type => "syslog"
}
}
filter { }
output {
stdout { codec => rubydebug }
}
2.数据类型
Logstash 支持少量的数据值类型:
bool: debug => true
string: ip => "10.10.10.1"
number: port => 22
array: match => ["logdate", "UNIX", "ISO8601"]
hash: options => { key1 => "value1", key2 => "value2"}
3.字段引用
在 Logstash 配置中使用字段的值,只需要把字段的名字写在中括号[]里就行了,比如从 geoip 里这样获取longitude值[geoip][location][0](也可以使用倒序[-1] 取最后一个值)
Logstash还支持变量内插,在字符串里使用字段引用的方法是这样:"the longitude is %{[geoip][location][0]}"
4.条件判断
比如if表达式:
if EXPRESSION {
...
} else if EXPRESSION {
...
} else {
...
}
表达式支持下面这些操作符:
==
(等于), !=
(不等于), <
(小于), >
(大于), <=
(小于等于), >=
(大于等于)
=~
(匹配正则), !~
(不匹配正则)
in
(包含), not in
(不包含)
and
(与), or
(或), nand(非与), xor(非或)
()
(复合表达式), !()
(对复合表达式结果取反)
5.使用系统环境变量
logstash可使用系统环境变量,比如有一个变量PORT,shell中执行export PORT=123
logstash配置:
port => ${PORT} 结果为:port => 123
如果PORT变量没有定义,会抛出错误,可以配置一个默认值
port => ${PORT:456} 结果为:port => 456