日志基础回顾:日志级别、分类与格式标准
在构建日志工程体系之前,必须统一团队对日志基础概念的认知。日志级别、分类与格式标准是日志采集、解析、存储与告警的基石。本章将系统梳理这三项核心要素,为后续 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);安全日志 则作为 错误率 的特殊子集,用于安全告警。
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 自由文本格式,否则解析成本极高。
2.4 本章小结
- 日志级别 是告警策略的输入,ERROR/FATAL 直接映射为 Golden Signals 错误率指标。
- 日志分类 决定了指标归属:系统日志 → 饱和度,应用日志 → 延迟/流量/错误率,安全日志 → 错误率子集。
- 日志格式 影响解析成本与字段映射效率,推荐统一使用 JSON 作为 pipeline 内部交换格式。