logstash的配置问题

有这样一个需求

1.分析tomcat的accesslog,根据日志对某个API接口的请求进行监控
2.如果发现这个接口在单位时间内的请求频率过高,则进行报警

我整个架构是采用ELK进行的,提供filebeat进行日志采集,logstash进行日志清洗和频率识别

其中logstash的filter配置是

if [url_M] == "isOldPasswordCorrect" {

        metrics {
           meter => [ "passauth" ]
           add_tag => "metric"
          }

          if "metric" in [tags] {

                ruby {

                        code => "event.cancel if event['passauth.rate_1m']*60 < 100"

              }
                }

        }

这个是借助logstash filter插件metrics进行频率控制的

但是

系统会报错

Ruby exception occurred: undefined method `*' for nil:NilClass {:level=>:error}

看样子是没有获取到event['passauth.rate_1m']的值,无法进行数值运算?

求教

并且对logstash的event也没看懂。

阅读 7.3k
3 个回答

改成

code => "event.cancel if event['passauth']['rate_1m']*60 < 20"

就可以。