Logstash S3输入 - 过滤日志类型

时间:2016-04-12 14:15:04

标签: amazon-s3 filter logstash grok elastic-stack

使用 ELK 堆栈(Elasticsearch,Logstash和Kibana)集中日志。 工作很好但是..

我的S3存储桶中有一些类型的日志:

  • elasticbeanstalk -access-日志
  • 错误记录
  • tomcat7 access-logs
  • stacktrace 日志

我在Logstash配置文件中使用S3输入插件:

input {
 s3 {
    secret_access_key => "..."
    access_key_id => "..."
    region => "eu-central-1"
    bucket => "bucket_name"
    prefix => "resources/environments/logs/publish"
    codec => "plain"
  }
}

我正在使用一些过滤插件:

filter {
 if [type] ==  "access" { 
    mutate { replace => { type =>  "apache_access" } } 
    grok { match => { "message" => "%{COMBINEDAPACHELOG}" } } 
    date { match => [ "timestamp" , "dd/MMM/yyyy:HH:mm:ss Z" ] } 
 } else {
    multiline {
        #type => "all" # no type means for all inputs
        pattern => "(^.+Exception: .+)|(^\s+at .+)|(^\s+... \d+ more)|(^\s*Caused by:.+)"
        what => "previous" 
    }

    grok  {
        match => [ "message", "(?m)%{TIMESTAMP_ISO8601:timestamp} \[%{HOSTNAME:thread}\] %{LOGLEVEL:severity} %{GREEDYDATA:message}" ]
        overwrite => [ "message" ]
    }

    date {
        match => [ "timestamp" , "yyyy-MM-dd HH:mm:ss,SSS" ]
    }
  }
}

问题:有4种类型。如何使用' if过滤日志。我使用" http://grokconstructor.appspot.com"测试我的grok过滤器,它适用于1种类型的日志。

解决方案应该是这样的:

if [type] ==  "access" { 
   #my grok filter 
} else if [type] == "stacktrace" {
   #my grok filter
} else if [type] == "tomcat7" {
  #my grok filter
} ...

Tomcat Cataline out log:

    2016-04-07 15:27:28,459 [http-bio-8080-exec-33] ERROR v1.PaymentTxController  - Cannot get property 'attrs' on null object
java.lang.NullPointerException: Cannot get property 'attrs' on null object
    at com.b2boost.payment.provider.paybox.PayboxPaymentProviderService.createSubscriptionAndPay(PayboxPaymentProviderService.groovy:206)
    at com.b2boost.payment.provider.paybox.PayboxPaymentProviderService$__tt__pay_closure9.doCall(PayboxPaymentProviderService.groovy:82)
    at com.b2boost.commons.error.AppError.safe(AppError.groovy:53)
    at com.b2boost.commons.error.AppError.safe(AppError.groovy:60)
    at com.b2boost.payment.provider.paybox.PayboxPaymentProviderService.$tt__pay(PayboxPaymentProviderService.groovy:73)
    at com.b2boost.payment.PaymentService$__tt__pay_closure8.doCall(PaymentService.groovy:52)
    at com.b2boost.commons.error.AppError.safeWithEither(AppError.groovy:70)
    at com.b2boost.commons.error.AppError.safeWithEither(AppError.groovy:64)
    at com.b2boost.payment.PaymentService.$tt__pay(PaymentService.groovy:43)
    at com.b2boost.users.api.v1.PaymentTxController$_save_closure1.doCall(PaymentTxController.groovy:49)
    at com.b2boost.users.api.v1.BaseController.documentWithAuthorization(BaseController.groovy:101)
    at com.b2boost.users.api.v1.PaymentTxController.save(PaymentTxController.groovy:45)
    at grails.plugin.cache.web.filter.PageFragmentCachingFilter.doFilter(PageFragmentCachingFilter.java:177)
    at grails.plugin.cache.web.filter.AbstractFilter.doFilter(AbstractFilter.java:63)
    at com.odobo.grails.plugin.springsecurity.rest.RestTokenValidationFilter.processFilterChain(RestTokenValidationFilter.groovy:99)
    at com.odobo.grails.plugin.springsecurity.rest.RestTokenValidationFilter.doFilter(RestTokenValidationFilter.groovy:66)
    at grails.plugin.springsecurity.web.filter.GrailsAnonymousAuthenticationFilter.doFilter(GrailsAnonymousAuthenticationFilter.java:53)
    at com.odobo.grails.plugin.springsecurity.rest.RestAuthenticationFilter.doFilter(RestAuthenticationFilter.groovy:108)
    at grails.plugin.springsecurity.web.authentication.logout.MutableLogoutFilter.doFilter(MutableLogoutFilter.java:82)
    at com.odobo.grails.plugin.springsecurity.rest.RestLogoutFilter.doFilter(RestLogoutFilter.groovy:63)
    at com.brandseye.cors.CorsFilter.doFilter(CorsFilter.java:82)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
    at java.lang.Thread.run(Thread.java:745)

错误日志:

[Tue Apr 12 10:01:01 2016] [notice] Apache/2.2.29 (Unix) DAV/2 configured -- resuming normal operations

Stacktrace日志

2015-11-13 16:02:28,524 [MonitoringThread-118] ERROR StackTrace  - Full Stack Trace:
com.notnoop.exceptions.ApnsDeliveryErrorException: Failed to deliver notification with error code 8
    at com.notnoop.apns.internal.ApnsConnectionImpl$2.run(ApnsConnectionImpl.java:189)
    at java.lang.Thread.run(Thread.java:745)

0 个答案:

没有答案