一、日志分析基础:日志到底是什么?
各位同学好,我是老赵。今天咱们开始第一讲——日志分析基础。说实话,我做了十几年运维,跟日志打了半辈子交道。很多人觉得日志就是一堆没用的文字垃圾,其实不然。日志,说白了就是系统的「黑匣子」。飞机有黑匣子,咱们的系统也得有。
我记得刚入行那会儿,带我的师傅跟我说过一句话,我一直记到现在:「没有日志的系统,就像没有监控的银行——早晚要出事。」嗯,这话糙理不糙。
1.1 日志的定义
日志(Log),是系统、应用或设备在运行过程中产生的、带有时间戳的文本记录。它记录了「什么时间、在哪个组件、发生了什么事件」。你可以把它理解成系统的日记本——每天发生了什么,按时间顺序一条条记下来。
举个例子,你访问一个网站,后端服务器就会记录:
2025-01-15 14:23:45 [INFO] 用户 192.168.1.100 访问 /api/login 成功
这一行日志包含了时间、级别、来源IP、操作路径、结果。信息量其实很大。
1.2 日志的作用
日志到底有什么用?我总结为四个核心作用:
- 故障排查 —— 系统挂了,日志是第一现场。没有日志,你只能靠猜。
- 性能分析 —— 通过日志里的响应时间、QPS等数据,定位瓶颈。
- 安全审计 —— 谁在什么时间做了什么操作,日志一清二楚。
- 业务监控 —— 比如电商网站的订单成功率、支付回调延迟,都靠日志。
我曾经遇到过一个案例:某电商平台凌晨2点订单量暴跌,开发查了半天没头绪。我翻了Nginx访问日志,发现从1:50开始,所有请求都卡在SSL握手阶段——原来是CDN证书过期了。你看,一行日志就能救命。
1.3 日志的级别
日志级别,是给每条日志贴的「严重程度标签」。不同系统可能略有差异,但业界通用的标准是这五个级别:
| 级别 | 含义 | 典型场景 | 我的建议 |
|---|---|---|---|
| DEBUG | 调试信息 | 开发阶段打印变量值、函数入口/出口 | 生产环境关掉,否则日志量爆炸 |
| INFO | 普通信息 | 用户登录、请求开始/结束、定时任务执行 | 保留,用于日常监控 |
| WARN | 警告 | 磁盘使用率超过80%、重试次数过多 | 重点关注,往往是故障前兆 |
| ERROR | 错误 | 数据库连接失败、接口返回500 | 必须立即处理,但不一定导致系统宕机 |
| FATAL | 致命错误 | 内存溢出、主进程崩溃、关键服务不可用 | 看到这个级别,基本要重启或回滚了 |
为什么会这样?很多人觉得「多打点日志总没错」。其实不然。日志级别选错了,要么信息太少查不到问题,要么信息太多把磁盘撑爆。你想想看,DEBUG级别的日志量通常是INFO的10倍以上。生产环境开DEBUG?那是自寻死路。
1.4 日志的格式标准
日志格式,说白了就是「每行日志长什么样」。没有标准格式的日志,就像没有目录的书——你翻到死也找不到想要的内容。
我个人习惯的日志格式包含以下要素:
- 时间戳 —— 精确到毫秒,带时区。比如
2025-01-15T14:23:45.123+08:00 - 日志级别 —— 大写字母,固定宽度。比如
[INFO]、[ERROR] - 线程/进程ID —— 方便追踪并发请求
- 类名/模块名 —— 知道是哪个组件打的日志
- 消息体 —— 具体的事件描述
- 上下文信息 —— 比如用户ID、请求ID、IP地址
一个标准的日志行大概长这样:
2025-01-15 14:23:45.678 [ERROR] [http-nio-8080-exec-3] [com.example.OrderService] - 订单创建失败 | userId=12345 | orderId=ORD20250115001 | reason=库存不足
嗯,这里要注意:日志格式一定要统一。同一个系统里,不能有的用竖线分隔,有的用逗号,有的用空格。否则你后面做日志采集、解析、分析的时候,会痛不欲生。
{"timestamp":"2025-01-15T14:23:45.678+08:00","level":"ERROR","thread":"http-nio-8080-exec-3","logger":"com.example.OrderService","message":"订单创建失败","context":{"userId":12345,"orderId":"ORD20250115001","reason":"库存不足"}}
1.5 日志体系结构总览
说了这么多,咱们用一张图把日志分析的基础知识串起来。这张图是我自己画的,涵盖了日志从产生到分析的全链路:
从这张图你能看到,日志分析不是孤立的技术活。它从日志产生的那一刻就开始了——你用什么级别、什么格式,直接决定了后面能不能分析好。我见过太多团队,前面随便打日志,后面花几倍精力去清洗、解析、补数据。何必呢?
1.6 本章小结
好了,第一讲的内容就这些。咱们回顾一下重点:
- 日志是系统的黑匣子,没有日志的排查就是盲人摸象
- 日志有五个级别:DEBUG、INFO、WARN、ERROR、FATAL,别混用
- 日志格式要统一,推荐JSON格式,方便机器解析
- 日志分析的全链路:产生 → 采集 → 存储 → 分析 → 输出