设计原则
编辑设计原则
编辑此处考虑因素构成了 ECS 设计的基础。这些原则有助于指导项目做出适当的决策。
通用架构
编辑ECS 的目标是最大限度地提高互操作性和可重用性。扩展 ECS 中表示的概念时,请考虑预期的用例范围是广泛还是狭窄。
定义字段时使用狭窄、缺乏或不正确的定义会限制将来的使用。最佳实践是添加最少的字段来充分捕获事件。将来添加更多字段比更改或删除已建立的字段要简单。
此外,避免因为存在某个概念而添加字段。例如,网络协议规范可能包含许多功能,但有些功能晦涩难懂且使用频率低。最后,避免为了标准化而进行标准化。
字段集是命名空间
编辑字段集创建独立的架构部分,以便隔离地理解某个概念。
复杂的概念可以使用嵌套更好地捕获。字段集可能包含构成更大概念的几个子组件:dns.question.class
、dns.question.answer
、dns.question.type
。
命名一致性
编辑架构中一致的命名使学习和记忆字段名称更容易。不要将具有广泛含义的术语限制为单一情况。
示例
- 许多概念可以包含
.name
或.id
值(例如,event.id
、error.id
、group.id
、rule.id
、user.id
)。 - 单个事件中的多个潜在 IP 地址(
source.ip
、destination.ip
、host.ip
)。
重用
编辑添加或扩展概念时,引入额外字段似乎是必要的。但是,尝试使用现有字段或重用现有字段集以避免重复字段。在不同事件源中利用一致的字段有助于构建更简单的查询和可视化。
例如,假设某个应用程序或框架为其发出的每个日志生成一个唯一 ID。请考虑使用 event.id
字段,而不是添加特定于该应用程序的自定义 .id
字段。
重用字段简化了在单个事件中捕获几种类型的实体。例如,user.*
字段集和重用 user.target.*
允许收集关于操作用户和目标用户的相同详细信息。无需重新定义整个 user.*
字段集。在有限的使用情况下,如果需要捕获多个相同的重用,请考虑使用字段集重用的数组。
自定义字段是一项功能
编辑许多情况下都需要自定义字段才能完全捕获事件内容。鼓励用户和集成添加自定义字段以捕获 ECS 中未定义的概念。自定义字段使用户能够灵活地为其内部用例、不太常见的概念和实验添加字段。
按照最佳实践,如果 ECS 中出现类似的概念,用户和集成可以创建迁移路径。