利用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"
}
}