logstash 配置文件使用笔记

大背景配置Filebeat获取log数据,配置output传输到logstash,logstash进行二次转换存储过elasticsearch中

log日志格式为:

2021-02-07 13:56:15,025 - [xxxxx],  xx:{"xxx": "xxx", "dt": 1612677351} ,以上log数据是简写,用logstash  拆分字段,logstash配置文件如下:

input { stdin { } }
filter {
   dissect {
    mapping => { "message" => "%{ts} %{+ts} - [%{status}],  %{brand}:%{msg}" }
  }
  date {
       match => [ "ts" , "YYYY-MM-dd HH:mm:ss,SSS" ]
       timezone=> "Asia/Shanghai"
       target => "logdata"
       remove_field => [ "ts" ]
  }
  json {
        source => "msg"
      } 
  date{
      timezone => "UTC"
      match => [ dt , "UNIX" ]
      target => "dttodate"
  }
 ruby {
     code => "
       event.set('logdateunix', event.get('logdata').to_i)
      # event.set('@timestamp', event.get('logdata'))
    
     "
     }
}

以上用到了logstash下3中filter插件,

dissect 下的  mapping => { "message" => "%{ts} %{+ts} - [%{status}], %{brand}:%{msg}" } 对日志 2021-02-07 13:56:15,025 - [xxxxx],  xx:{"xxx": "xxx", "dt": 1612677351} 进行解析
date{
      timezone => "UTC"
      match => [ dt , "UNIX" ]
      target => "dttodate"
  }  日志里面dt是秒时间戳,这个时间需要在grafana中进行展示,故这里进行转化,dt这个字段在json格式里面,需要放到 json {  source => "msg" } 后面执行才有效果
 event.set('logdateunix', event.get('logdata').to_i)  这个是把时间格式转化为unix时间戳
 event.set('@timestamp', event.get('logdata'))  这个是用日志里面的时间覆盖es里面 @timestamp 时间


 
posted @ 2021-02-07 14:40  gaojiandong  阅读(88)  评论(0)    收藏  举报