在网易,每天有上百亿条日志,覆盖:
- 游戏服务、直播推流、内容推荐、支付系统等
- Java、Go、Node.js、Python 多语言服务
- K8s、VM、边缘服务等多部署场景
但即便如此,网易工程师仍能在1分钟内定位线上故障根因,靠的就是:
一套"日志即信号"的统一采集 + 智能分析 + 多维钻取平台。
本篇带你揭开网易背后这套日志系统的核心设计、真实代码样例和快速定位策略。
一、系统架构总览图(覆盖采集、处理、分析三层)

二、采集层:日志如何进入系统?
网易不同语言服务统一输出 JSON结构日志(规范字段 + traceID):
json
{
"timestamp": "2025-06-04T10:11:00Z",
"level": "ERROR",
"service": "payment-service",
"trace_id": "abc123",
"message": "支付失败,余额不足",
"uid": "user_33221",
"order_id": "ord_8891",
"env": "prod"
}
LogAgent(Filebeat)配置:
yaml
filebeat.inputs:
- type: log
paths:
- /var/logs/*.json
json.message_key: message
json.keys_under_root: true
output.kafka:
hosts: ["kafka1:9092"]
topic: "netease-logs"
✅ 所有服务统一输出、自动分发,无需开发关心底层采集逻辑。
三、处理层:Kafka + Logstash 动态预处理
网易通过 Logstash 动态 pipeline 处理日志格式、敏感字段脱敏、标准化字段转换:
ini
filter {
mutate {
rename => { "uid" => "user_id" }
convert => { "timestamp" => "string" }
}
if [level] == "ERROR" {
mutate { add_tag => ["alert_candidate"] }
}
}
🚨 同时,打上异常候选 tag,供后续智能报警系统筛选。
四、索引层:ES + Kibana + 二次封装
网易使用 Elasticsearch 建立多维索引:
字段 | 类型 | 作用 |
---|---|---|
trace_id |
keyword | 跟踪全链路日志 |
service |
keyword | 服务维度筛选 |
uid |
keyword | 用户维度故障排查 |
message |
fulltext | 模糊搜索关键词 |
env |
keyword | 环境隔离(测试/预发/生产) |
查询样例:查找过去5分钟内"支付失败"的日志
bash
GET /netease-logs/_search
{
"query": {
"bool": {
"must": [
{ "match": { "message": "支付失败" } },
{ "term": { "env": "prod" } }
],
"filter": {
"range": {
"timestamp": { "gte": "now-5m", "lte": "now" }
}
}
}
}
}
五、定位引擎:Trace × Log × Metric 联动分析
网易内部有一套叫 "FaultScanner" 的模块,用来做故障关联分析。
步骤如下:
- 📦 用户提交 trace_id
- 🔍 搜索对应日志(ES)
- 📊 查找对应时间窗口的 metrics(Prometheus)
- 🚦 比对是否命中告警规则
- 🧠 调用模型:基于历史数据训练的"故障模式匹配器"判断最可能异常点
ini
const logs = queryLogByTrace(traceId)
const metrics = queryMetricByTime(logs.timestamp)
const match = faultMatcher.match(logs, metrics)
return match.topSuspectedService
✅ 输出结果样例:
diff
故障链路识别结果:
- trace_id: abc123
- 疑似服务:payment-service(延迟波动 + 异常日志)
- 推荐操作:降级 fallback + 限流启动
六、真实案例:如何1分钟定位"支付失败"原因?
-
监控告警:"支付成功率 < 95%"
-
运维输入 trace_id:
abc123
-
平台自动串起相关日志:
user-service
: 正常order-service
: 正常payment-service
:"ERROR: 余额不足"
(15次连续失败)
-
快速定位 payment-service 版本问题
-
启动灰度回滚流程 + 审计原因归档
耗时:42 秒完成定位 + 30秒处理
七、网易日志平台的高级功能:
功能 | 描述 |
---|---|
日志聚类(Log Clustering) | 类似日志自动聚合,减少搜索量 |
关键路径分析 | trace_id + service 路径高亮显示瓶颈 |
智能摘要 | 自动摘要错误上下文(前后5条) |
用户行为回放 | 同一 uid 的全链路行为轨迹 |
彩蛋:
"不是不会出 bug,而是要在用户抱怨前,先发现它。"