logstash_config

logstash_config

参考网站:
https://github.com/logstash-plugins/logstash-patterns-core/tree/main/patterns
http://grokconstructor.appspot.com/
https://www.elastic.co/guide/en/logstash/7.9/plugins-filters-grok.html
调试
logstash 7.9.3

/usr/share/logstash/bin/logstash -e 'input { stdin { } } output { stdout {} }'
/usr/share/logstash/bin/logstash --config.reload.automatic -f pipe01.conf 

/usr/share/logstash/bin/logstash --config.test_and_exit  -f /etc/logstash/conf.d/5044.conf
logstash -f /etc/logstash/conf.d/t.conf

# cat /etc/logstash/conf.d/t.conf
input { stdin {} }

filter {
    grok {
        match => ["message", "%{TIMESTAMP_ISO8601:logdate}"]
        }
    date {
        match => ["logdate", "yyyy-MM-dd HH:mm:ss.SSS","MMM dd yyyy HH:mm:ss","MMM  d yyyy HH:mm:ss", "ISO8601"]
        locale => "cn"
        timezone => "Asia/Shanghai"
        target => "@timestamp"
}
    mutate {
         remove_field => [ "logdate" ]
    }
}

output {
 stdout { codec => rubydebug }
}
v7.9.3
双输出且带判断

# cat /etc/logstash/conf.d/5044.conf
input {
  beats {
    port => 5044
  }
}

output {
  elasticsearch {
    hosts => ["http://10.10.10.34:29200","http://10.10.10.35:29200","http://10.10.10.36:29200"]
    index => "%{[fields][log_topics]}-%{+YYYY.MM.dd}"
}
  if "igo" in [fields][log_topics] or "zhang" in [fields][log_topics] {
    kafka {
      bootstrap_servers => "10.10.20.243:9095,10.10.20.242:9095,10.10.20.241:9095"
      topic_id => "G-IGO_ZHANG"
      client_id => "igozhang_log_kafka"
}
}
}
logstash 7.9.3
cat /etc/logstash/conf.d/igoelk.conf

input {
  beats {
    port => 5044
 
  }
 
}
 
filter{
    mutate{
        remove_field => ["host"]
        remove_field => ["agent"]
        remove_field => ["ecs"]
        remove_field => ["tags"]
        remove_field => ["fields"]
        remove_field => ["@version"]
        remove_field => ["@timestamp"]
        remove_field => ["input"]
        remove_field => ["log"]
    }
}
 
output {
  elasticsearch {
    hosts => ["192.168.22.68:9200"]
    index => "english"
  }
  stdout { codec => rubydebug }
}


logstash6.2.2

# cat /opt/logstash/pipeline/logstash.conf
input {
        kafka {
                bootstrap_servers => "172.22.240.171:29092,172.22.240.172:9092,172.22.240.173:9092"
                topics => ["resource_nginx","nginx_charge_manager","nginx_dal","nginx_imgmgr","nginx_vm_manager","nginx_vm_manager_v2","nginx_storage_index","nginx_storage_scheduler","nginx_charge_pc","nginx_charge_tv","nginx_charge_mobile","nginx-resource_type","nginx_access-service","nginx_archiver_manager","nginx_servo","nginx_tj-union-report","nginx_tj-union-access","nginx_tj-resource-limit","nginx_access","nginx_access_error","nginx_servo_error","nginx_live","nginx_live_error","img-res","resource_type"]
                codec => "json"
                consumer_threads => 2
                auto_offset_reset => "latest"
                enable_auto_commit => true
                auto_commit_interval_ms => "1000"
                group_id => nginx_logstash
        }
}

filter {

      if [fields][log_topics] =~ "nginx|resource"{
         grok {
          match => { "message" => '\[%{TIMESTAMP_ISO8601:date}\] (%{IPORHOST:remote_addr}|-) (%{QS:remote_user}|-) - (%{IPORHOST:server_name}|%{DATA:server_name}|-) (%{DATA:http_referer}|-) (%{DATA:http_user_agent}|-) (%{DATA:http_x_forwarded_for}|-) %{DATA:request} - %{BASE10NUM:status:int} (?:%{BASE10NUM:body_bytes_sent:int}|-) (%{BASE16FLOAT:request_time:float}|-) - (%{HOSTPORT:upstream_addr}|%{SPACE}) (%{BASE10NUM:upstream_status:int}|-) (?:%{BASE10NUM:upstream_response_time:float}|-)' }
         }
      }

}
output {
  elasticsearch {
    codec => rubydebug
    hosts => ["http://172.22.240.222:29200","http://172.22.240.223:29200","http://172.22.240.224:29200"]
    index => "cgbackend-%{[fields][log_topics]}-%{+YYYY.MM.dd}"
    #user => "elastic"
    #    #    #password => "changeme"
    }
    #            stdout { codec => rubydebug }
}
示例01:
55.3.244.1 GET /index.html 15824 0.043

Grok:
filter {
      grok {
        match => { "message" => "%{IP:client} %{WORD:method} %{URIPATHPARAM:request} %{NUMBER:bytes} %{NUMBER:duration}" }
      }
    }
	
结果:
After the grok filter, the event will have a few extra fields in it:
client: 55.3.244.1
method: GET
request: /index.html
bytes: 15824
duration: 0.043
日志示例:
nginx_access
10.98.91.152 - - [14/Mar/2022:18:41:23 +0800] "POST /stomp/296/shoguvrq/xhr?t=1647254458793 HTTP/1.1" 200 33 "https://igozhang.cn/basicFunction/locmanage/demandAndLoc" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.51 Safari/537.36" "-"
Avatar photo
igoZhang

互联网应用,虚拟化,容器

评论已关闭。