Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Capture unmatched lines #1421

Merged
merged 4 commits into from
Jan 25, 2017
Merged

Conversation

jitran
Copy link
Contributor

@jitran jitran commented Jan 17, 2017

Essentially all unmatched lines will be placed inside the parse_fail attribute, i.e.

{  
   "parse_fail":"unmatched line....rest of the line",
   "server":"myserver",
   "stack":"my-app-dev-01",
   "application":"my-app",
   "log_type":"apache.access",
   "time":"2017-01-16T23:06:49Z"
}

This will enable our analytics tools to pick up any pattern matching regexp issues.

…rue, all singular and multiline log lines that don't match the parser regex will be stored in an attribute called parse_fail, and eventually saved in the output destination.
@repeatedly
Copy link
Member

Additional comments

  • Need test for this parameter
  • How about adding unmatched_tag for emitting unmatched lines to other tag, not including same EventStream.

@@ -65,6 +65,8 @@ def initialize
config_param :read_lines_limit, :integer, default: 1000
desc 'The interval of flushing the buffer for multiline format'
config_param :multiline_flush_interval, :time, default: nil
desc 'Enable the option to capture unmatched lines.'
config_param :enable_catch_all, :bool, default: false
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

emit_unmatched_lines or emit_parse_failed_lines is more better.
enable_catch_all is unclear name for me.

if @enable_catch_all
record = {'parse_fail' => line}
record[@path_key] ||= tail_watcher.path unless @path_key.nil?
es.add(Time.now.to_i, record)
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Use EventTime.now. Don't use Time directly for event time.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We're using the Redhat version of td-agent which comes with Fluentd v0.12. Do you know when the 0.14 branch will be stable? If it's still quite long away, should I merge my branch into the 0.12 branch instead?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If you want this feature in v0.12, you also need to send a patch to v0.12 branch.

@jitran jitran mentioned this pull request Jan 20, 2017
@jitran
Copy link
Contributor Author

jitran commented Jan 23, 2017

Hi @repeatedly, I have implemented the tests for the new parameter, but the existing unit tests seem to fail randomly between the different ruby releases, and I've noticed when the CI runs again, those tests pass again.

if @emit_unmatched_lines
record = {'unmatched_line' => line}
record[@path_key] ||= tail_watcher.path unless @path_key.nil?
es.add(Time.now.to_i, record)
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Still Time.now.to_i

@@ -149,6 +149,29 @@ def test_emit(data)
assert_equal(1, d.emit_count)
end

data(flat: config_element("", "", { "format" => "/^(?<message>test.*)/", "emit_unmatched_lines" => true }),
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Seems same config_element. No need data?

@jitran jitran force-pushed the emit-unmatched-lines branch from f41943d to d874db1 Compare January 25, 2017 04:13
@repeatedly repeatedly merged commit 19eb856 into fluent:master Jan 25, 2017
@repeatedly
Copy link
Member

Thanks!

repeatedly added a commit that referenced this pull request Jan 26, 2017
@jitran
Copy link
Contributor Author

jitran commented Jan 26, 2017

Thanks for accepting the PR and merging it into the v.0.12 branch

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants