设计原则

编辑

此处考虑因素构成了 ECS 设计的基础。这些原则有助于指导项目做出适当的决策。

通用架构

编辑

ECS 的目标是最大限度地提高互操作性和可重用性。扩展 ECS 中表示的概念时,请考虑预期的用例范围是广泛还是狭窄。

定义字段时使用狭窄、缺乏或不正确的定义会限制将来的使用。最佳实践是添加最少的字段来充分捕获事件。将来添加更多字段比更改或删除已建立的字段要简单。

此外,避免因为存在某个概念而添加字段。例如,网络协议规范可能包含许多功能,但有些功能晦涩难懂且使用频率低。最后,避免为了标准化而进行标准化。

字段集是命名空间

编辑

字段集创建独立的架构部分,以便隔离地理解某个概念。

复杂的概念可以使用嵌套更好地捕获。字段集可能包含构成更大概念的几个子组件:dns.question.classdns.question.answerdns.question.type

命名一致性

编辑

架构中一致的命名使学习和记忆字段名称更容易。不要将具有广泛含义的术语限制为单一情况。

示例

  • 许多概念可以包含 .name.id 值(例如,event.iderror.idgroup.idrule.iduser.id)。
  • 单个事件中的多个潜在 IP 地址(source.ipdestination.iphost.ip)。

重用

编辑

添加或扩展概念时,引入额外字段似乎是必要的。但是,尝试使用现有字段或重用现有字段集以避免重复字段。在不同事件源中利用一致的字段有助于构建更简单的查询和可视化。

例如,假设某个应用程序或框架为其发出的每个日志生成一个唯一 ID。请考虑使用 event.id 字段,而不是添加特定于该应用程序的自定义 .id 字段。

重用字段简化了在单个事件中捕获几种类型的实体。例如,user.* 字段集和重用 user.target.* 允许收集关于操作用户和目标用户的相同详细信息。无需重新定义整个 user.* 字段集。在有限的使用情况下,如果需要捕获多个相同的重用,请考虑使用字段集重用的数组。

自定义字段是一项功能

编辑

许多情况下都需要自定义字段才能完全捕获事件内容。鼓励用户和集成添加自定义字段以捕获 ECS 中未定义的概念。自定义字段使用户能够灵活地为其内部用例、不太常见的概念和实验添加字段。

按照最佳实践,如果 ECS 中出现类似的概念,用户和集成可以创建迁移路径。