Logstash基础操作-Filter
admin
2023-02-28 10:02:15
0

Grok配置案例:

##启动文件配置:
# Sample Logstash configuration for creating a simple
# Beats -> Logstash -> Elasticsearch pipeline.
input {
  stdin{}
}
filter {
grok {
match => ["message","%{IP:clientip}\ \[%{HTTPDATE:timestamp}\]\
%{QS:referrer}\ %{NUMBER:response}\ %{NUMBER:bytes}"]
   }
}
output {
  stdout{
    codec => "rubydebug"
  }
}
##输出文件内容
172.16.213.132 [07/Feb/2018:16:24:19 +0800] "GET / HTTP/1.1" 403 5039
##显示内容
{
      "@version" => "1",
    "@timestamp" => 2019-11-10T06:02:42.865Z,
          "host" => "localhost.localdomain",
       "message" => "172.16.213.132 [07/Feb/2018:16:24:19 +0800] \"GET / HTTP/1.1\" 403 5039",
     "timestamp" => "07/Feb/2018:16:24:19 +0800",
         "bytes" => "5039",
      "response" => "403",
      "clientip" => "172.16.213.132",
      "referrer" => "\"GET / HTTP/1.1\""
}

Grok 过滤重复字段

## 配置文件
# Sample Logstash configuration for creating a simple
# Beats -> Logstash -> Elasticsearch pipeline.
input {
  stdin{
 }
}
filter {
  grok {
  match => ["message","%{IP:clientip}\ \[%{HTTPDATE:timestamp}\]\ 
  %{QS:referrer}\ %{NUMBER:response}\ %{NUMBER:bytes}"]
  remove_field => ["message"]
   }
}
output {
  stdout{
  codec => "rubydebug"
  }
}

Grok搭配Date时间插件配置

# Sample Logstash configuration for creating a simple
# Beats -> Logstash -> Elasticsearch pipeline.
input {
  stdin{
  }
}
filter {
grok {
 match => ["message","%{IP:clientip}\ \[%{HTTPDATE:timestamp}\]\ 
 %{QS:referrer}\ %{NUMBER:response}\ %{NUMBER:bytes}"]
 remove_field => ["message"]
   }
date {
  match => ["timestamp", "dd/MMMM/yyyy:HH:mm:ss Z"]
  }
}
output {
  stdout{
  codec => "rubydebug"
  }
}

Date 过滤重复得字段配置

# Sample Logstash configuration for creating a simple
# Beats -> Logstash -> Elasticsearch pipeline.
input {
  stdin{
  }
}
filter {
 grok {
   match => ["message","%{IP:clientip}\ \[%{HTTPDATE:timestamp}\]\ 
   %{QS:referrer}\ %{NUMBER:response}\ %{NUMBER:bytes}"]
   remove_field => ["message"]
   }
date {
  match => ["timestamp", "dd/MMMM/yyyy:HH:mm:ss Z"]
  
  }
mutate {
   remove_field => [ "timestamp" ]  
  }
}
output {
 stdout{
  codec => "rubydebug"
  }
}

综合练习配置参数

# Sample Logstash configuration for creating a simple
# Beats -> Logstash -> Elasticsearch pipeline.
input {
  stdin{
  }
}
filter {
  grok {
   match => ["message","%{IP:clientip}\ \[%{HTTPDATE:timestamp}\]\ 
   %{QS:referrer}\ %{NUMBER:response}\ %{NUMBER:bytes}"]
   remove_field => ["message"]
  }
 date {
  match => ["timestamp", "dd/MMMM/yyyy:HH:mm:ss Z"] 
  }
 mutate{
    rename => {"response" => "response_new"}
    gsub => ["referrer", "\"", ""]
    remove_field => [ "timestamp" ]
    split => ["clientip", "."]
  }
}
output {
 stdout{
  codec => "rubydebug"
  }
}

Geoip 地理位置插件操作方式

# Sample Logstash configuration for creating a simple
# Beats -> Logstash -> Elasticsearch pipeline.
input {
  stdin{
  }
}
filter {
    grok {
     match => ["message","%{IP:clientip}\ \[%{HTTPDATE:timestamp}\]\ 
     %{QS:referrer}\ %{NUMBER:response}\ %{NUMBER:bytes}"]
     remove_field => ["message"]
   }
   date {
    match => ["timestamp", "dd/MMMM/yyyy:HH:mm:ss Z"] 
  }
   mutate{
      remove_field => [ "timestamp" ]
  }
  geoip {
    source => "clientip"
    database => "/usr/local/include/GeoLite2-ASN_20191105/GeoLite2-ASN.mmdb"
   }
}
output {
  stdout{
    codec => "rubydebug"
  } 
}

Geoip输出指定属性值

# Sample Logstash configuration for creating a simple
# Beats -> Logstash -> Elasticsearch pipeline.
input {
  stdin{
  }
}
filter {
    grok {
     match => ["message","%{IP:clientip}\ \[%{HTTPDATE:timestamp}\]\ 
     %{QS:referrer}\ %{NUMBER:response}\ %{NUMBER:bytes}"]
     remove_field => ["message"]
   }
   date {
    match => ["timestamp", "dd/MMMM/yyyy:HH:mm:ss Z"]
  }
   mutate{
      remove_field => [ "timestamp" ]
  }
geoip {
source => "clientip"
#database => "/usr/local/include/GeoLite2-Country_20191015/GeoLite2-Country.mmdb"
database => "/usr/local/include/GeoLite2-City_20191105/GeoLite2-City.mmdb"
fields => ["city_name", "region_name", "country_name", "ip", "latitude", "longitude", "timezone"]
   }
}
output {
  stdout{
    codec => "rubydebug"
  }
}
模拟数据:
36.7.152.182 [07/Feb/2018:16:24:19 +0800] "GET / HTTP/1.1" 403 5039

综合实战

# Sample Logstash configuration for creating a simple
# Beats -> Logstash -> Elasticsearch pipeline.
input {
  stdin{}
}
filter{
grok{
  match => {"message" => "%{TIMESTAMP_ISO8601:localtime}\|\~\|%{IP:clientip}
  \|\~\|%{GREEDYDATA:http_user_agent}\|\~\|%{GREEDYDATA:url}
  \|\~\|%{GREEDYDATA:mediaid}\|\~\|%{GREEDYDATA:osid}"}
  remove_field => [ "message" ]
   }
date {
    match => ["localtime", "yyyy-MM-dd'T'HH:mm:ssZZ"]
    target => "@timestamp"
   }
mutate {
      remove_field => ["localtime"]
   }
geoip {
 source => "clientip"
 #database => "/usr/local/include/GeoLite2-Country_20191015/GeoLite2-Country.mmdb"
 database => "/usr/local/include/GeoLite2-City_20191105/GeoLite2-City.mmdb"
 fields => ["city_name", "region_name", "country_name", "ip", "latitude", "longitude", "timezone"]
  }
}
output {
   stdout {
   codec => "rubydebug"
   }
}
示例:2018-02-09T10:57:42+08:00|~|123.87.240.97|~|Mozilla/5.0
(iPhone;CPU iPhone OS 11_2_2 like Mac OS X)
AppleWebKit/604.4.7 Version/11.0 Mobile/15C202 Safari/604.1
|~|http://m.sina.cn/cm/ads_ck_wap.html
|~|12434785489009|~|DF45566587855P



相关内容

热门资讯

郑丽文:只有中国国民党可以确保... 据凤凰卫视报道,国民党今天(7月25日)举行“全代会”,党主席郑丽文与党内提名的县市长参选人一同造势...
透视上半年消费外贸外资走势 新华社北京7月23日电 题:稳中提质 韧性增强——透视上半年消费外贸外资走势新华社记者谢希瑶、王聿昊...
水龙头出水小怎么解决 水龙头出水小可能是由多种原因引起的,以下是一些常见的解决方法:1. 清洁水龙头:水龙头使用时间长了,...
小神童洗衣机启动后不出水直接洗 有可能是洗衣机的进水阀被烧坏了,需要换一个新的进水阀安装上即可。另外不建议自己擅自拆卸洗衣机内部进行...
祝贺景德镇! 海报制作:苗夏阳正在韩国釜山举行的联合国教科文组织第48届世界遗产大会25日通过决议将“景德镇手工瓷...
中央空调不制冷怎么办-中央空调... 中央空调,是电器股份有限公司主要产品之一,但是由于中央空调使用环境和使用方式的不同,在使用过程中就会...
空调不出水不制冷怎么回事 内罩长期不清洗,当然房间密封性差的话也会导致这种现象;其次就是外机问题,如果外机积满灰尘,会成空调制...
空调不出水,不制冷 原因有多种,可能是电源插头没有接牢、制冷剂不足、空调短时间休息间隙、空调滤网积灰等等。很多情况可以自...
中方反击了,欧盟回应 据凤凰卫视报道,中国商务部7月24日宣布对包括德国军工巨头莱茵金属公司在内的14家欧洲企业实施出口管...
这个“中国首次”,很有看点 刚刚,韩国釜山,第48届世界遗产大会传来好消息:“景德镇手工瓷业遗存”成功列入《世界遗产名录》!这是...