0
我正在尝试使用Logstash进行一些日志分析。Logstash通过唯一IP进行计数
我需要从Apache访问日志中计算唯一的IP地址,然后我需要将它们与计数过滤器进行匹配,以确定是否发送电子邮件。
类似这样的: 如果在5分钟的时间间隔内从一个唯一的IP访问10次以上,他们需要发送一封带有此IP的电子邮件。
什么是最好的解决方案呢?
我正在尝试使用Logstash进行一些日志分析。Logstash通过唯一IP进行计数
我需要从Apache访问日志中计算唯一的IP地址,然后我需要将它们与计数过滤器进行匹配,以确定是否发送电子邮件。
类似这样的: 如果在5分钟的时间间隔内从一个唯一的IP访问10次以上,他们需要发送一封带有此IP的电子邮件。
什么是最好的解决方案呢?
这样做非常困难 - 要做到这一点,您需要为每个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地址。
这是一个很棒的/完整的回复! 因为我需要这个产品的应用程序,你会建议我一个报警系统,由同一个IP的大量访问触发?它也可以是除Logstash以外的其他工具。 – Rafa 2014-10-07 17:02:49