2. 服务目录概述

服务目录(Service Catalog)是SRE体系中连接业务价值与技术指标的核心元数据层。它并非简单的资产清单,而是一份以服务为中心、以SLO为纽带的结构化知识库。本节将定义服务目录、剖析其在SRE中的关键作用,并厘清它与传统CMDB的本质差异。

2.1 服务目录的定义

服务目录是对组织内所有面向用户或内部依赖的服务进行统一注册、分类和描述的正式记录。每条服务记录至少包含以下核心字段:

字段类别 示例字段 说明
标识信息 service_id, service_name, owner_team 全局唯一标识,明确责任团队
依赖关系 upstream_services, downstream_services 上下游调用拓扑,用于故障影响分析
SLO定义 latency_slo, error_budget, burn_rate 量化服务质量目标,直接关联告警阈值
观测端点 metrics_endpoint, logs_endpoint, traces_endpoint Prometheus、Loki、Tempo等数据源地址
生命周期 deploy_env, status, version 环境归属与当前运行状态
关键认知:服务目录是动态的、面向SLO的元数据层,它不存储配置细节,而是存储“如何衡量服务健康”的规则与关联。

2.2 服务目录在SRE中的作用

在SRE实践中,服务目录扮演着“单一可信源”的角色,将分散的监控、告警、变更和故障响应串联为有机整体。其核心作用可归纳为以下四点:

  1. SLO标准化与自动化:通过目录中预定义的SLO模板,自动生成Prometheus recording rules和告警规则,消除手动配置的差异与遗漏。
  2. 故障影响范围快速评估:当某个服务出现SLO燃烧时,目录中的依赖关系图可立即展示受影响的上下游服务,辅助确定告警优先级。
  3. 告警降噪与上下文增强:告警事件自动关联服务目录中的owner_team、runbook_url、dashboard_url,减少排障时的信息查找时间。
  4. 容量规划与成本优化:基于目录聚合的SLO达成率与资源使用率,识别低效服务,驱动资源调整决策。
服务目录在SRE中的核心作用 服务目录 SLO标准化 自动生成告警规则 故障影响评估 依赖拓扑分析 告警降噪 上下文增强 容量规划 成本优化 服务目录将SLO定义、依赖关系、观测端点统一管理, 成为SRE自动化与故障响应的元数据基石。

2.3 服务目录与CMDB的区别

CMDB(配置管理数据库)是ITIL时代的核心资产,而服务目录是SRE时代的产物。两者在目标、粒度、动态性上存在本质差异。下表从多个维度进行对比:

对比维度 服务目录 CMDB
核心目标 定义服务健康标准,驱动SLO与告警 记录配置项及其关系,支撑变更与合规
管理对象 逻辑服务(API、微服务、中间件) 物理/虚拟配置项(服务器、网络设备、软件实例)
数据粒度 服务级元数据(SLO、owner、依赖) 实例级属性(IP、CPU、内存、版本)
动态性 高——随SLO调整、服务拆分而频繁更新 中——随资产采购、退役而更新,周期较长
消费方 Prometheus、告警引擎、SRE仪表盘 变更管理、资产管理、审计系统
典型字段 service_id, slo_target, burn_rate, dashboard_url ci_name, serial_number, location, installed_software
实践建议:不要试图用CMDB替代服务目录,也不要将服务目录做成另一个CMDB。最佳实践是双向同步:服务目录从CMDB获取基础设施归属信息,CMDB从服务目录获取SLO状态标签,两者各司其职。
服务目录 vs CMDB:定位差异 服务目录 逻辑服务 + SLO + 依赖 面向:SRE / 监控 / 告警 动态:随SLO调整高频更新 输出:Prometheus规则、告警上下文 CMDB 配置项 + 属性 + 关系 面向:变更 / 资产 / 合规 动态:随资产生命周期低频更新 输出:配置基线、审计报告 双向同步 服务目录关注“服务健康”,CMDB关注“资产状态”,两者互补而非替代
常见误区:将CMDB中的服务名直接当作服务目录使用,会导致SLO字段缺失、依赖关系不准确、告警上下文不足。务必在CMDB之上建立独立的服务目录层,或为CMDB扩展SLO专属属性集。