2014-10-07 6 views
0

Logstash로 일부 로그 분석을 시도하고 있습니다.고유 IP로 로그 샷 수

아파치 액세스 로그에서 고유 한 IP를 계산해야하는데 이메일을 보낼지 결정하기 위해 카운트 필터와 일치시켜야합니다.

이와 비슷한 것 : 5 분 간격으로 고유 IP에서 10+ 액세스가 발견되면이 IP가있는 이메일을 보내야합니다.

가장 적합한 해결책은 무엇입니까?

답변

1

이렇게하는 것은 의외로 어렵습니다. IP 주소 당 미터를 만들어야합니다. IP 주소 당 미터가 있으면, rate_5m을보고 threashold 이상인지를 결정해야합니다 (rate_5m은 지난 5 분 동안의 초당 비율입니다). 경고 신호를 보내야한다고 결정한 후에는 IP 주소를 포함시켜야합니다 (그래서 루비 필터를 사용하여 추출해야합니다). (IP 주소 당 미터로 인해) 미친 듯이 메모리를 씹을 가능성이 있기 때문에 프로덕션에서 이와 같은 것을 사용합니다.

filter { 
    metrics { 
    meter => "%{ip}" 
    add_tag => ["metric"] 
    } 
    ruby { code => ' 
    ip = nil 
    if event["tags"].include? "metric" 
     event.to_hash.each do |key,value| 
      if key.end_with?(".rate_5m") and value > 0.2 
       ip = key[0..-9] 
      end 
     end 
    end 
    if ip 
     event["ip"] = ip 
     event["tags"] = ["alert"] 
    end 
    ' 
    } 
} 

output { 
    if "alert" in [tags] { 
    email { ... } 
    } 
} 

당신은 아마 수에 높은 추세되는 IP 주소를 찾을 추세 알고리즘 같은 것을 사용에 대한 똑똑 사용자 정의 필터를 작성할 수 있습니다.

+0

대단한 답변입니다. 프로덕션 응용 프로그램에이 기능이 필요하므로 동일한 IP로 높은 액세스 수에 의해 트리거되는 경보 시스템에 대해 나에게 무엇을 제안 하시겠습니까? Logstash 이외의 도구 일 수도 있습니다. – Rafa