利用Logstash提供的插件用来控制数据传输的流量。
1,削减数据量,剪除掉不需要的数据内容
2,控制数据来源的速度,减少想目标推送数据的频率
操作方法:
drop过滤器:删除掉经过过滤器的事件
prune过滤器: 设置黑白名单,只允许部分字段或者禁止部分字段数据进行传输
sleep过滤器:休眠过滤器,设置数据传输的最短间隔
throttle过滤器:是一种限制一段时间内事件数量的过滤器
drop
作用是删除到达此过滤器的所有内容
可配置参数
此过滤器可配置的非公共参数只有percentage。其配置内容为0-100。表示删除通过此过滤器数据的比例。0为不删除、100为完全删除。
eg:
filter {
if [tag] == "test" {
drop {} #删除 tag为test的所有日志,不将他们上报输出
}
}
prune
用于根据字段名或其值(名称和值也可以是正则表达式)的白名单或黑名单从事件中删除字段。
两种选择,一种是指定允许通过的字段内容,一种是指定了不允许通过的字段内容。配置此参数的时候需要考虑实际情况。使用此过滤器的时机主要是当事件存在多种字段,但是一些字段并不是业务中需要或者只有部分字段是业务需要的时候使用的。
可配置参数
参数 | 作用 |
---|---|
blacklist_names | 需要被排除的名单 |
blacklist_values | 需要被排除字段中的指定值 |
interpolate | |
whitelist_names | 允许被通过的字段 |
whitelist_values | 允许被通过的字段的值 |
eg1:
filter {
prune {
whitelist_names => [ "name" ] #限制只通过name字段
}
}
eg2:
filter {
prune {
blacklist_values => [ "name","nginx" ] #禁止掉字段中固定值的获取
}
}
sleep
作用是让logstash在指定的时间内停止运行。
使用这种方式会强制性的限制每条事件进过logstash的最低间隔。使用此过滤器可以明显的限制数据的传输速率
可配置的参数
参数 | 作用 |
---|---|
every | 配置每经历一定数量的事件之后执行睡眠操作 |
replay | 启用重播模式 |
time | 每个事件的睡眠时间长度 |
eg1:
filter {
sleep {
time => "1"
every => 10 # 每处理10条消息,休息1s
}
}
eg2:
filter {
sleep {
time => 0.5
replay => true # 现在以每1秒一条数据向队列中发送消息,这个时候每条数据会以2秒(1/0.5)的速度去处理事件
}
}
throttle
控制事件的数量。
可配置参数
参数 | 作用 |
---|---|
after_count | 周期内的事件数量,大于此计数的事件将被限制 |
before_count | 周期内的事件数量,少于此计数的事件将被限制 |
key | 用于标识事件的密钥。具有相同键的事件被分组在一起。 |
max_age | 对周期的定义,一个时隙的最大年龄。较高的值可以更好地跟踪事件的异步流,但需要更多的内存。根据经验,应将此值至少设置为周期的两倍。 |
max_counters | 对周期的定义,减少时隙的最大期限之前要存储的最大计数器数 |
period | 对周期的定义,从首次发生事件到创建新时隙之间的时间 |
eg:
filter {
#设置了一个10秒只接收8条数据的限制,同时设置了时间间隔最长20秒的限制
throttle {
before_count => -1
after_count => 8
period => 10
max_age => 20
key => "%{userType}"
add_tag => "throttled"
}
}