日志基础回顾:日志级别、分类与格式标准

在构建日志工程体系之前,必须统一团队对日志基础概念的认知。日志级别、分类与格式标准是日志采集、解析、存储与告警的基石。本章将系统梳理这三项核心要素,为后续 Golden Signals 指标字段映射奠定数据语义基础。

2.1 日志级别(DEBUG / INFO / WARN / ERROR / FATAL)

日志级别用于标识日志事件的严重程度与紧急程度。标准 Syslog 协议(RFC 5424)定义了 8 个级别,业界通用实践将其简化为 5 级或 6 级模型。以下是生产环境中最常见的五级定义与使用场景:

级别 数值(Syslog) 含义 典型使用场景 是否告警
DEBUG 7 调试信息,仅开发/排障时启用 变量值追踪、函数入口/出口、循环迭代状态 否
INFO 6 正常操作的关键里程碑 服务启动/停止、请求开始/结束、配置加载 否
WARN 4 潜在问题,系统仍可运行 磁盘使用率超过 80%、重试次数超阈值、降级策略触发 可选(低优先级)
ERROR 3 功能故障,影响局部业务 数据库连接失败、API 返回 5xx、消息消费异常 是(P2/P3)
FATAL 2 严重故障,进程即将退出 内存溢出、配置校验失败、关键依赖不可用 是(P0/P1)
实践建议:生产环境默认只开启 INFO 及以上级别。DEBUG 日志必须通过动态配置开关控制,避免磁盘 I/O 爆炸。ERROR 与 FATAL 应直接映射为 Golden Signals 中的 错误率 指标。

2.2 日志分类(系统日志、应用日志、安全日志)

按日志来源与用途,可将日志分为三大类。每类日志的采集方式、保留策略与字段结构差异显著,在日志工程中需要分别设计 pipeline。

  • 系统日志(System Log):由操作系统、内核、中间件(如 Nginx、MySQL)产生。典型文件包括 /var/log/messages、/var/log/syslog、/var/log/secure。关注点:CPU/内存/磁盘状态、进程崩溃、网络连接异常。
  • 应用日志(Application Log):由业务代码产生,包含请求追踪、业务逻辑、异常堆栈。通常由日志框架(Log4j、Logback、Zap)输出。关注点:接口延迟、错误码分布、用户行为链路。
  • 安全日志(Security Log):由安全设备、认证系统、审计模块产生。包括登录记录、权限变更、防火墙阻断、入侵检测告警。关注点:异常登录、越权操作、数据泄露。
分类映射关系:在 Golden Signals 指标体系中,系统日志 主要贡献 饱和度(Saturation) 与 错误率(Errors);应用日志 贡献 延迟(Latency) 与 流量(Traffic);安全日志 则作为 错误率 的特殊子集,用于安全告警。
日志分类与 Golden Signals 映射关系 系统日志 OS / 中间件 / 内核 应用日志 业务代码 / 请求追踪 安全日志 认证 / 审计 / 入侵检测 饱和度 (Saturation) 磁盘 / CPU / 内存 错误率 (Errors) 进程崩溃 / 连接失败 延迟 (Latency) 接口响应时间 流量 (Traffic) 请求量 / 吞吐量 错误率 (Errors) 异常登录 / 越权 日志分类与 Golden Signals 映射要点 系统日志 → 饱和度 + 错误率 | 应用日志 → 延迟 + 流量 + 错误率 安全日志 → 错误率(安全告警子集)

2.3 日志格式标准(JSON、CEF、Syslog)

日志格式决定了采集端如何解析、传输端如何序列化、存储端如何索引。业界主流格式包括以下三种:

格式 协议/标准 可读性 结构化程度 适用场景
JSON RFC 7159 高 高(键值对嵌套) 应用日志、微服务、云原生
CEF ArcSight 标准 中 中(管道符分隔) 安全设备、SIEM 集成
Syslog RFC 5424 / RFC 3164 低 低(头部 + 自由文本) 网络设备、Linux 系统

2.3.1 JSON 格式

JSON 是当前日志工程的事实标准。其自描述、易扩展、与 Elasticsearch / Loki 等存储天然兼容。推荐字段结构如下:

{
  "timestamp": "2025-03-21T14:30:00.123Z",
  "level": "ERROR",
  "logger": "com.example.payment.PaymentService",
  "thread": "http-nio-8080-exec-3",
  "message": "Payment timeout for order 12345",
  "service": "payment-service",
  "trace_id": "abc123def456",
  "duration_ms": 5023,
  "error_code": "PAYMENT_TIMEOUT",
  "stack_trace": "com.example.payment.PaymentException: ..."
}

2.3.2 CEF 格式

CEF(Common Event Format)由 ArcSight 定义,广泛用于安全日志。字段以管道符 | 分隔,前 7 个字段固定:

CEF:0|Security|Firewall|1.0|100|Login Failed|5|src=10.0.0.1 dst=10.0.0.2 dpt=443 msg=Invalid password

字段含义:CEF 版本 | 设备厂商 | 设备产品 | 设备版本 | 事件 ID | 事件名称 | 严重级别(0-10)| 扩展字段(键值对)。

2.3.3 Syslog 格式

Syslog 是历史最悠久的日志协议。RFC 5424 格式包含 PRI(优先级)、HEADER(时间戳 + 主机名)、MSG(结构化数据 + 消息体):

<34>1 2025-03-21T14:30:00.123Z myhost.example.com myapp 1234 - [meta sequenceId="5678"] Connection established
格式选择建议:新系统优先使用 JSON 格式,便于字段映射与 Golden Signals 指标提取。CEF 仅在对接 SIEM 或安全设备时使用。Syslog 应尽量升级为 RFC 5424 结构化版本,避免使用 RFC 3164 自由文本格式,否则解析成本极高。
日志格式标准对比与选型决策 JSON 结构化 · 自描述 · 易扩展 CEF 管道符分隔 · 安全设备标准 Syslog 历史协议 · 头部+自由文本 选型决策:新系统 → JSON | 安全设备 → CEF | 遗留系统 → Syslog RFC 5424 所有格式最终统一转换为 JSON 进入日志 pipeline,便于字段映射

2.4 本章小结

  • 日志级别 是告警策略的输入,ERROR/FATAL 直接映射为 Golden Signals 错误率指标。
  • 日志分类 决定了指标归属:系统日志 → 饱和度,应用日志 → 延迟/流量/错误率,安全日志 → 错误率子集。
  • 日志格式 影响解析成本与字段映射效率,推荐统一使用 JSON 作为 pipeline 内部交换格式。