1. Elastic Common Schema(ECS)的字段标准化中@timestamp、log.level、message、service.name 等核心字段如何统一业务日志字段集?
在使用 Elastic Common Schema(ECS)作为日志字段标准时,如何通过 @timestamp、log.level、message、service.name 等核心字段来统一不同团队、不同服务的业务日志字段集合?
- 理解 ECS 的核心字段及其语义(时间戳、级别、消息、服务名)
- 掌握字段统一对查询、告警、关联分析的价值
- 了解 ECS 的扩展与自定义字段(ECS 命名空间)规范
ECS 定义了一套统一的字段命名与语义规范,核心字段包括 @timestamp(事件发生时间,ISO 8601 格式)、log.level(日志级别,如 DEBUG/INFO/WARN/ERROR)、message(日志正文,人类可读)、service.name(服务名)等。它通过"字段名 + 等级 + 语义"三层结构约束字段,例如 host.name、client.ip、user.id 等都遵循统一命名,避免不同团队各自命名造成的语义冲突。统一这套字段集后,跨服务的日志才能在集中式日志平台(如 Elasticsearch、Datadog)上被一致的查询语法、通用告警规则和继承下来的可视化面板直接消费,从而等效地"讲同一种语言"。对于 ECS 未覆盖的业务字段,应使用 ECS 的保留(reserved)命名空间(如 custom、business 等)进行扩展,并记录到 schema 文档中。
日志平台的价值高度依赖字段的一致性。若 A 团队用 create_time、B 团队用 createdAt,则跨服务排障时无法用一条查询串起完整链路。ECS 正是通过把"字段长什么样"标准化,让数据的可发现性、可检索性和可关联性成为可能,其核心价值在于"一次定义、处处复用"。
// 使用 logstash 或 beats 在写入前归一化字段
{
"@timestamp": "2026-08-03T10:15:30.123Z",
"log.level": "INFO",
"message": "order created",
"service.name": "order-service",
"service.version": "1.2.0",
"user.id": "u_1001",
"order.id": "ord_998877",
"event.action": "order.create"
}