设计原则
编辑设计原则编辑
此处的考量构成了 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 中未定义的概念。自定义字段使用户能够灵活地添加字段以满足其内部用例、不太常见的概念和实验。
遵循最佳实践,用户和集成可以创建一条路径,以便将来出现类似的概念时进行迁移。