2014-02-12 14 views
8

우리 회사에서 서로 다른 두 가지 프로젝트에 대한 로그 저장을위한 서버를 설정하려고합니다. 이제는 키바나에서 그들을 가능하게하려고 노력합니다. 내 질문 : 로그 파일의 패턴이 다른 경우 어떻게 필터를 만들 수 있습니까? 예 : logstash.conf : 나는 각각있을 때,logstash : 서로 다른 패턴을 가진 복수의 로그 파일

input { 
    file { 
    type => "A" 
    path => "/home/logstash/A/*" 
    start_position => "beginning" 
    } 
file { 
    type => "B" 
    path => "/home/logstash/B*" 
    start_position => "beginning" 
    } 
} 

filter { 
    multiline { 
     pattern => "^%{TIMESTAMP_ISO8601}" 
     negate => true 
     what => "previous" 
    } 
    grok { 
    type => A 
    match => [ "message", "%{TIMESTAMP_ISO8601:logdate} %{DATA:thread %{LOGLEVEL:level}\s*%{DATA:logger_name}\s*-\s*%{GREEDYDATA:log_text}"] 

    add_tag => [ "level_%{level}" ] 
    } 
    date { 
     match => ["logdate", "YYYY-MM-dd HH:mm:ss,SSS"] 
    } 
    grok { 
     type => B 
     match => [ any other pattern ... 
} 
} 
output { 
    elasticsearch { embedded => true } 
} 

내가 각 프로젝트 (A, B, C, ...)을 자신의 필터 생성해야 할, 무엇을 내가 어떻게해야합니까 로그 파일의 다른 패턴을 다시 프로젝트로 만드시겠습니까?

+0

감사합니다. Ben, 시도해 보겠습니다. 그리고 A와 B가 서로 다른 로그 파일 패턴을 가지고있을 때 무엇을해야합니까? – user3300940

답변

9

모든 프로젝트에 대해 필터를 만들어야합니다.

Logstash 1.3.3에서는 문을 사용하여 각 프로젝트를 구별 할 수 있습니다. 예 :

filter { 

    multiline { 
     pattern => "^%{TIMESTAMP_ISO8601}" 
     negate => true 
     what => "previous" 
    } 

    if [type] == "A" { 
     grok { 
      match => [ any other pattern ... 
     } 
    } 
    else if [type] == "B" { 
     grok { 
      match => [ any other pattern ... 
     } 
    } 
} 

희망이 있으면 도움이 될 것입니다.

+0

감사합니다. Ben, 나는 그것을 시도 할 것이다. 그리고 A와 B가 서로 다른 로그 파일 패턴을 가지고있을 때 무엇을해야합니까? – user3300940

+0

하나의 입력 (파일)은 하나의 유형을 갖습니다. 따라서 A에 다른 로그 파일 패턴이있는 경우 먼저 로그를 분리해야합니다. –

+0

감사합니다 Ben.Now for my understanding : 로그 파일의 패턴이 다른 두 개의 다른 웹 서비스 (A와 B)가있는 경우 하나의 Kibana GUI 설치에 표시 할 수 없습니다. 모든 Webservices에 대해 Kibana GUI가 필요합니다. 두 대시 보드가있는 GUI에서는 불가능합니다. – user3300940