软考高级 · 系统架构设计师 · 论文单题页

可观测性与智能运维

真题出处:2024 上半年 · 论文试题四「论云上自动化运维及其应用」

会考什么

2024上 论文 试题四 · 题干原文(逐字引)

云上自动化运维是传统IT运维和DevOps的延伸,通过云原生架构实现运维的再进化。云上自动化运维可以有效帮助企业降低IT运维成本,提升系统的灵活度,以及系统的交付速度,增强系统的可靠性,构建更加安全、可信、开放的业务平台。

请围绕"云上自动化运维及其应用"论题,依次从以下三个方面进行论述。

1.概要叙述你参与运维的软件项目以及你在其中所承担的主要工作。
2.请简要描述云上自动化运维(如CloudOps)的主要衡量指标。
3.具体阐述你所参与的项目是如何进行云上自动化运维的。

权重来自 docs/真题分析.md:

口径9 年出现结论
运维类主题(含本题)1 次仅 2024上,归入 D3
「可观测性」作为独立主题0 次结论四明列:可观测性 / 安全 / 云边都要降权
定位:低权重、高确定性。运维 + 可观测性在 9 年里合计只占 1 题,属于降权项, 不是押题重点。但它考点固定且可背——DORA 四项指标 + 可用性 + 资源利用率 + 成本效率, 这套衡量指标体系是 2024上 写作要点里给出的标准答案,换年重考也是这几项。 投入小、模板性强,值得作为「保底题」准备。

本题三问的答题骨架(论文必须逐条对上):

三问 → 三段 问 1 项目与我的工作 → 第一段 · 项目背景 问 2 主要衡量指标 → 第二段 · 理论概述(DORA + 可用性 + 资源 + 成本) 问 3 如何做自动化运维 → 第三 / 四 / 五段 · 可观测埋点 / 自动化交付自愈 / 告警治理

一句话讲清

TL;DR:云上自动化运维 = 把运维操作变成可编程的脚本 + 把系统变成可观测的—— 用 Go 中间件埋下指标 / 日志 / 链路三类信号写进 PostgreSQL, 故障才能秒级定位;再以拓扑聚合给告警降噪,把 MTTR 从 45 分钟压到 8 分钟。

机制讲解

可观测性是自动化运维的前提。自动化负责「做」,可观测性负责「知道做得对不对」。 没有后者,自动化只是在黑箱里加速,故障来了照样抓瞎。

三类信号,各回答一个问题

信号存储载体(本项目)回答的问题典型用途
指标 Metricobs_metric系统整体是否正常告警、扩缩容、看板
日志 Logobs_log具体发生了什么定位错误、复盘
链路 Traceobs_trace请求卡在哪一段慢调用定位、依赖拓扑

只有指标,是「知道坏了但不知道哪坏」;只有日志,是「信息全但拼不出全局」; 只有链路,是「看到慢但没有趋势」。三者缺一,MTTR 都会明显变长。

告警为什么会风暴

一次故障往往发生在底层(数据库慢查询、连接耗尽),却沿着调用链向上放大: 数据库一慢,依赖它的十几个服务一起超时,各自按固定阈值独立告警。运维看到的是十几条同时炸响, 而这十几条其实是同一个根因。这就是告警风暴——信号很多,信息很少。

告警风暴 vs 拓扑聚合

一次数据库慢查询沿调用链向下游放大。拖动滑块改变受影响服务数,切换聚合开关看告警如何收敛。

受影响服务
12
推送告警
12
需排查条数
12
定位耗时(分钟)
36
推送告警 12 条20 条
12
不这么做会怎样:规则阈值各自为政,一次底层故障 = 十几条告警同时推送。 值班的人从第一条开始查,查到第十二条才碰到底层根因——排查时间随告警条数线性增长。 这就是本项目 MTTR 高达 45 分钟的直接原因。
拓扑聚合怎么破:链路数据里本就记录了服务依赖关系。告警产生时先不推送, 按依赖图向上收敛,只有没有上游故障的节点才认定为根因,其余折叠为「派生告警」。 十几条 → 一条,排查从「遍历」变成「直达」。
模拟器是怎么算的代码

模型只有三行,三行都对应真实机制:

// ① 规则阈值模式:每个受影响服务各推一条
推送告警 = 受影响服务数

// ② 拓扑聚合:按 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→8357问 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 分钟」本页教学模型教学习性值,非实测
本主题没有实验场,因此正文中不出现任何未经实测的技术指标数值。 模拟器里的数字是按机制算出的教学演示,运营指标(可用性、MTTR)沿用论文公共部分的固化取值, 全页保持一致。写作时若被追问细节,一律用机制解释,不用编造的数字。