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



相关内容

热门资讯

空调连续工作多久需要停机休息 空调连续工作的时间取决于多个因素,包括空调的型号、功率、使用环境和维护情况等。一般来说,空调可以连续...
空调哪个符号是除湿的 空调除湿功能通常用一个水滴形状的符号表示。不同品牌和型号的空调遥控器可能会有所差异,但一般来说,除湿...
格力空调多长时间加一次氟利昂 1、一般情况下,空调对氟利昂的使用量是非常小的,所以在空调使用了四年左右的时候再考虑加也没问题。2、...
空调用多长时间需要加氟一次 一般情况下是五年。当出现以下这几种情况时,空调才需要加氟。1、空调的室内机和室外机各有两个接口,当接...
格调生活·C标思享荟:卡萨帝在... 9月12日的郑州龙湖金融岛,夜风轻拂,灯光璀璨。“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑...
品牌价值破千亿、高端份额持续领... 9月12日,“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑州站”在郑州龙湖金融岛举办。2026...
空调主板坏了修800还是换新的 空调主板坏了是修还是换新,需要考虑多个因素,以下是一些建议:1. 维修成本:如果维修费用较低,比如 ...
空调开多久需要休息多长时间 问题:空调开多久需要休息多长时间回答:1、在使用空调的过程中,一般空调开7~8个小时左右需要休息2~...
中央空调多长时间清洗一次 1、一般空调开机前清洗一次即可,空调开机中间时段再清洗一次,空调关机时清洗一次,这样比较合理。2、空...
中央空调氟利昂多久加一次 看空调制热和制冷程度,很多人的观点认为氟利昂必须一年放一次,其实这个观点是错误的,理解上面有点偏差,...