logstash清洗日志处理

用 date 插件 实现

input {
  beats {
    port => 5044
  }
}

filter {
  # 如果日志是整个 message,需要先用 grok ,也实现从日志中新增字段: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"       # 明确时区
    target => "@timestamp"            # 默认就是 @timestamp,可以省略
  }

  # 可选:删除原字段
  mutate {
    remove_field => ["@version", "event", "agent", "hosts"]
  }
}

output {
  elasticsearch {
    hosts => ["http://localhost:9200"]
## 动态生成索引,这里在filebeat 中使用fields新增可选字段project、env、log_type,这里引用
    index => "%{[fields][project]}-%{[fields][env]}-%{[fields][log_type]}%{+YYYY.MM.dd}"
  }
  stdout { codec => rubydebug }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容