软考高级 · 系统架构设计师 · 论文单题页
可观测性与智能运维
真题出处:2024 上半年 · 论文试题四「论云上自动化运维及其应用」
会考什么
云上自动化运维是传统IT运维和DevOps的延伸,通过云原生架构实现运维的再进化。云上自动化运维可以有效帮助企业降低IT运维成本,提升系统的灵活度,以及系统的交付速度,增强系统的可靠性,构建更加安全、可信、开放的业务平台。
请围绕"云上自动化运维及其应用"论题,依次从以下三个方面进行论述。
权重来自 docs/真题分析.md:
| 口径 | 9 年出现 | 结论 |
|---|---|---|
| 运维类主题(含本题) | 1 次 | 仅 2024上,归入 D3 |
| 「可观测性」作为独立主题 | 0 次 | 结论四明列:可观测性 / 安全 / 云边都要降权 |
本题三问的答题骨架(论文必须逐条对上):
一句话讲清
机制讲解
可观测性是自动化运维的前提。自动化负责「做」,可观测性负责「知道做得对不对」。 没有后者,自动化只是在黑箱里加速,故障来了照样抓瞎。
三类信号,各回答一个问题
| 信号 | 存储载体(本项目) | 回答的问题 | 典型用途 |
|---|---|---|---|
| 指标 Metric | obs_metric | 系统整体是否正常 | 告警、扩缩容、看板 |
| 日志 Log | obs_log | 具体发生了什么 | 定位错误、复盘 |
| 链路 Trace | obs_trace | 请求卡在哪一段 | 慢调用定位、依赖拓扑 |
只有指标,是「知道坏了但不知道哪坏」;只有日志,是「信息全但拼不出全局」; 只有链路,是「看到慢但没有趋势」。三者缺一,MTTR 都会明显变长。
告警为什么会风暴
一次故障往往发生在底层(数据库慢查询、连接耗尽),却沿着调用链向上放大: 数据库一慢,依赖它的十几个服务一起超时,各自按固定阈值独立告警。运维看到的是十几条同时炸响, 而这十几条其实是同一个根因。这就是告警风暴——信号很多,信息很少。
告警风暴 vs 拓扑聚合
一次数据库慢查询沿调用链向下游放大。拖动滑块改变受影响服务数,切换聚合开关看告警如何收敛。
模拟器是怎么算的代码
模型只有三行,三行都对应真实机制:
// ① 规则阈值模式:每个受影响服务各推一条
推送告警 = 受影响服务数
// ② 拓扑聚合:按 obs_trace 的依赖收敛,只留根因
推送告警 = 1(根因)+ 折叠其余
// ③ 定位耗时 ∝ 需排查条数(每条平均 3 分钟,教学习性值)
定位耗时 = 需排查条数 × 3
注意:这是教学模型,不是实测。「每条 3 分钟」是演示用的教学习性值, 不是本项目测出来的数。页面末尾的运营指标(45 分钟 / 8 分钟)是固化取值,两者不要混。
落到我们平台
对应到 fazi 协会数字平台,可观测性落在 Go 后端(Gin 中间件), 数据落 PostgreSQL 18,看板由 Nuxt 4 SSR 渲染。
| 能力 | 本项目做法 | 取舍 |
|---|---|---|
| 埋点 | Gin 中间件统一拦截,业务代码零侵入 | 只写中间件,不做字节码增强 |
| 存储 | 指标 / 日志 / 链路三表进 PG,按时间分区 + 归档 | 不再引一套独立时序库 |
| 链路采样 | 法律智能咨询全采样,其余链路按比例采样 | 高价值链路保精度,低价值链路省体积 |
| 告警 | 规则阈值 + 拓扑聚合折叠,先规则后智能 | 数据量够之前不上机器学习 |
关键取舍只有一条:能用一个 PostgreSQL 扛下的,就不引第二个存储组件。 2 核 2GB 的云主机 + 一人全栈,多一个中间件就多一份要自己运维的负担。 指标、日志、链路都是「写入多、按时间查、定期删」,PG 的分区表 + 索引完全够用, 自然接上已有的备份和监控链路,不再新增运维面。
观测重点放在两个模块:法律智能咨询(RAG 链路长、大模型时延高) 和培训报名(开抢瞬时并发高)。这两个模块出问题对用户感知最强,值得全采样。
完整论文
六段全文,标记 ESSAY:ABSTRACT / P1–P6 内为正文。
摘要
2025年3月,我作为河南省法律咨询协会唯一的全栈架构师,主导建设了协会数字平台。该项目面向协会500名常用会员及未来3000名潜在用户,涵盖信息发布、社交系统、电子存证、培训报名、法律智能咨询五大模块。我在项目中承担需求分析、架构设计、编码实现、部署运维的全部技术职责。
本文以该项目为例,讨论了云上自动化运维与可观测性在实际项目中的应用。文章首先介绍项目背景和云上自动化运维与可观测性的基本概念,然后详细阐述我们在架构设计、技术选型、问题解决等方面的具体实践,最后总结项目经验和不足。
通过云上自动化运维与可观测性的有效应用,平台于2026年6月上线,法律问答Recall@20达0.92,P95响应380毫秒,缓存命中率92%,可用性99.95%,MTTR从45分钟降至8分钟。实践表明,在协会资源支持下,一人全栈架构师借助云托管服务和AI辅助开发,可以交付生产级法律数字化平台。
一、项目背景
河南省法律咨询协会成立于2004年,现有理事119名、法学专家62名、律师团成员78名、讲师团成员69名,承担法制宣传、法律培训、法律咨询、调解仲裁等职能。协会原有官网仅能发布新闻,会员管理、法律咨询、电子存证依赖线下和微信群,数据分散、效率低下。协会服务对象中有大量基层群众和中小微企业,法律术语看不懂、流程搞不清、律师咨询门槛高,维权成本居高不下。
2025年3月,协会理事会决定建设数字平台,并给予充分资源支持。我作为协会唯一的全栈架构师,承担从需求分析、架构设计、编码实现到部署运维的全部技术职责。平台以"fazi协会数字平台"为中心,涵盖信息发布、社交系统、电子存证、培训报名、法律智能咨询五大模块。前端采用 Nuxt 4 SSR + Vue 3.5 + Tailwind 4,后端采用 Go 1.26 + Gin + pgx 手写 SQL,数据库 PostgreSQL 18,部署在云托管容器服务上。平台常用用户500人,未来半年潜在用户3000人,峰值QPS约800。
技术选型上,我基于"一人全栈、生产级标准"原则做了三个关键决策:一是采用云托管服务替代自建中间件,把运维精力留给业务;二是以 PostgreSQL 18 + pgvector 作为统一数据平台,同时承载关系数据、向量检索、JSONB 文档和全文检索;三是引入 Claude Code / Vibe Coding 辅助开发,提升一人开发效率。协会在法律知识库、律师资源、经费预算上给予全力支持,使我能够专注于架构决策和业务实现。
二、理论概述
云上自动化运维是传统IT运维与DevOps在云原生架构下的延伸,其核心是把重复、易错的人工操作沉淀为可编程、可度量的自动化流程。衡量云上自动化运维水平的指标可分为两类:一类是DORA四项核心指标,即部署频率、变更前置时间、变更失败率和平均恢复时间,分别刻画交付速度与交付稳定性;另一类是资源与成本指标,包括系统可用性、资源利用率和成本效率,从可靠性与经济性两个维度补全评价体系。部署频率反映发布是否顺畅,变更前置时间反映从提交到上线的通路是否通畅,变更失败率反映发布质量,平均恢复时间反映故障处置能力。这些指标共同回答云上运维是否更快、更稳、更省。
自动化运维的前提是系统可观测。可观测性由指标、日志、链路追踪三类信号构成:指标回答系统整体是否正常,日志回答具体发生了什么,链路回答请求卡在哪一段。三类信号齐全,故障才能被快速发现并定位。在可观测性之上,以规则聚合、拓扑关联和异常检测替代人工盯屏,即智能运维的落点,其目标是降低告警噪声、定位根因、缩短平均恢复时间,让运维从被动救火转向主动发现。
三、实践一 · 可观测性埋点体系
平台上线初期沿用云托管控制台的基础监控,只能看到CPU、内存和请求量曲线。一次线上故障排查了近三小时,复盘才发现真正原因是一条未被捕获的慢SQL,而当时的监控只告诉我服务变慢,没有告诉我卡在哪一段。这让我下决心自建可观测性体系。
做法是在Go后端统一埋点。我在Gin的中间件链上挂了三个拦截器:指标拦截器记录每个路由的请求量、耗时分布与错误码,按分钟聚合后写入PostgreSQL的obs_metric表;日志拦截器把结构化访问日志与错误堆栈写入obs_log表;链路拦截器为每个请求生成trace_id并在跨模块调用时透传,把调用链写入obs_trace表。三张表按时间分区并定期归档以控制体积,常用查询字段建索引。埋点全部在中间件层完成,业务代码只需透传上下文,不侵入具体逻辑。
针对法律智能咨询这条高价值链路,我额外埋了检索命中率、大模型首字延迟和向量检索耗时等业务指标。系统指标正常不代表用户满意,只有业务指标才能反映真实体验。
四、实践二 · 自动化交付与自愈
自动化交付方面,我把发布流程脚本化。每次发布通过一套声明式部署脚本完成:拉取镜像、滚动替换容器实例、等待健康检查通过、再切换流量。云托管容器服务提供健康检查能力,我据此配置存活与就绪探针,实例连续探测失败即被自动摘除并重启,实现故障自愈。发布采用灰度策略,新版本先承接百分之五的流量,观察obs_metric中的错误率与P95延迟,正常后再逐步放量,异常则自动回滚到上一版本。
扩容方面,我依据obs_metric里的QPS曲线预设扩容阈值。培训报名模块在课程开抢时流量陡增,容器服务按CPU和QPS自动增加实例,峰值过后再缩容,既扛住峰值又控制成本。整套流程不再依赖人工登录服务器操作,发布、回滚、扩缩容都由脚本和平台能力完成,一人也能维护。这种把运维操作变成声明式脚本的做法,正是基础设施即代码思路在小团队中的落地,也让每次变更都可追溯、可回滚,出问题能快速比对差异。
五、实践三 · 告警治理与智能运维方向
早期告警基于固定阈值,错误率超过百分之一就推送。开抢时段的瞬时抖动触发大量误报,一次数据库慢查询连锁导致十几个下游模块同时告警,形成告警风暴,值班时被淹没,平均恢复时间长期在四十五分钟。
我先做规则层的治理。一是多维阈值,把告警条件从单一阈值改为按模块与时段动态设定,夜间低峰用更灵敏的阈值,大促高峰自动放宽,减少误报。二是拓扑聚合,obs_trace里已记录服务依赖关系,告警产生时按调用拓扑收敛,同一条链路上的上游故障只推送根因节点,下游派生告警自动折叠。三是关联视图,把同一时间窗内的指标异常、错误日志与慢链路聚合到一张事件单,按时间和依赖方向给出排查顺序,值班人员不必逐个服务翻日志。
这套规则化治理把告警量压了下来,绝大多数故障在分钟内被定位,平均恢复时间从四十五分钟降到八分钟。obs_metric的时序数据与obs_trace的依赖关系,也为后续引入基于机器学习的智能降噪与根因分析积累了训练数据。
六、总结展望
本项目让我深刻体会到,在资源受限、单人全栈的现实约束下,架构决策的核心不是"用什么最先进的技术",而是"在约束下做什么取舍"。通过云托管服务、PostgreSQL 统一数据平台和 AI 辅助开发,我把有限的精力集中在业务架构和核心模块上,交付了生产级平台。
不足与改进:一是自动化测试覆盖率不足 60%,回归测试依赖手工,计划引入 AI 辅助测试生成;二是告警体系仍依赖规则阈值,计划引入 AIOps 做智能降噪和根因分析;三是部分业务模块仍为单体,计划按 DDD 限界上下文逐步拆分。
未来,我将继续完善平台建设,把可观测性数据逐步转化为主动的智能运维能力,为协会会员和基层群众提供更稳定、更低门槛的法律服务。
逐段拆解
| 段 | 写什么 | 字数 | 对上题干 |
|---|---|---|---|
| 摘要 | 模板三段:身份与项目 → 本文结构 → 效果数据 | 322 | 总起 |
| 一、项目背景 | 协会现状、我的职责、技术栈、三个关键决策(定稿逐字) | 459 | 问 1 |
| 二、理论概述 | 云上自动化运维定义 + DORA 四指标 + 可用性/资源/成本 + 可观测性三支柱 | 417 | 问 2 |
| 三、实践一 | Go 中间件埋点,指标/日志/链路三表进 PG,业务指标补充 | 347 | 问 3 |
| 四、实践二 | 声明式部署、健康检查自愈、灰度发布、按指标自动扩缩容 | 335 | 问 3 |
| 五、实践三 | 多维阈值、拓扑聚合降噪、关联视图,MTTR 45→8 | 357 | 问 3 |
| 六、总结展望 | 取舍体会、三点不足、主题展望(定稿) | 250 | 收尾 |
| 正文合计 | 第一至六段 | 2165 | 硬标准 2000–2500 |
答题要点
加分
- ✅第一问对应本文第一段:把项目规模、我的角色(唯一全栈架构师)、承担的全部技术职责写清楚,题干问的是「你参与运维的项目 + 你的工作」。
- ✅第二问对应本文第二段:DORA 四项(部署频率 / 变更前置时间 / 变更失败率 / 平均恢复时间)必须点名,再补系统可用性、资源利用率、成本效率。这是 2024上 写作要点给出的标准清单。
- ✅第三问对应本文第三、四、五段:分三条主线答——可观测性埋点、自动化交付与自愈、告警治理,每条都落到具体实现(中间件、三张表、探针、拓扑聚合)。
- ✅把衡量指标与项目效果对齐:MTTR 45→8 分钟对应「平均恢复时间」,灰度发布对应「变更失败率」,自动扩缩容对应「资源利用率 / 成本效率」。
- ✅写出技术栈的真实约束(2 核 2GB、一人全栈、无 K8s),说明取舍依据,体现架构师判断。
扣分
- ❌只讲工具不讲机制:堆砌 Terraform / CI/CD / 容器编排名词,却说不清它们在本项目解决了哪个具体问题。
- ❌第二问只写「可用性」一项,漏掉 DORA 四项或成本效率——题干明确要求「主要衡量指标」,覆盖不全直接丢分。
- ❌三段实践写法雷同、都是「我引入了某工具」,没有层次;题干第三问要的是怎么做,要有动作、有顺序、有取舍。
- ❌写了本项目不存在的组件(如需要独立时序库、独立日志集群、容器编排平台),一问细节就露馅。
- ❌字数不达标:正文不足 2000 字扣字数分(占 5 分),或超出 2500 字写不完。
背诵清单
- 云上自动化运维的核心:把重复、易错的人工操作沉淀为可编程、可度量的自动化流程。
- 衡量指标 = DORA 四项(部署频率、变更前置时间、变更失败率、平均恢复时间)+ 可用性、资源利用率、成本效率。
- 可观测性三支柱:指标看整体、日志看细节、链路看卡点,缺一不可。
- 埋点落地:Gin 中间件 + 三张 PG 表(obs_metric / obs_log / obs_trace),分区归档控体积,业务零侵入。
- 告警风暴的本质:一个底层根因沿调用链放大为十几条告警;解法是按拓扑聚合,只留根因节点。
- 自愈三板斧:健康检查探针 + 自动摘除重启 + 灰度发布自动回滚。
- 效果:MTTR 从 45 分钟降到 8 分钟,可用性 99.95%(固化取值)。
- 取舍一条:能用一个 PostgreSQL 扛下的,就不引第二个存储组件。
数据来源
| 内容 | 来源 | 性质 |
|---|---|---|
| 题干原文、三问 | 论文真题/2024上论文.md 试题四 | 真题逐字 |
| DORA 四指标 + 可用性 / 资源 / 成本 | 2024上 写作要点 | 真题给定 |
| 可用性 99.95%、MTTR 45→8 分钟 | 论文公共部分定稿 | 固化取值(无法自证) |
| 检索命中率 / 首字延迟 / 向量检索耗时 | 业务指标名 | 只写机制不写数 |
| 模拟器「每条 3 分钟」 | 本页教学模型 | 教学习性值,非实测 |