第四节 Logstash 基本配置
1、Logstash扮演的角色
- Shipper: 承运商,托运人,发货人;
- Broker: 经纪人; 中间人,代理人;
- Indexer: 分度器,编索引的人;
2、基本配置语法
Logstash 设计了自己的DSL(domain specific language)
2.1、区段(section)
Logstash用{}来定义区域。区域内可以包括插件区域定义,你可以在一个区域内定义多个插件。插件区域则可以定义键值对设置。示例如下:
input
{
stdin{}
syslog{}
}
2.2、数据类型
Logstash 支持少量的数据值类型:
bool
debug => true
string
host => "hostname"
nubmer
port => 514
array
match =>["datetime", "UNIX", "ISO8601"]
hash
options => { key1 => "value1", key2 => "value2" }
2.3、字段引用(field reference)
2.4、条件判断(condition)
表达式支持下面这些操作符:
- ==(等于), !=(不等于), <(小于), >(大于), <=(小于等于), >=(大于等于)
- =~(匹配正则), !~(不匹配正则)
- in(包含), not in(不包含)
- and(与), or(或), nand(非与), xor(非或)
- ()(复合表达式), !()(对复合表达式结果取反)
通常来说,你都会在表达式里用到字段引用。为了尽量展示全面各种表达式,下面虚拟一个示例:
if "_grokparsefailure" not in [tags]
{
}
else if [status] !~ /^2\d\d/ or ( [url] == "/noc.gif" nand [geoip][city] != "beijing" )
{
}
else
{
}
2.5、命令行参数
-e
执行logstash程序--config 或 -f
引入配置文件,默认配置文件的路径为/etc/logstash/conf.d。如果直接使用“-f /etc/logstash/conf.d/“,会将该目录中所有配置文件,按照文件名的字母顺序进行加载。--configtest 或 -t
用来测试Logstash读取到的配置文件语法是否能正常解析。Logstash配置语法是用grammar.treetop定义的。尤其是使用了上一条提到的读取目录方式的读者,尤其要提前测试。
- --log 或 -l
Logstash默认输出日志到标准错误。生成环境下你可以通过bin/logstash -l logs/logstash.log 命令统一存储日志
- --pipeline-workers 或 -w
运行filter和output的pipeline线程数量。默认是cpu的核数。
- --pipeline-batch-size 或 -b
每个Logstash Pipeline线程,在执行具体的filter和output函数之前,做多能积累的日志条数。默认是125条。这个值越大Logstash的性能会越好,同样也会消耗越多的JVM内存。
- --pipeline-batch-delay 或 -u
每个Logstash pipeline线程,在打包批量日志的时候,最多等待几毫秒。默认是5ms
- --pluginpath 或 -P
可以写自己的插件,然后用该参数加载它们。
- --verbose
输出一定的调试日志
- --debug
输出更多的调试日志