业务上云以后,服务器日志散落在各个节点,业务数据又分布在不同系统里,出了故障往往只能逐台登录排查。阿里云收集要解决的,就是把这些数据汇到一个可以统一查询和分析的地方。配置本身不复杂,真正花时间的是前期规划,以及从采集到入库这段路上的细节。

一、先想清楚收什么
很多团队一开始就想把所有数据都接进来,结果存储费用涨得很快,真正要用的数据反而找不到。比较稳妥的做法是先按用途分类:
- 运行日志:应用的错误日志、Nginx 访问日志,主要用于排障。
- 业务事件:下单、支付、退款这类关键动作,用于运营分析和对账。
- 监控指标:CPU、内存、接口耗时等数值,用于告警和容量规划。
三类数据的保留周期和查询习惯差别很大。运行日志通常留几天到几周就够了,业务事件可能要保存更久,指标更适合聚合后长期保留。边界定清楚,后面的配置会省很多事。
二、一个案例
某在线教育客户在大促期间反复遇到课程页面超时。最开始,运维同学只能逐台看 Nginx 访问日志,既慢,又没法对比不同时间段的变化。
后来他们换了思路。在每台 ECS 上安装日志采集组件,把 Nginx 访问日志和应用错误日志统一采集到阿里云日志服务。采集时保留了请求路径、响应耗时、状态码等字段,并在入库前做了简单解析。这样查询时就不用反复写正则,速度快了不少。
数据统一之后,团队做了三件事:
- 按接口路径和状态码做实时看板,哪个接口超时,一眼就能看出来。
- 给耗时设阈值告警,超过时直接通知值班人员。
- 对比大促前后的数据,发现问题出在某个第三方接口的超时重试上,数据库本身并没有问题。
这次排查用了半天。以前遇到类似情况,往往要花两三天。收集的价值不在于数据量有多大,而在于数据能不能很快拿来用。
三、落地的基本顺序
如果准备开始做,可以按下面的顺序推进:
- 梳理数据源:列出要采集的主机、容器和应用,并写清每一项的负责人。没有负责人的数据源,后面出了问题没人管。
- 统一字段格式:时间戳统一用 ISO 8601,请求 ID 放在同一个字段名下。字段名不统一,跨服务排查时就得一个个对照。
- 小范围试点:先接入一个核心服务,观察采集延迟、字段解析结果和查询速度,确认没问题再扩大范围。
- 设置保留策略:按数据类型分别配置存储周期,不要全部默认无限期保存。
- 定好告警的处理人:告警发出后,明确由谁接、多久内要响应。这一步如果没人定,告警再灵敏也只是一堆通知。
四、采集到入库,最容易漏的几步
前面这些步骤大多数团队都会做,但出问题往往卡在采集到入库的细节上。下面几点,建议上线前逐项确认。
时区没有统一
服务器、容器和应用的时区设置如果不一致,同一件事在不同来源里会显示成不同的时间。排查时看到的时间线对不上,很容易误判因果。建议在采集端就统一时区,而不是等到查询时再换算。
日志轮转导致数据丢失
日志按天或按大小切割后,采集组件如果没有跟上,切割前后的部分内容可能丢掉。上线前可以手动触发一次轮转,检查采集端是否还能完整拿到新文件。
多行日志被拆开
Java 异常堆栈通常占好几行。如果采集规则只按单行处理,一条异常会被拆成很多条记录,搜索时关键信息反而找不到。接入前先用一段真实的异常日志测试,看看解析结果是否完整。
采集权限不足
采集组件需要读取日志目录,如果运行账号没有相应权限,采集会悄无声息地失败。建议在试点阶段确认采集是否真的在持续进行,而不是只看配置有没有报错。
敏感信息被采进来
日志里有时会出现手机号、身份证号或令牌。最好在应用侧直接脱敏,或者在采集规则里过滤对应字段。这既是合规上的要求,也能减少泄露的风险。
日志量失控
日志量往往比预期增长得快。定期检查各数据源的写入量,把低价值的调试日志降级或关闭,通常能明显减少开支。
五、小结
阿里云收集的难点在前期规划和后期运营。先想清楚数据用途,统一字段格式,小范围试点,再把保留策略和告警处理人定下来,基本就能形成一套能长期跑下去的体系。团队规模不大也没关系,从一个核心服务开始,一步步扩展,比一次性全部接入要稳得多。