ELK 로그 분석 플랫폼 구축

logstash 모드(pattern)GitHub 주소:https://github.com/logstash-plugins/logstash-patterns-core/tree/master/patterns
logstash grok 디 버 깅 주소:http://grok.qiexun.net/
ELK 다운로드 주소:https://www.elastic.co/cn/downloads
filebeat 부분 설정
filebeat.inputs:

# Each - is an input. Most options can be set at the input level, so
# you can use different inputs for various configurations.
# Below are the input specific configurations.

- type: log

  # Change to true to enable this input configuration.
  enabled: True

  # Paths that should be crawled and fetched. Glob based paths.
  paths:
    - /data/log/mylog.log
    #- c:\programdata\elasticsearch\logs\*
  #        ,   multiline.pattern        ,        ,    
  multiline.pattern: '^([0-9]?[1-9]|[0-9]{2}[1-9][0-9]{1}|[0-9]{1}[1-9][0-9]{2}|[1-9][0-9]{3})-(((0[13578]|1[02])-(0[1-9]|[12][0-9]|3[01]))|((0[469]|11)-(0[1-9]|[12][0-9]|30))|(02-(0[1-9]|[1][0-9]|2[0-8])))'
  multiline.negate: true
  multiline.match: after
  tags: ["my_app1"]
  fields:
    app_id: my_app
    env: prod

logstash 부분 설정
input {
    beats {
        port => 5000  #       
        type => "log"
    }
}

filter {
    #        ,     
    mutate {
        gsub => ["message", "\u001B\[[;\d]*m", ""]
    }
    #                   
    if "my_app1" in [tags] or "my_app2" in [tags] {
        grok {
            #    pattern  
            patterns_dir => ["/usr/local/logstash-6.4.3/config/pattern"]
            match => {
                # MYDATE,GREEDYDATAALL     pattern
                message => "%{MYDATE:time}\s*\[%{DATA:thread}\]\s*%{LOGLEVEL:logLevel}\s*%{JAVACLASS:classInfo}\.\s*%{DATA:method}\s*-%{GREEDYDATAALL:message}"
	    }
	    overwrite => ["message"]
        }
    } else if "my_app3" in [tags] {
        
        dissect {
           
             mapping => {
                "message" => "%{time}  %{logLevel} %{?useless} --- [%{thread}] %{classInfo} %{?space}: %{message}"
            }
        }
    }

    mutate {
	#       json   _source       
	remove_field => ["beat", "kafka", "offset", "prospector"]

    }
}

output {
    elasticsearch {
        hosts => [ "http://127.0.0.1:9200" ]
        index => "logstash-%{[fields][env]}-%{[fields][app_id]}-%{+YYYY.MM.dd}"
        document_type => "%{type}"
    }
}

다음으로 전송:https://blog.51cto.com/11650412/2316768

좋은 웹페이지 즐겨찾기