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

Update ICMP protocol to use ECS fields #10062

Merged
merged 2 commits into from
Jan 16, 2019

Conversation

andrewkroh
Copy link
Member

Only a few fields were changed. No dashboards were changed because there are no ICMP specific dashboards.

Here's a summary of what fields changed.

Part of #7968

Changed

  • responsetime -> event.duration (unit are now nanoseconds)
  • bytes_in -> source.bytes
  • bytes_out -> destination.bytes

Added

  • event.dataset = icmp
  • event.end
  • event.start
  • network.community_id
  • network.transport = icmp or ipv6-icmp
  • network.type = ipv4/ipv6

Unchanged Packetbeat Fields

  • status
  • type = icmp (we might remove this since we have event.dataset)
  • path = destination.ip (what is requested, not sure if this still makes sense)

Only a few fields were changed. No dashboards were changed because there are no ICMP specific dashboards.

Here's a summary of what fields changed.

Part of elastic#7968

Changed

- responsetime -> event.duration (unit are now nanoseconds)
- bytes_in -> source.bytes
- bytes_out -> destination.bytes

Added

- event.dataset = icmp
- event.end
- event.start
- network.community_id
- network.transport = icmp or ipv6-icmp
- network.type = ipv4/ipv6

Unchanged Packetbeat Fields

- status
- type = icmp (we might remove this since we have event.dataset)
- path = destination.ip (what is requested, not sure if this still makes sense)
Copy link
Member

@ruflin ruflin left a comment

Choose a reason for hiding this comment

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

It think even though the fields cannot be migrated directly because of unit change it would still be worth to have them in ecs-migration.yml but with alias: false.We potentially can use this to generate a list of fields that users need to look at when upgrading.

CHANGELOG.next.asciidoc Outdated Show resolved Hide resolved
@@ -241,7 +244,7 @@ func (f *Fields) MarshalMapStr(m common.MapStr) error {
structField := typ.Field(i)
tag := structField.Tag.Get("ecs")
if tag == "" {
panic(errors.Errorf("missing tag on field %v", structField.Name))
continue
Copy link
Member

Choose a reason for hiding this comment

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

Change in behaviour? Did not follow the code.

Copy link
Member Author

Choose a reason for hiding this comment

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

This file is "new" code as part of the parent issue #7968. Yes, this is a behavior change. It needed to be less restrictive to allow for fields in the object that are not to be marshaled. These are helper fields used to derive and make decisions about other fields that are marshaled.

Copy link
Member

Choose a reason for hiding this comment

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

Should this be mentioned in the changelog?

Copy link
Member Author

Choose a reason for hiding this comment

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

No, this is new code that's never been released and it has no impact on the user.

if len(trans.notes) == 1 {
evt.PutValue("error.message", trans.notes[0])
} else if len(trans.notes) > 1 {
evt.PutValue("error.message", trans.notes)
Copy link
Member

Choose a reason for hiding this comment

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

From and ES perspective, I would say both are the same as message in Lucene is always an array. Having said that, do we really want to put an array into message or flatten it first?

Copy link
Member Author

Choose a reason for hiding this comment

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

If there's more than one note/error then I'd rather sent them as discrete strings that are part of an array. As for whether to always send an array or not that doesn't really matter to me (or to ES). I'll probably refactor this when I get to the end of #7968, because I'm finding that each protocol had slightly different behavior w.r.t. notes. So if you have a preference for whether to always send an array or not let me know.

Copy link
Member

Choose a reason for hiding this comment

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

No strong preference either.

@andrewkroh
Copy link
Member Author

It think even though the fields cannot be migrated directly because of unit change it would still be worth to have them in ecs-migration.yml but with alias: false.

That already exists in the file.

# Packetbeat
## Shared
- from: bytes_in
to: source.bytes
alias: false
comment: Don't add an alias until all of Packetbeat stops using this field.
- from: bytes_out
to: destination.bytes
alias: false
comment: Don't add an alias until all of Packetbeat stops using this field.
- from: notes
to: error.message
alias: false
comment: Don't add an alias until all of Packetbeat stops using this field.
- from: responsetime
to: event.duration
alias: false
comment: >
Units changed from usec to nsec. Don't add an alias until all of Packetbeat
stops using this field.

@@ -241,7 +244,7 @@ func (f *Fields) MarshalMapStr(m common.MapStr) error {
structField := typ.Field(i)
tag := structField.Tag.Get("ecs")
if tag == "" {
panic(errors.Errorf("missing tag on field %v", structField.Name))
continue
Copy link
Member

Choose a reason for hiding this comment

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

Should this be mentioned in the changelog?

@andrewkroh andrewkroh merged commit 693f2d5 into elastic:master Jan 16, 2019
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants