用 date 插件 實現(xiàn)
input {
beats {
port => 5044
}
}
filter {
# 如果日志是整個 message,需要先用 grok ,也實現(xiàn)從日志中新增字段:logtime、loglevel、appname、pid、traceid
grok {
match => { "message" => "%{TIMESTAMP_ISO8601:logtime} \[%{SPACE}%{LOGLEVEL:loglevel}\]\[%{DATA:appname}\]\[%{NUMBER:pid}\]\[(?:%{NUMBER:traceid}|)\]" }
}
# 用 date 插件替換 @timestamp
date {
match => ["logtime", "ISO8601"] # 如果是標準 ISO8601 格式
timezone => "Asia/Shanghai" # 明確時區(qū)
target => "@timestamp" # 默認就是 @timestamp,可以省略
}
# 可選:刪除原字段
mutate {
remove_field => ["@version", "event", "agent", "hosts"]
}
}
output {
elasticsearch {
hosts => ["http://localhost:9200"]
## 動態(tài)生成索引,這里在filebeat 中使用fields新增可選字段project、env、log_type,這里引用
index => "%{[fields][project]}-%{[fields][env]}-%{[fields][log_type]}%{+YYYY.MM.dd}"
}
stdout { codec => rubydebug }
}