您好,登录后才能下订单哦!
密码登录
登录注册
点击 登录注册 即表示同意《亿速云用户服务条款》
# LogStash中 filter如何使用
LogStash作为ELK技术栈中的核心数据收集和处理引擎,其filter插件在数据转换和增强环节起着关键作用。本文将深入探讨LogStash filter的工作原理、常用插件及实战配置技巧。
## 一、Filter基础概念
### 1.1 Filter的作用阶段
在LogStash的pipeline中,filter位于input和output之间,负责对原始数据进行:
- 字段提取(如从日志中解析时间戳)
- 格式转换(如字符串转数字)
- 数据丰富(如添加地理信息)
- 条件过滤(如丢弃调试日志)
```ruby
input { stdin {} }
filter {
# 这里添加filter配置
}
output { stdout {} }
适用于非结构化日志的字段提取:
filter {
grok {
match => { "message" => "%{TIMESTAMP_ISO8601:logtime} %{LOGLEVEL:level} %{GREEDYDATA:content}" }
}
}
常用模式:
- %{SYNTAX:SEMANTIC}
语法结构
- 内置120+模式(见/logstash/vendor/bundle/jruby/2.5.0/gems/logstash-patterns-core-4.1.2/patterns
)
规范化时间字段:
filter {
date {
match => ["logtime", "ISO8601"]
target => "@timestamp" # 默认覆盖系统时间戳
}
}
多功能字段处理器:
filter {
mutate {
rename => { "old_field" => "new_field" }
convert => { "bytes" => "integer" }
gsub => [
"message", "\r", ""
]
remove_field => ["temp_field"]
}
}
IP地址转地理位置:
filter {
geoip {
source => "client_ip"
target => "geo"
fields => ["city_name", "country_code"]
}
}
根据字段值动态处理:
filter {
if [type] == "nginx" {
grok { match => { "message" => "%{NGINXACCESS}" } }
} else if [level] == "ERROR" {
mutate { add_tag => ["error_log"] }
}
}
分步骤处理复杂日志:
filter {
# 第一阶段:提取基础字段
grok { ... }
# 第二阶段:处理提取后的字段
date { match => ["timestamp", "dd/MMM/yyyy:HH:mm:ss Z"] }
# 第三阶段:清理中间字段
mutate { remove_field => ["timestamp"] }
}
patterns_dir
参数tag_on_failure
标记解析失败事件remove_field
及时清理无用字段filter {
grok {
match => {
"message" => '%{IPORHOST:clientip} %{USER:ident} %{USER:auth} \[%{HTTPDATE:timestamp}\] "%{WORD:verb} %{DATA:request} HTTP/%{NUMBER:httpversion}" %{NUMBER:response} %{NUMBER:bytes} "%{DATA:referrer}" "%{DATA:agent}"'
}
}
date {
match => ["timestamp", "dd/MMM/yyyy:HH:mm:ss Z"]
}
useragent {
source => "agent"
target => "ua"
}
}
filter {
json {
source => "message"
target => "log_content"
}
if [log_content][error] {
mutate { add_tag => ["has_error"] }
}
}
测试grok模式:
bin/logstash -e 'filter { grok { match => { "message" => "%{PATTERN}" } } }'
查看事件数据:
output {
stdout { codec => rubydebug }
}
性能监控:
--debug
参数启动filter_duration
指标LogStash filter的强大之处在于其灵活的插件组合能力。掌握filter的使用可以显著提升日志处理效率,建议在实际使用中: 1. 从简单模式开始逐步复杂化 2. 合理使用条件判断减少不必要的处理 3. 定期review filter性能
附录: - 官方Filter插件列表 - Grok Debugger工具:Kibana内置或在线版本 “`
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。