轨道的日志格罗克模式 4.



>有人有Ruby on Rails 4多行日志的Logstash模式吗?

我只有 Rails 3 的模式,它的日志结构大不相同:

RUUID h{32}
# rails controller with action
RCONTROLLER (?<controller>[^#]+)#(?<action>w+)
# this will often be the only line:
RAILS4HEAD (?m)Started %{WORD:verb} "%{URIPATHPARAM:request}" for % {IPORHOST:clientip} at (?<timestamp>%{YEAR}-%{MONTHNUM}-%{MONTHDAY} %{HOUR}:%{MINUTE}$
# for some a strange reason, params are stripped of {} - not sure that's a good idea.
RPROCESSING W*Processing by %{RCONTROLLER} as (?<format>S+)(?:W*Parameters: {%{DATA:params}}W*)?
RAILS4FOOT Completed %{NUMBER:response}%{DATA} in %{NUMBER:totalms}ms %{GREEDYDATA}
RAILS4PROFILE (?:(Views: %{NUMBER:viewms}ms | ActiveRecord: %{NUMBER:activerecordms}ms|(ActiveRecord: %{NUMBER:activerecordms}ms)?
# putting it all together
RAILS4 %{RAILS4HEAD}(?:%{RPROCESSING})?(?<context>(?:%{DATA}n)*)(?:%{RAILS4FOOT})?

Rails 4 日志现在采用格式,其中包括时间戳,看起来像是 ID (#)。

I, [2016-01-26T23:21:44.581108 #27447]  INFO -- : Started GET "/login" for XXX.XXX.XXX.XXX at 2016-01-26 23:21:44 -0800

我搜索了很多 rails4 grok 模式,没有希望。

我发现了一些我现在正在使用的替代方案,它们可能对遇到相同问题的人有所帮助。

方法#1

首先,将 lograge gem 添加到您的应用程序中。 此 Gem 会将 Rails 日志简化为您可以使用 grok 轻松解析的内容。

然后,您可以使用以下模式

LOGRAGE %{WORD:method}%{SPACE}%{DATA}%{SPACE}action=%{WORD:controller}#%{WORD:action}%{SPACE}status=%{INT:status}%{SPACE}duration=%{NUMBER:duration}%{SPACE}view=%{NUMBER:view}(%{SPACE}db=%{NUMBER:db})?%{GREEDYDATA}

本文中提到了此方法。

方法#2

作为另一种选择,您可以使用 json 筛选器,如以下文章所示,其日志配置略有不同。

filter {
  json {
    source => "short_message"
    remove_field => "short_message"
  }
}

相关内容

  • 没有找到相关文章

最新更新