参考
Mopheus IT 资产本体元模型(TBox)严格技术契约,涵盖 17 种标准概念的属性模式约束、7 大规范拓扑公理矩阵与声明式清单格式。
Mopheus IT 资产系统基于严格的本体元模型(TBox)构建。所有导入图谱的实体(ABox)必须通过对应的 JSONSchema 技术属性校验,所有有向关系边(asset_relations)必须满足拓扑公理白名单。
本参考文档面向 SRE 工程师、后端开发者与 AI 智能体技能作者,提供系统内置概念模式与公理约束的权威技术契约。
元模型架构契约 (TBox Contract)
在 Mopheus 知识图谱中,每一项资产实体均属于且仅属于一个概念元模型 (Concept)。系统在写入资产与拓扑边时执行以下强制校验:
- 强类型技术属性约束 (
attributes):- 每个 Concept 均绑定专属的
attributes_schema(JSONSchema 规范)。 - 禁止未定义字段:默认启用
additionalProperties: false,非法或拼写错误的属性将被直接拒绝。 - 必填属性校验:如
Host的management_ip、Database的engine与db_mode均为强必填项。 - 严格枚举限制:节点角色、数据库模式与中间件类型必须精确匹配预设枚举。
- 每个 Concept 均绑定专属的
- 拓扑关系公理验证 (
allowed_relations):- 实体间的有向边不仅校验 7 大规范谓词,还强校验源端概念与目标端概念的搭配合法性。例如:
Service允许runs_on到Host或Container,但禁止直接runs_on到Database。
- 实体间的有向边不仅校验 7 大规范谓词,还强校验源端概念与目标端概念的搭配合法性。例如:
- 因果与 DAG 环路检测:
- 针对
contains与depends_on等层级与因果调用关系,系统在执行mop asset apply时自动执行递归环路检测,阻止拓扑死循环。
- 针对
17 大核心本体概念规范速查
企业 IT 基础设施划分为 7 大核心领域,共计 17 类标准概念元模型:
| 领域分类 | 概念 (Concept) | 核心定位与描述 | 必填技术属性 (required) | 可选技术属性与枚举限制 |
|---|---|---|---|---|
| 业务层 | Application | 顶层企业业务系统 (如电商核心、计费系统) | (无必填属性) | additionalProperties: false |
Service | 可独立部署的微服务或业务组件 | (无必填属性) | codebase_repo (Git 仓库地址) | |
| 平台层 | Cluster | 高可用管控平面与共识集群 | cluster_type | cluster_type: [oracle_crs, k8s_control_plane, pacemaker, patroni_etcd, keepalived_vrrp]api_endpoint, credential_ref |
Container | 单个容器实例或 K8s Pod | (无必填属性) | additionalProperties: false | |
| 计算层 | Host | 物理裸金属服务器、虚拟机或云 ECS | management_ip | ips (IP 数组)role: [worker, control_plane, gateway, standalone]zone, rack, credential_ref |
| 数据库 | Database | 逻辑数据库集群或有状态数据服务 | engine, db_mode | engine: 字符串 (如 postgresql, mysql, oracle, tidb, redis, elasticsearch, mogdb, yashandb, oceanbase)db_mode: [single, cluster, distributed, primary_standby, rac]version, credential_ref |
DatabaseInstance | 单个数据库或缓存进程实例 | port | iprole: [primary, standby, read_replica, witness]instance_name, credential_ref (如 swissql://<profile-id>[?server=svc:<service-id>] 或 SSH 凭据) | |
DatabaseShard | 分布式数据库逻辑分区或分片组 | (无必填属性) | additionalProperties: false | |
DatabaseComponent | 分布式 DB 专用调度/协调/代理节点 | component_role, port | component_role: [proxy, coordinator, storage_node, metadata_pd, es_master, es_data]ip | |
| 中间件 | MessageQueue | 消息代理集群或流式消息服务 | mq_type | mq_type: [kafka, rocketmq, rabbitmq, emqx, pulsar]endpoints (地址数组), version |
| 网络层 | VirtualIP | 高可用浮动虚 IP 或 Oracle SCAN VIP | ip, role | role: [vip, scan, floating] |
LoadBalancer | 软硬件负载均衡器或 API 网关 | lb_type | lb_type: [nginx, haproxy, f5, cloud_slb, envoy, apisix, kong, k8s_ingress]ip, ports (端口数组) | |
DNSRecord | 域名系统解析记录 | domain, record_type | record_type: [A, CNAME, AAAA, PTR] | |
NetworkDevice | 物理或虚拟网络设备 (交换机/路由器/防火墙) | device_type, mgmt_ip | device_type: [switch_core, switch_tor, router, firewall, gateway]credential_ref | |
IPAddress | 物理网络接口 IP、带外管理或心跳 IP | ip | subnet | |
| 存储层 | StoragePool | 分布式或集中式存储池 / 磁盘组 | storage_type | storage_type: [ceph, nfs, san, asm_diskgroup, local_lvm] |
StorageVolume | 逻辑卷、LUN 或持久化卷 (PV) | volume_type | volume_type: [ssd, hdd, nvme, nfs_mount] |
7 大拓扑谓词与关系公理合法性矩阵
拓扑图谱中的所有有向关系边(Subject $\to$ Predicate $\to$ Object)采用 7 种不可变规范谓词,且必须严格遵循下述拓扑公理(allowed_relations):
规范谓词 (Predicate) | 语义方向 (Subject $\to$ Object) | 合法源端概念 (Subject) | 允许的目标端概念 (Allowed Object Targets) |
|---|---|---|---|
contains | 整体 $\to$ 局部 (静态架构组成) | Application | Service, Database, MessageQueue, VirtualIP, LoadBalancer, DNSRecord |
Service | Container | ||
Cluster | Host, StoragePool | ||
Host | IPAddress, StorageVolume | ||
Database | DatabaseShard, DatabaseInstance, DatabaseComponent | ||
DatabaseShard | DatabaseInstance | ||
NetworkDevice | IPAddress | ||
StoragePool | StorageVolume | ||
runs_on | 负载 $\to$ 宿主 (物理/逻辑承载) | Service | Host, Container, Cluster |
Container | Host, Cluster | ||
DatabaseInstance | Host, Container | ||
DatabaseComponent | Host, Container | ||
MessageQueue | Host, Container | ||
VirtualIP | Host, NetworkDevice | ||
LoadBalancer | Host, Container, NetworkDevice | ||
IPAddress | Host, NetworkDevice | ||
StorageVolume | Host | ||
routes_to | 源端 $\to$ 目标 (流量与路由转发) | DNSRecord | LoadBalancer, VirtualIP, IPAddress, Host |
LoadBalancer | Service, DatabaseInstance, VirtualIP, Host | ||
VirtualIP | DatabaseInstance, DatabaseComponent, Service, Host, LoadBalancer | ||
DatabaseComponent | DatabaseInstance, DatabaseComponent | ||
depends_on | 调用方 $\to$ 依赖方 (运行时业务/因果调用) | Application | Application, Service |
Service | Service, Database, MessageQueue, VirtualIP, LoadBalancer | ||
Container | StorageVolume | ||
Host | NetworkDevice, StoragePool | ||
Database | Cluster, StoragePool | ||
DatabaseInstance | StorageVolume | ||
MessageQueue | Cluster, StoragePool, StorageVolume | ||
replicates_to | 主数据 $\to$ 副本 (有状态数据复制) | DatabaseInstance | DatabaseInstance |
clustered_with | 对等方 $\leftrightarrow$ 对等方 (同级高可用对等) | Host | Host |
DatabaseInstance | DatabaseInstance | ||
DatabaseComponent | DatabaseComponent | ||
NetworkDevice | NetworkDevice | ||
manages | 控制面 $\to$ 目标 (自动化管控与治理) | Cluster | Database, VirtualIP, Service |
声明式清单模式规范 (AssetManifest YAML)
Mopheus 通过声明式 YAML 清单执行批量导入、版本控制与状态同步。标准模式定义如下:
version: v1 # 固定版本标识,必须为 v1
kind: AssetManifest # 固定对象类型,必须为 AssetManifest
metadata:
workspace: ecommerce-prod # 目标工作区 Slug
environment: prod # 默认环境:prod | staging | test | dev
assets:
- id: string # [必填] 资产全局唯一标识,推荐使用概念前缀 (如 svc:order-gw)
concept: string # [必填] 17 种标准本体概念之一
name: string # [必填] 人类可读的标准名称
aliases: # [选填] 别名列表,供模糊消解匹配
- string
status: active # [必填] 生命周期状态:active | draining | offline | unhealthy
environment: prod # [必填] 部署环境:prod | staging | test | dev
attributes: # [选填] 技术属性,受 Concept attributes_schema 严格校验
key: value
labels: # [选填] 治理标签,自由键值对
owner_team: string # 责任团队 (如 order-dev, billing-dba)
tier: string # 保障等级 (P0 | P1 | P2 | P3)
oncall: string # 值班责任人
relations:
- subject: string # [必填] 源端资产 ID
predicate: string # [必填] 7 大规范谓词之一
object: string # [必填] 目标端资产 ID
attributes: # [选填] 关系边附加属性
port: 8080资产 ID 字符集
资产 ID 必须匹配 ^[a-zA-Z0-9][a-zA-Z0-9_.:-]*$:首字符必须为字母或数字,其后仅允许字母、数字、冒号 :、下划线 _、中划线 - 和点 .。斜杠 /、空格、?、#、% 以及非 ASCII 字符会在所有入口(REST API、Manifest YAML、CLI)被拒绝并返回 HTTP 400。请使用冒号代替斜杠,例如 svc:order-gw 而非 svc/order-gw;CLI 会在本地拦截含斜杠的 ID 并提示冒号形式。冒号形式的 ID 是合法的 URL 路径段,无需转义。
通过资产使用 Redis CLI
mopheus tool redis-cli <asset-id-or-name> [--user <username>] -- <redis-cli 参数...> 会在当前工作区解析资产,通过加密凭据 API 读取密码凭据,并调用本机的 redis-cli。资产应为 attributes.engine: redis 的 Database(或概念名为 Redis),选中的密码凭据需要配置连接主机和端口。只有一个密码凭据时可省略 --user;存在多个时需用 --user 指定凭据用户名。连接选项和密码由资产提供,因此不要在 -- 后传入主机、端口或认证选项。
示例:mopheus tool redis-cli cache-prod -- PING。本机 redis-cli 需为 6.0 或更高,以便通过 REDISCLI_AUTH 传递密码而不暴露在进程参数中。Redis 服务端 5.x 使用 default 账号;命名 ACL 用户要求服务端 Redis 6.0 或更高。客户端参数请参考 redis-cli --help。
通过资产使用 MongoDB Shell
mopheus tool mongosh <asset-id-or-name> [--user <username>] -- <mongosh 参数...> 会解析 MongoDB 资产,并从加密凭据 API 读取连接信息和密码,再启动本机 mongosh。资产应设置 attributes.engine: mongodb(也支持 mongo),并配置密码凭据。只有一个密码凭据时可省略 --user;存在多个时用 --user <username> 选择账号。默认认证数据库为 admin。
先在受限权限凭据文件中填写 username: <username> 和 secret.password: <password>,将文件权限设为 0600,再使用 mopheus asset credential add <asset-id> --file <credentials.yaml> 保存凭据。连接 URI 通过子进程环境传递,不会出现在进程参数中。传给 -- 后的参数不能覆盖 host、port、username、password、认证数据库或连接 URI。客户端参数请参考 mongosh --help。
示例:mopheus tool mongosh mongo-prod --user <username> -- --eval 'db.adminCommand({ping: 1})'。
概念探查与 CLI 指令
技术人员与智能体可通过 CLI 在终端实时探查元模型定义:
# 1. 列出当前工作区中注册的所有本体概念及其分类
mop asset concept list
# 2. 获取指定概念的完整属性 Schema 与允许的拓扑公理规则 (JSON 格式)
mop asset concept get Host
mop asset concept get Database
# 3. 校验并应用声明式清单
mop asset apply -f production-topology.yaml
# 4. 导出当前工作区的资产与拓扑清单 (全量 YAML)
mop asset export > backup-topology.yaml