-
Notifications
You must be signed in to change notification settings - Fork 419
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
How to share schemas used with fields not in ECS #52
Comments
For things that need to live along side a standard/specification but are not part of it, I have two examples:
I wonder if we make some recommendations for namespacing vendor/device-specific fields. Something like For example, Okta's System Log has a top-level object:
This is likely uncommon and specific to Okta's System Log. Using the above proposal, maybe this can be stored as:
My goals are:
|
My above comment assumes we want non-ECS data to mix with ECS data in the same documents. Is this assumption true? |
@jordansissel Yes, it's expected we mix non-ECS and ECS data in one event. As an example Metricbeat has lots of fields which are very specific to some service and will not make sense in ECS but still the "foundation" of the event will be based on ECS. |
BTW: I think the two topics here are a bit different. One is guidance on what our recommendation is on how to extend events outside ECS. The other part is how we let people share ideas on how they mapped the fields to ECS and structured their events around it with others for inspiration. I wonder if we should open a separate issue to discuss the "recommendations"? |
@ruflin I had another thought, that perhaps field aliases (assuming they are going to land in Elasticsearch) might be another way to solve this. My ECS transform is done in Go right now before ingestion, for example, and I copy things as-is without modifying the values (to change types from string/date/number/etc). Instead, with field aliases, we could provide this to Elasticsearch and let it do the mappings (This assumes the field values are usable as-is without modification, though?) For Okta, for example, I transform |
I have a similar aproach in mind for Beats just the other way around. The "original" will be the ECS one and the okta specific name in your case will be the field alias, so you still need to transformation. The reason is that a field alias can only point to one field and multiple aliases can point to the same field. Lets assume you have |
@ruflin Maybe it's an idea to create a subfolder in the ecs repository, for example named
Once a custom object is mature enough, it could be migrated to ecs. |
@ruflin Well my idea was to work with 2 templates and that f5.yml would only contain the dedicated f5 object fields. ECS fields would come from the template.json, which should have a higher template order in that case. As I'm personnally not interested in fields that have no use for me (and I can imagine fields.yml could grow fast), Î was thinking aggregating all 'maybe-ecs' fields into 1 fields.yml would make it bloated and 95 % unusable.. On the other side, as you suggest above, If I don't want to use more then 2 templates, this approach means I would have to group everything which is not already in ECS in f5.yml while there are definitely use cases where f5 could contain other root level data which is also not in ECS, but could also deserve their own root object. Seeing as you did quite a bit of work already in #55 I defintely see the added value in your approach. As for now I'm integrating the ecs fields into my f5 template, I see no problem in testing your method and re-evaluating if necessary. Not sure if your pr means these mappings will be added to template.json too? |
The PR #55 is only for sharing fields and was not thinking yet of the implication of template. It also has no effect on the template.json that is generated, this is ECS only. The idea would be to have there a |
Correct. Fyi, I have a lot more use cases then only F5. The F5 grok patterns are just some sort of a hobby project which I manage in my private time.. |
Hi @ruflin the ECS repo now has tooling which allows for users to add their own fields in conjunction with ECS |
Most implementations which use ECS have ECS as the basic fields but have their own fields on top. As inspiration for which fields could be added to ECS and and inspiration for other users it would be interesting if in the context of ECS people could share their used schemas for example with
F5
.An current example we did with auditbeat data and the
hash
prefix can be found here:ecs/use-cases/auditbeat.yml
Lines 78 to 88 in a256a0c
These fields are currently listed in use cases but commented out. A better solution is needed. One idea would be to have these use cases with the complete set of fields an user can contribute them but all fields which are not part of ECS are listed separately. The two things I worry here is that creating the
fields.yml
is sometimes too much overhead and sharing just a json would be easier, the other part is people might get confused on what is part of ECS and what is not.Any ideas are more then welcome.
The text was updated successfully, but these errors were encountered: