1. 核心操作
如修改和删除事件。
1.1. date filter
解析字段中的日期,以用作事件的Logstash时间戳。
下面的配置解析一个名为logdate的字段来设置Logstash时间戳:
filter {
date {
match => [ "logdate", "MMM dd yyyy HH:mm:ss" ]
}
}
1.2. drop filter
删除事件。这个过滤器通常与条件句结合使用。
下面的配置将删除调试级别的日志消息:
filter {
if [loglevel] == "debug" {
drop {
}
}
}
1.3. fingerprint filter
通过应用一致性的散列来创建指纹字段。
下面的配置对IP、@timestamp和message字段进行指纹识别,并将散列添加到名为generated_id的元数据字段:
filter {
fingerprint {
source => ["IP", "@timestamp", "message"]
method => "SHA1"
key => "0123"
target => "[@metadata][generated_id]"
}
}
1.4. mutate filter
对字段执行一般的操作。您可以重命名、删除、替换和修改事件中的字段。
以下配置将HOSTORIP字段重命名为client_ip:
filter {
mutate {
rename => {
"HOSTORIP" => "client_ip" }
}
}
下面的配置将从指定的字段中删除前缀和后缀的空格:
filter {
mutate {
strip => ["field1", "field2"]
}
}
1.5. ruby filter
执行 Ruby 代码.
下面的配置执行Ruby代码,用来取消90%的事件:
filter {
ruby {
code => "event.cancel if rand <= 0.90"
}
}
2. 数据反序列化
2.1. avro codec
将序列化的Avro记录读取为Logstash事件。这个插件反序列化单个Avro记录。它不是用来读取Avro文件的。Avro文件有一个独特的格式,必须在输入时处理。
下面的配置反序列化Kafka的输入:
input {
kafka {
codec => {
avro => {
schema_uri => "/tmp/schema.avsc"
}
}
}
}
2.2. csv filter
将逗号分隔的值数据解析为单个字段。默认情况下,过滤器自动生成字段名称(column n1、column2等),或者您可以指定一个名称列表。还可以更改列分隔符。
以下配置将CSV数据解析为columns字段中指定的字段名:
filter {
csv {
separator => ","
columns => [ "Transaction Number", "Date", "Description", "Amount Debit", "Amount Credit", "Balance" ]
}
}